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
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) {
......
......@@ -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())
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment