diff --git a/Sources/Classes/Services/NetworkService.swift b/Sources/Classes/Services/NetworkService.swift index 5b8f5beb..08879f45 100644 --- a/Sources/Classes/Services/NetworkService.swift +++ b/Sources/Classes/Services/NetworkService.swift @@ -60,7 +60,7 @@ open class NetworkService { /// - Returns: Observable of tuple containing (HTTPURLResponse, ObservableMappable) public func rxObservableRequest(with parameters: ApiRequestParameters, decoder: JSONDecoder = JSONDecoder()) - -> Observable<(response: HTTPURLResponse, model: T)> { + -> Observable> { return sessionManager.rx.responseObservableModel(requestParameters: parameters, decoder: decoder) @@ -73,7 +73,7 @@ open class NetworkService { /// - Parameter decoder: json decoder to decode response data /// - Returns: Observable of tuple containing (HTTPURLResponse, ImmutableMappable) public func rxRequest(with parameters: ApiRequestParameters, decoder: JSONDecoder = JSONDecoder()) - -> Observable<(response: HTTPURLResponse, model: T)> { + -> Observable> { return sessionManager.rx.responseModel(requestParameters: parameters, decoder: decoder) @@ -85,7 +85,7 @@ open class NetworkService { /// - Parameter parameters: api parameters to pass Alamofire /// - Returns: Observable of tuple containing (HTTPURLResponse, Data) public func rxDataRequest(with parameters: ApiRequestParameters) - -> Observable<(response: HTTPURLResponse, data: Data)> { + -> Observable { return sessionManager.rx.responseData(requestParameters: parameters) .counterTracking(for: self) diff --git a/Sources/Classes/Services/SessionManager.swift b/Sources/Classes/Services/SessionManager.swift index 47ce6307..d4d7bee8 100644 --- a/Sources/Classes/Services/SessionManager.swift +++ b/Sources/Classes/Services/SessionManager.swift @@ -25,6 +25,12 @@ import Alamofire /// Session Manager stored in NetworkService open class SessionManager: Alamofire.SessionManager { + /// Response with HTTP URL Response and target object + public typealias ModelResponse = (response: HTTPURLResponse, model: T) + + /// Response with HTTP URL Response and data + public typealias DataResponse = (response: HTTPURLResponse, data: Data) + /// Acceptable status codes for validation public let acceptableStatusCodes: Set diff --git a/Sources/Extensions/Alamofire/SessionManager+Extensions.swift b/Sources/Extensions/Alamofire/SessionManager+Extensions.swift index 8cae1352..161230ba 100644 --- a/Sources/Extensions/Alamofire/SessionManager+Extensions.swift +++ b/Sources/Extensions/Alamofire/SessionManager+Extensions.swift @@ -115,7 +115,7 @@ public extension Reactive where Base: SessionManager { /// - Returns: Observable with HTTP URL Response and target object func responseModel(requestParameters: ApiRequestParameters, decoder: JSONDecoder) - -> Observable<(response: HTTPURLResponse, model: T)> { + -> Observable> { return apiRequest(requestParameters: requestParameters) .flatMap { @@ -131,7 +131,7 @@ public extension Reactive where Base: SessionManager { /// - Returns: Observable with HTTP URL Response and target object func responseObservableModel(requestParameters: ApiRequestParameters, decoder: JSONDecoder) - -> Observable<(response: HTTPURLResponse, model: T)> { + -> Observable> { return apiRequest(requestParameters: requestParameters) .flatMap { @@ -145,13 +145,13 @@ public extension Reactive where Base: SessionManager { /// - Parameter requestParameters: api parameters to pass Alamofire /// - Returns: Observable with HTTP URL Response and Data func responseData(requestParameters: ApiRequestParameters) - -> Observable<(response: HTTPURLResponse, data: Data)> { + -> Observable { return apiRequest(requestParameters: requestParameters) .flatMap { $0.rx.responseResult(queue: self.base.mappingQueue, responseSerializer: DataRequest.dataResponseSerializer()) - .map { ($0, $1 as Data) } + .map { $0 as SessionManager.DataResponse } .catchAsRequestError(with: $0) } }