diff --git a/Frameworks/Account/Account.xcodeproj/project.pbxproj b/Frameworks/Account/Account.xcodeproj/project.pbxproj index 67dd8f4f4..1ffc4b449 100644 --- a/Frameworks/Account/Account.xcodeproj/project.pbxproj +++ b/Frameworks/Account/Account.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 3B826D6923859D9D00FC1ADB /* FeedWranglerAuthorizationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826D6823859D9D00FC1ADB /* FeedWranglerAuthorizationResult.swift */; }; 3BF610C723571CD4000EF978 /* FeedWranglerAPICaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BF610C423571CD4000EF978 /* FeedWranglerAPICaller.swift */; }; 3BF610C823571CD4000EF978 /* FeedWranglerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BF610C523571CD4000EF978 /* FeedWranglerConfig.swift */; }; 3BF610C923571CD4000EF978 /* FeedWranglerAccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BF610C623571CD4000EF978 /* FeedWranglerAccountDelegate.swift */; }; @@ -178,6 +179,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 3B826D6823859D9D00FC1ADB /* FeedWranglerAuthorizationResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedWranglerAuthorizationResult.swift; sourceTree = ""; }; 3BF610C423571CD4000EF978 /* FeedWranglerAPICaller.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerAPICaller.swift; sourceTree = ""; }; 3BF610C523571CD4000EF978 /* FeedWranglerConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerConfig.swift; sourceTree = ""; }; 3BF610C623571CD4000EF978 /* FeedWranglerAccountDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerAccountDelegate.swift; sourceTree = ""; }; @@ -349,6 +351,7 @@ 3BF6118F23577173000EF978 /* FeedWranglerGenericResult.swift */, 3BF611912357877E000EF978 /* FeedWranglerFeedItem.swift */, 3BF6119323578F55000EF978 /* FeedWranglerFeedItemsRequest.swift */, + 3B826D6823859D9D00FC1ADB /* FeedWranglerAuthorizationResult.swift */, ); path = FeedWrangler; sourceTree = ""; @@ -948,6 +951,7 @@ 9E1D155B2334423300F4944C /* FeedlyOrganiseParsedItemsByFeedOperation.swift in Sources */, 552032FE229D5D5A009559E0 /* ReaderAPIAccountDelegate.swift in Sources */, 3BF610C723571CD4000EF978 /* FeedWranglerAPICaller.swift in Sources */, + 3B826D6923859D9D00FC1ADB /* FeedWranglerAuthorizationResult.swift in Sources */, 5170743C232AEDB500A461A3 /* OPMLFile.swift in Sources */, 51BB7B84233531BC008E8144 /* AccountBehaviors.swift in Sources */, 9E1773D923458D590056A5A8 /* FeedlyResourceId.swift in Sources */, diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerAPICaller.swift b/Frameworks/Account/FeedWrangler/FeedWranglerAPICaller.swift index ac9bcffd5..e6fc1d934 100644 --- a/Frameworks/Account/FeedWrangler/FeedWranglerAPICaller.swift +++ b/Frameworks/Account/FeedWrangler/FeedWranglerAPICaller.swift @@ -33,31 +33,18 @@ final class FeedWranglerAPICaller: NSObject { let request = URLRequest(url: callURL, credentials: credentials) let username = self.credentials?.username ?? "" - transport.send(request: request) { result in + transport.send(request: request, resultType: FeedWranglerAuthorizationResult.self) { result in switch result { - case .success(let (_, data)): - guard let data = data else { + case .success(let (_, results)): + if let accessToken = results?.accessToken { + let authCredentials = Credentials(type: .feedWranglerToken, username: username, secret: accessToken) + completion(.success(authCredentials)) + } else { completion(.success(nil)) - return - } - - do { - if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String:Any] { - if let accessToken = json["access_token"] as? String { - let authCredentials = Credentials(type: .feedWranglerToken, username: username, secret: accessToken) - completion(.success(authCredentials)) - return - } - } - - completion(.success(nil)) - } catch let error { - completion(.failure(error)) } case .failure(let error): completion(.failure(error)) } - } } diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerAuthorizationResult.swift b/Frameworks/Account/FeedWrangler/FeedWranglerAuthorizationResult.swift new file mode 100644 index 000000000..5055b4a0b --- /dev/null +++ b/Frameworks/Account/FeedWrangler/FeedWranglerAuthorizationResult.swift @@ -0,0 +1,23 @@ +// +// FeedWranglerAuthorizationResult.swift +// Account +// +// Created by Jonathan Bennett on 2019-11-20. +// Copyright © 2019 Ranchero Software, LLC. All rights reserved. +// + +import Foundation + +struct FeedWranglerAuthorizationResult: Hashable, Codable { + + let accessToken: String? + let error: String? + let result: String + + + enum CodingKeys: String, CodingKey { + case accessToken = "access_token" + case error = "error" + case result = "result" + } +}