From 5ba3738d1109ca6c69b417725afb9db9b98c672e Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Tue, 14 Dec 2021 21:58:20 +0100 Subject: [PATCH] Add url to network errors --- AppleLibs/Network/Requests/DataManager.swift | 14 ++++++------- .../Network/Requests/ResponseError.swift | 20 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/AppleLibs/Network/Requests/DataManager.swift b/AppleLibs/Network/Requests/DataManager.swift index a6ceff1..437a1b6 100644 --- a/AppleLibs/Network/Requests/DataManager.swift +++ b/AppleLibs/Network/Requests/DataManager.swift @@ -104,11 +104,11 @@ public class DataManager: NSObject, URLSessionDelegate do { (data, response) = try await urlSession.data(for: req) } catch { - throw self.determineResponseError(error) + throw self.determineResponseError(url: r.url, error: error) } guard let response: HTTPURLResponse = response as? HTTPURLResponse else { - throw ResponseError.networkError(error: .unknown()) + throw ResponseError.networkError(url: r.url, error: .unknown()) } do { @@ -117,7 +117,7 @@ public class DataManager: NSObject, URLSessionDelegate } else if let filter = self.responseFilters[response.statusCode] { return try await filter.handleResponse(request: request, data: data, dataMapper: dataMapper, sender: sender) } else { - throw ResponseError.getErrorForStatusCode(code: response.statusCode) + throw ResponseError.getErrorForStatusCode(url: r.url, code: response.statusCode) } } catch { throw error @@ -148,14 +148,14 @@ public class DataManager: NSObject, URLSessionDelegate return nil } - fileprivate func determineResponseError(_ error: Error) -> ResponseError { + fileprivate func determineResponseError(url: String, error: Error) -> ResponseError { let error = error as NSError if error.code == NSURLErrorNotConnectedToInternet { - return ResponseError.networkError(error: .noInternet) + return ResponseError.networkError(url: url, error: .noInternet) } else if error.code == NSURLErrorTimedOut { - return ResponseError.networkError(error: .timeout) + return ResponseError.networkError(url: url, error: .timeout) } - return ResponseError.networkError(error: .unknown(error: error)) + return ResponseError.networkError(url: url, error: .unknown(error: error)) } public func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { diff --git a/AppleLibs/Network/Requests/ResponseError.swift b/AppleLibs/Network/Requests/ResponseError.swift index 9d6f6d4..1febd43 100644 --- a/AppleLibs/Network/Requests/ResponseError.swift +++ b/AppleLibs/Network/Requests/ResponseError.swift @@ -32,27 +32,27 @@ public enum ResponseError: Error } case requestError - case authError(error: AuthError) - case httpError(error: HttpError) - case networkError(error: NetworkError) - case clientError(error: Error) + case authError(url: String, error: AuthError) + case httpError(url: String, error: HttpError) + case networkError(url: String, error: NetworkError) + case clientError(url: String, error: Error) - public static func getErrorForStatusCode(code: Int) -> ResponseError { + public static func getErrorForStatusCode(url: String, code: Int) -> ResponseError { switch code { case 400: - return ResponseError.httpError(error: .badRequest) + return ResponseError.httpError(url: url, error: .badRequest) case 403: - return ResponseError.authError(error: .forbidden) + return ResponseError.authError(url: url, error: .forbidden) case 404: - return ResponseError.httpError(error: .notFound) + return ResponseError.httpError(url: url, error: .notFound) case 500: - return ResponseError.httpError(error: .internalError) + return ResponseError.httpError(url: url, error: .internalError) default: - return ResponseError.networkError(error: .unknown()) + return ResponseError.networkError(url: url, error: .unknown()) } } } -- GitLab