From af73b2964f1e1a27fc94e66e2ec3f7ea0aff1a41 Mon Sep 17 00:00:00 2001 From: Alexey Gurin <38838291+ElysiumWhale@users.noreply.github.com> Date: Thu, 28 Jul 2022 14:25:32 +0400 Subject: [PATCH] feat: Add url passing to response validation methods --- Sources/Extensions/Alamofire/DataRequest+Extensions.swift | 7 ++++--- .../Extensions/Alamofire/SessionManager+Extensions.swift | 6 ++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Sources/Extensions/Alamofire/DataRequest+Extensions.swift b/Sources/Extensions/Alamofire/DataRequest+Extensions.swift index 2cefbc8b..b0154c8d 100644 --- a/Sources/Extensions/Alamofire/DataRequest+Extensions.swift +++ b/Sources/Extensions/Alamofire/DataRequest+Extensions.swift @@ -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) -> Observable { + func validate(statusCodes: Set, url: String? = nil) -> Observable { 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 { + func catchAsRequestError(with request: DataRequest? = nil, + url: String? = nil) -> Observable { self.catch { error in let resultError: RequestError let response = request?.data diff --git a/Sources/Extensions/Alamofire/SessionManager+Extensions.swift b/Sources/Extensions/Alamofire/SessionManager+Extensions.swift index 77075a92..6b19c854 100644 --- a/Sources/Extensions/Alamofire/SessionManager+Extensions.swift +++ b/Sources/Extensions/Alamofire/SessionManager+Extensions.swift @@ -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) }