Skip to content

Instantly share code, notes, and snippets.

@harshvishu
Last active April 26, 2018 07:43
Show Gist options
  • Save harshvishu/25a93ac6b7116140096f53bced531301 to your computer and use it in GitHub Desktop.
Save harshvishu/25a93ac6b7116140096f53bced531301 to your computer and use it in GitHub Desktop.
Alamofire ResponseSerializer for Decodable
extension DataRequest {
private func decodableResponseSerializer<T: Decodable>() -> DataResponseSerializer<T> {
return DataResponseSerializer { _, response, data, error in
guard error == nil else { return .failure(error!) }
guard let data = data else {
return .failure(AFError.responseSerializationFailed(reason: .inputDataNil))
}
return Result { try JSONDecoder().decode(T.self, from: data) }
}
}
@discardableResult
func responseDecodable<T: Decodable>(queue: DispatchQueue? = nil, completionHandler: @escaping (DataResponse<T>) -> Void) -> Self {
return response(queue: queue, responseSerializer: decodableResponseSerializer(), completionHandler: completionHandler)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment