Added response to RequestError

This commit is contained in:
Ivan Babkin 2018-10-26 14:07:36 +03:00
parent 22ce7654db
commit ad8fe894bf
2 changed files with 8 additions and 7 deletions

View File

@ -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)
}

View File

@ -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)
}
}
}