From ad8fe894bf606dcde8dfe2b7a475bf056c0c6b9f Mon Sep 17 00:00:00 2001 From: Ivan Babkin Date: Fri, 26 Oct 2018 14:07:36 +0300 Subject: [PATCH] Added response to RequestError --- Sources/Enums/RequestError.swift | 6 +++--- .../Extensions/Alamofire/DataRequest+Extensions.swift | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Sources/Enums/RequestError.swift b/Sources/Enums/RequestError.swift index 1b1c7259..e5f43669 100644 --- a/Sources/Enums/RequestError.swift +++ b/Sources/Enums/RequestError.swift @@ -32,8 +32,8 @@ import Alamofire public enum RequestError: Error { case noConnection - case network(error: Error) - case invalidResponse(error: AFError) - case mapping(error: Error, response: Any) + case network(error: Error, response: Data) + case invalidResponse(error: AFError, response: Data) + case mapping(error: Error, response: Data) } diff --git a/Sources/Extensions/Alamofire/DataRequest+Extensions.swift b/Sources/Extensions/Alamofire/DataRequest+Extensions.swift index a7273468..dfae48e3 100644 --- a/Sources/Extensions/Alamofire/DataRequest+Extensions.swift +++ b/Sources/Extensions/Alamofire/DataRequest+Extensions.swift @@ -61,23 +61,24 @@ public extension Reactive where Base: DataRequest { return responseData() .observeOn(SerialDispatchQueueScheduler(queue: queue, internalSerialQueueName: queue.label)) .catchError { + let response = self.base.delegate.data ?? Data() switch $0 { case let urlError as URLError: switch urlError.code { case .notConnectedToInternet: throw RequestError.noConnection default: - throw RequestError.network(error: urlError) + throw RequestError.network(error: urlError, response: response) } case let afError as AFError: switch afError { case .responseSerializationFailed, .responseValidationFailed: - throw RequestError.invalidResponse(error: afError) + throw RequestError.invalidResponse(error: afError, response: response) default: - throw RequestError.network(error: afError) + throw RequestError.network(error: afError, response: response) } default: - throw RequestError.network(error: $0) + throw RequestError.network(error: $0, response: response) } } }