diff --git a/AppleLibs/Network/Requests/DataManager.swift b/AppleLibs/Network/Requests/DataManager.swift index a6ceff159c55c8e3e8587308cd039ebc4b256f3a..437a1b6a92989c1626ef90effe00f0e6049ad218 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 9d6f6d40d260006c3bac51fcbf23d6545ead0be2..1febd43323167a354bbe72d80ee93b0bff7fa177 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()) } } }