Merge pull request #187 from TouchInstinct/refactoring

Refactoring
This commit is contained in:
Ivan Babkin 2019-02-22 13:52:39 +03:00 committed by GitHub
commit fd9d50b8de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 7 deletions

View File

@ -60,7 +60,7 @@ open class NetworkService {
/// - Returns: Observable of tuple containing (HTTPURLResponse, ObservableMappable)
public func rxObservableRequest<T: ObservableMappable>(with parameters: ApiRequestParameters,
decoder: JSONDecoder = JSONDecoder())
-> Observable<(response: HTTPURLResponse, model: T)> {
-> Observable<SessionManager.ModelResponse<T>> {
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<T: Decodable>(with parameters: ApiRequestParameters, decoder: JSONDecoder = JSONDecoder())
-> Observable<(response: HTTPURLResponse, model: T)> {
-> Observable<SessionManager.ModelResponse<T>> {
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<SessionManager.DataResponse> {
return sessionManager.rx.responseData(requestParameters: parameters)
.counterTracking(for: self)

View File

@ -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<T> = (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<Int>

View File

@ -115,7 +115,7 @@ public extension Reactive where Base: SessionManager {
/// - Returns: Observable with HTTP URL Response and target object
func responseModel<T: Decodable>(requestParameters: ApiRequestParameters,
decoder: JSONDecoder)
-> Observable<(response: HTTPURLResponse, model: T)> {
-> Observable<SessionManager.ModelResponse<T>> {
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<T: ObservableMappable>(requestParameters: ApiRequestParameters,
decoder: JSONDecoder)
-> Observable<(response: HTTPURLResponse, model: T)> {
-> Observable<SessionManager.ModelResponse<T>> {
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<SessionManager.DataResponse> {
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)
}
}