Skip to content
Snippets Groups Projects
Commit 5ba3738d authored by Tobias Ullerich's avatar Tobias Ullerich
Browse files

Add url to network errors

parent 6a1956bb
No related branches found
No related tags found
No related merge requests found
...@@ -104,11 +104,11 @@ public class DataManager: NSObject, URLSessionDelegate ...@@ -104,11 +104,11 @@ public class DataManager: NSObject, URLSessionDelegate
do { do {
(data, response) = try await urlSession.data(for: req) (data, response) = try await urlSession.data(for: req)
} catch { } catch {
throw self.determineResponseError(error) throw self.determineResponseError(url: r.url, error: error)
} }
guard let response: HTTPURLResponse = response as? HTTPURLResponse else { guard let response: HTTPURLResponse = response as? HTTPURLResponse else {
throw ResponseError.networkError(error: .unknown()) throw ResponseError.networkError(url: r.url, error: .unknown())
} }
do { do {
...@@ -117,7 +117,7 @@ public class DataManager: NSObject, URLSessionDelegate ...@@ -117,7 +117,7 @@ public class DataManager: NSObject, URLSessionDelegate
} else if let filter = self.responseFilters[response.statusCode] { } else if let filter = self.responseFilters[response.statusCode] {
return try await filter.handleResponse(request: request, data: data, dataMapper: dataMapper, sender: sender) return try await filter.handleResponse(request: request, data: data, dataMapper: dataMapper, sender: sender)
} else { } else {
throw ResponseError.getErrorForStatusCode(code: response.statusCode) throw ResponseError.getErrorForStatusCode(url: r.url, code: response.statusCode)
} }
} catch { } catch {
throw error throw error
...@@ -148,14 +148,14 @@ public class DataManager: NSObject, URLSessionDelegate ...@@ -148,14 +148,14 @@ public class DataManager: NSObject, URLSessionDelegate
return nil return nil
} }
fileprivate func determineResponseError(_ error: Error) -> ResponseError { fileprivate func determineResponseError(url: String, error: Error) -> ResponseError {
let error = error as NSError let error = error as NSError
if error.code == NSURLErrorNotConnectedToInternet { if error.code == NSURLErrorNotConnectedToInternet {
return ResponseError.networkError(error: .noInternet) return ResponseError.networkError(url: url, error: .noInternet)
} else if error.code == NSURLErrorTimedOut { } 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) { public func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
......
...@@ -32,27 +32,27 @@ public enum ResponseError: Error ...@@ -32,27 +32,27 @@ public enum ResponseError: Error
} }
case requestError case requestError
case authError(error: AuthError) case authError(url: String, error: AuthError)
case httpError(error: HttpError) case httpError(url: String, error: HttpError)
case networkError(error: NetworkError) case networkError(url: String, error: NetworkError)
case clientError(error: Error) case clientError(url: String, error: Error)
public static func getErrorForStatusCode(code: Int) -> ResponseError { public static func getErrorForStatusCode(url: String, code: Int) -> ResponseError {
switch code { switch code {
case 400: case 400:
return ResponseError.httpError(error: .badRequest) return ResponseError.httpError(url: url, error: .badRequest)
case 403: case 403:
return ResponseError.authError(error: .forbidden) return ResponseError.authError(url: url, error: .forbidden)
case 404: case 404:
return ResponseError.httpError(error: .notFound) return ResponseError.httpError(url: url, error: .notFound)
case 500: case 500:
return ResponseError.httpError(error: .internalError) return ResponseError.httpError(url: url, error: .internalError)
default: default:
return ResponseError.networkError(error: .unknown()) return ResponseError.networkError(url: url, error: .unknown())
} }
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment