feat: Update RequestError cases and url passing to them
This commit is contained in:
parent
af73b2964f
commit
db19e24bc4
|
|
@ -31,8 +31,8 @@ import Alamofire
|
|||
/// - mapping: Errors that occurs during mapping json into model.
|
||||
public enum RequestError: Error {
|
||||
|
||||
case noConnection
|
||||
case network(error: Error, response: Data?)
|
||||
case invalidResponse(error: AFError, response: Data?)
|
||||
case mapping(error: Error, response: Data)
|
||||
case noConnection(url: String?)
|
||||
case network(error: Error, response: Data?, url: String?)
|
||||
case invalidResponse(error: AFError, response: Data?, url: String?)
|
||||
case mapping(error: Error, response: Data, url: String?)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,7 +93,9 @@ private extension ObservableType where Element == ServerResponse {
|
|||
do {
|
||||
return try transform($0)
|
||||
} catch {
|
||||
throw RequestError.mapping(error: error, response: $0.1)
|
||||
throw RequestError.mapping(error: error,
|
||||
response: $0.1,
|
||||
url: $0.0.url?.absoluteString)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -103,10 +105,14 @@ private extension ObservableType where Element == ServerResponse {
|
|||
do {
|
||||
return try transform((response, result))
|
||||
.catch {
|
||||
throw RequestError.mapping(error: $0, response: result)
|
||||
throw RequestError.mapping(error: $0,
|
||||
response: result,
|
||||
url: response.url?.absoluteString)
|
||||
}
|
||||
} catch {
|
||||
throw RequestError.mapping(error: error, response: result)
|
||||
throw RequestError.mapping(error: error,
|
||||
response: result,
|
||||
url: response.url?.absoluteString)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -127,10 +133,10 @@ private extension ObservableType {
|
|||
case let urlError as URLError:
|
||||
switch urlError.code {
|
||||
case .notConnectedToInternet:
|
||||
resultError = .noConnection
|
||||
resultError = .noConnection(url: url)
|
||||
|
||||
default:
|
||||
resultError = .network(error: urlError, response: response)
|
||||
resultError = .network(error: urlError, response: response, url: url)
|
||||
}
|
||||
|
||||
case let afError as AFError:
|
||||
|
|
@ -138,21 +144,21 @@ private extension ObservableType {
|
|||
case let .sessionTaskFailed(error):
|
||||
switch error {
|
||||
case let urlError as URLError where urlError.code == .notConnectedToInternet:
|
||||
resultError = .noConnection
|
||||
resultError = .noConnection(url: url)
|
||||
|
||||
default:
|
||||
resultError = .network(error: error, response: response)
|
||||
resultError = .network(error: error, response: response, url: url)
|
||||
}
|
||||
|
||||
case .responseSerializationFailed, .responseValidationFailed:
|
||||
resultError = .invalidResponse(error: afError, response: response)
|
||||
resultError = .invalidResponse(error: afError, response: response, url: url)
|
||||
|
||||
default:
|
||||
resultError = .network(error: afError, response: response)
|
||||
resultError = .network(error: afError, response: response, url: url)
|
||||
}
|
||||
|
||||
default:
|
||||
resultError = .network(error: error, response: response)
|
||||
resultError = .network(error: error, response: response, url: url)
|
||||
}
|
||||
|
||||
throw resultError
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public extension Error {
|
|||
/// - Returns: optional target object
|
||||
/// - Throws: an error during decoding
|
||||
func handleMappingError<T: Decodable>(with decoder: JSONDecoder = JSONDecoder()) throws -> T? {
|
||||
guard let self = requestError, case .mapping(_, let response) = self else {
|
||||
guard let self = requestError, case .mapping(_, let response, _) = self else {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue