diff --git a/Sources/Enums/RequestError.swift b/Sources/Enums/RequestError.swift index cdb37173..aa52a60d 100644 --- a/Sources/Enums/RequestError.swift +++ b/Sources/Enums/RequestError.swift @@ -20,10 +20,13 @@ // THE SOFTWARE. // +import Alamofire + public enum RequestError: Error { case noConnection // no connection to the server case network(error: Error) + case invalidResponse(error: AFError) case mapping(error: Error, response: Any) } diff --git a/Sources/Extensions/Alamofire/AlamofireRequest+Extensions.swift b/Sources/Extensions/Alamofire/AlamofireRequest+Extensions.swift index 75b4d42d..b084a96f 100644 --- a/Sources/Extensions/Alamofire/AlamofireRequest+Extensions.swift +++ b/Sources/Extensions/Alamofire/AlamofireRequest+Extensions.swift @@ -106,7 +106,14 @@ public extension Reactive where Base: DataRequest { case .notConnectedToInternet, .timedOut: throw RequestError.noConnection default: - throw RequestError.network(error: $0) + throw RequestError.network(error: urlError) + } + case let afError as AFError: + switch afError { + case .responseSerializationFailed, .responseValidationFailed: + throw RequestError.invalidResponse(error: afError) + default: + throw RequestError.network(error: afError) } default: throw RequestError.network(error: $0)