From b26932fbfe3c78f854a5cd4e19812f63b6a53def Mon Sep 17 00:00:00 2001 From: Ivan Smolin Date: Fri, 27 Oct 2017 19:00:41 +0300 Subject: [PATCH] add invalid response error case --- Sources/Enums/RequestError.swift | 3 +++ .../Alamofire/AlamofireRequest+Extensions.swift | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) 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)