From aecf90f9f8618df6e7b0c9704342928a914a59ba Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 28 Oct 2020 16:16:15 -0500 Subject: [PATCH] Don't chunk entries at the caller level because it is already done in the delegate --- .../Account/ReaderAPI/ReaderAPICaller.swift | 49 +++++++------------ 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/Account/Sources/Account/ReaderAPI/ReaderAPICaller.swift b/Account/Sources/Account/ReaderAPI/ReaderAPICaller.swift index 782f22e0a..a3e4fe06d 100644 --- a/Account/Sources/Account/ReaderAPI/ReaderAPICaller.swift +++ b/Account/Sources/Account/ReaderAPI/ReaderAPICaller.swift @@ -576,42 +576,27 @@ final class ReaderAPICaller: NSObject { request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") request.httpMethod = "POST" - let chunkedArticleIds = articleIDs.chunked(into: 200) - let group = DispatchGroup() - var groupEntries = [ReaderAPIEntry]() - var groupError: Error? = nil + // Get ids from above into hex representation of value + let idsToFetch = articleIDs.map({ (reference) -> String in + return "i=tag:google.com,2005:reader/item/\(reference)" + }).joined(separator:"&") - for articleIDChunk in chunkedArticleIds { - let itemFetchParameters = articleIDChunk.map({ articleID -> String in - return "i=tag:google.com,2005:reader/item/\(articleID)" - }).joined(separator:"&") - - let postData = "T=\(token)&output=json&\(itemFetchParameters)".data(using: String.Encoding.utf8) - - group.enter() - self.transport.send(request: request, method: HTTPMethod.post, data: postData!, resultType: ReaderAPIEntryWrapper.self, completion: { (result) in - switch result { - case .success(let (_, entryWrapper)): - guard let entryWrapper = entryWrapper else { - completion(.failure(ReaderAPIAccountDelegateError.invalidResponse)) - return - } - groupEntries.append(contentsOf: entryWrapper.entries) - group.leave() - case .failure(let error): - groupError = error - group.leave() + let postData = "T=\(token)&output=json&\(idsToFetch)".data(using: String.Encoding.utf8) + + self.transport.send(request: request, method: HTTPMethod.post, data: postData!, resultType: ReaderAPIEntryWrapper.self, completion: { (result) in + switch result { + case .success(let (_, entryWrapper)): + guard let entryWrapper = entryWrapper else { + completion(.failure(ReaderAPIAccountDelegateError.invalidResponse)) + return } - }) - } - - group.notify(queue: DispatchQueue.main) { - if let error = groupError { + + completion(.success((entryWrapper.entries))) + case .failure(let error): completion(.failure(error)) - } else { - completion(.success(groupEntries)) } - } + }) + case .failure(let error): completion(.failure(error))