Refactor getPosts() to use template request

This commit is contained in:
Angelo Stavrow 2021-05-11 15:53:07 -04:00
parent f886886ade
commit dc2f146ac5
No known key found for this signature in database
GPG Key ID: 1A49C7064E060EEE
1 changed files with 16 additions and 29 deletions

View File

@ -255,40 +255,27 @@ public class WFClient {
request.addValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") request.addValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.addValue(tokenToVerify, forHTTPHeaderField: "Authorization") request.addValue(tokenToVerify, forHTTPHeaderField: "Authorization")
let dataTask = session.dataTask(with: request) { (data, response, error) in get(with: request) { result in
// Something went wrong; return the error message. switch result {
if let error = error { case .success(let data):
completion(.failure(error)) do {
} // The response is formatted differently depending on if we're getting user posts or collection
// posts,so we need to determine what kind of structure we're decoding based on the
if let response = response as? HTTPURLResponse { // collectionAlias argument.
guard let data = data else { return } if collectionAlias != nil {
let post = try self.decoder.decode(NestedPostsJson.self, from: data)
// If we get a 200 OK, return the WFUser as success; if not, return a WFError as failure. completion(.success(post.data))
if response.statusCode == 200 { } else {
do { let post = try self.decoder.decode(ServerData<[WFPost]>.self, from: data)
// The response is formatted differently depending on if we're getting user posts or collection completion(.success(post.data))
// posts,so we need to determine what kind of structure we're decoding based on the
// collectionAlias argument.
if collectionAlias != nil {
let post = try self.decoder.decode(NestedPostsJson.self, from: data)
completion(.success(post.data))
} else {
let post = try self.decoder.decode(ServerData<[WFPost]>.self, from: data)
completion(.success(post.data))
}
} catch {
completion(.failure(error))
} }
} else { } catch {
// We didn't get a 200 OK, so return a WFError.
guard let error = self.translateWFError(fromServerResponse: data) else { return }
completion(.failure(error)) completion(.failure(error))
} }
case .failure(let error):
completion(.failure(error))
} }
} }
dataTask.resume()
} }
/// Moves a post to a collection. /// Moves a post to a collection.