Skip to content

Instantly share code, notes, and snippets.

@ARamy23
Last active June 13, 2018 21:54
Show Gist options
  • Save ARamy23/4a6ca9ac0a58d5f51d16050247089bae to your computer and use it in GitHub Desktop.
Save ARamy23/4a6ca9ac0a58d5f51d16050247089bae to your computer and use it in GitHub Desktop.
protocol HandleAlamoResponse {
/// Handles request response, never called anywhere but APIRequestHandler
///
/// - Parameters:
/// - response: response from network request, for now alamofire Data response
/// - completion: completing processing the json response, and delivering it in the completion handler
func handleResponse<T: CodableInit>(_ response: DataResponse<Data>, completion: CallResponse<T>)
}
extension HandleAlamoResponse {
func handleResponse<T: CodableInit>(_ response: DataResponse<Data>, completion: CallResponse<T>) {
switch response.result {
case .failure(let error):
completion?(ServerResponse<T>.failure(error as? LocalizedError))
case .success(let retrievedData):
do {
let json = try T(data: retrievedData)
completion?(ServerResponse<T>.success(json))
}catch {
completion?(ServerResponse<T>.failure(error as? LocalizedError))
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment