in Sources/UberAuth/Networking/NetworkProvider.swift [44:80]
func execute<R: NetworkRequest>(request: R, completion: @escaping (Result<R.Response, UberAuthError>) -> ()) {
guard let urlRequest = request.urlRequest(baseUrl: baseUrl) else {
completion(.failure(UberAuthError.invalidRequest("")))
return
}
let dataTask = session
.dataTask(
with: urlRequest,
completionHandler: { data, response, error in
if let error {
completion(.failure(.other(error)))
return
}
guard let data,
let response = response as? HTTPURLResponse else {
completion(.failure(UberAuthError.oAuth(.unsupportedResponseType)))
return
}
if let error = UberAuthError(response) {
completion(.failure(error))
return
}
do {
let decodedResponse = try self.decoder.decode(R.Response.self, from: data)
completion(.success(decodedResponse))
} catch {
completion(.failure(UberAuthError.serviceError))
}
}
)
dataTask.resume()
}