func execute()

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()
    }