NetNewsWire/Frameworks/Account/NewsBlur/Models/NewsBlurFeedChange.swift

50 lines
1.3 KiB
Swift

//
// NewsBlurFeedChange.swift
// Account
//
// Created by Anh Quang Do on 2020-03-14.
// Copyright (c) 2020 Ranchero Software, LLC. All rights reserved.
//
import Foundation
enum NewsBlurFeedChange {
case add(String, String?)
case rename(String, String)
case delete(String, String?)
case move(String, String?, String?)
}
extension NewsBlurFeedChange: NewsBlurDataConvertible {
var asData: Data? {
var postData = URLComponents()
postData.queryItems = {
switch self {
case .add(let url, let folder):
return [
URLQueryItem(name: "url", value: url),
folder != nil ? URLQueryItem(name: "folder", value: folder) : nil
].compactMap { $0 }
case .rename(let feedID, let newName):
return [
URLQueryItem(name: "feed_id", value: feedID),
URLQueryItem(name: "feed_title", value: newName),
]
case .delete(let feedID, let folder):
return [
URLQueryItem(name: "feed_id", value: feedID),
folder != nil ? URLQueryItem(name: "in_folder", value: folder) : nil,
].compactMap { $0 }
case .move(let feedID, let from, let to):
return [
URLQueryItem(name: "feed_id", value: feedID),
URLQueryItem(name: "in_folder", value: from ?? ""),
URLQueryItem(name: "to_folder", value: to ?? ""),
]
}
}()
return postData.percentEncodedQuery?.data(using: .utf8)
}
}