feat: Add url passing to response validation methods

This commit is contained in:
Alexey Gurin 2022-07-28 14:25:32 +04:00
parent 0803060787
commit af73b2964f
2 changed files with 8 additions and 5 deletions

View File

@ -80,9 +80,9 @@ public extension ObservableType where Element == DataRequest {
///
/// - Parameter statusCodes: set of status codes to validate
/// - Returns: Observable on self
func validate(statusCodes: Set<Int>) -> Observable<Element> {
func validate(statusCodes: Set<Int>, url: String? = nil) -> Observable<Element> {
map { $0.validate(statusCode: statusCodes) }
.catchAsRequestError()
.catchAsRequestError(url: url)
}
}
@ -114,7 +114,8 @@ private extension ObservableType where Element == ServerResponse {
private extension ObservableType {
func catchAsRequestError(with request: DataRequest? = nil) -> Observable<Element> {
func catchAsRequestError(with request: DataRequest? = nil,
url: String? = nil) -> Observable<Element> {
self.catch { error in
let resultError: RequestError
let response = request?.data

View File

@ -117,7 +117,8 @@ public extension Reactive where Base: SessionManager {
}
return requestObservable
.validate(statusCodes: self.base.acceptableStatusCodes.union(additionalValidStatusCodes))
.validate(statusCodes: self.base.acceptableStatusCodes.union(additionalValidStatusCodes),
url: url.absoluteString)
}
}
@ -191,7 +192,8 @@ public extension Reactive where Base: SessionManager {
return self.upload(data, urlRequest: urlRequest)
.map { $0 as DataRequest }
.validate(statusCodes: self.base.acceptableStatusCodes.union(additionalValidStatusCodes))
.validate(statusCodes: self.base.acceptableStatusCodes.union(additionalValidStatusCodes),
url: try? requestParameters.url.asURL().absoluteString)
.flatMap {
$0.rx.apiResponse(mappingQueue: self.base.mappingQueue, decoder: decoder)
}