Allow adding of feeds

This commit is contained in:
Jonathan Bennett 2019-10-24 11:48:12 -04:00
parent 77fc1bd8fe
commit 48e47ec40b
2 changed files with 50 additions and 1 deletions

View File

@ -12,6 +12,10 @@ import Foundation
import SyncDatabase
import RSWeb
enum FeedWranglerError : Error {
case general(message: String)
}
final class FeedWranglerAPICaller: NSObject {
private var transport: Transport!
@ -72,6 +76,32 @@ final class FeedWranglerAPICaller: NSObject {
}
}
func addSubscription(url: String, completion: @escaping (Result<Void, Error>) -> Void) {
guard let callURL = FeedWranglerConfig
.clientURL
.appendingPathComponent("subscriptions/add_feed")
.appendingQueryItem(URLQueryItem(name: "feed_url", value: url)) else {
completion(.failure(TransportError.noURL))
return
}
let request = URLRequest(url: callURL, credentials: credentials)
transport.send(request: request, resultType: FeedWranglerGenericResult.self) { result in
switch result {
case .success(let (_, results)):
if let error = results?.error {
completion(.failure(FeedWranglerError.general(message: error)))
} else {
completion(.success(()))
}
case .failure(let error):
completion(.failure(error))
}
}
}
func renameSubscription(feedID: String, newName: String, completion: @escaping (Result<Void, Error>) -> Void) {
let url = FeedWranglerConfig.clientURL

View File

@ -201,7 +201,26 @@ final class FeedWranglerAccountDelegate: AccountDelegate {
}
func createFeed(for account: Account, url: String, name: String?, container: Container, completion: @escaping (Result<Feed, Error>) -> Void) {
fatalError()
refreshProgress.addToNumberOfTasksAndRemaining(3)
self.refreshCredentials(for: account) {
self.refreshProgress.completeTask()
self.caller.addSubscription(url: url) { result in
self.refreshProgress.completeTask()
self.caller.addSubscription(url: url) { result in
self.refreshProgress.completeTask()
switch result {
case .success:
let feed = account.createFeed(with: name, url: url, feedID: url, homePageURL: url)
completion(.success(feed))
case .failure(let error):
completion(.failure(error))
}
}
}
}
}
func renameFeed(for account: Account, with feed: Feed, to name: String, completion: @escaping (Result<Void, Error>) -> Void) {