From 475e801393ab142061fcab8047c6b22fc5d30b3c Mon Sep 17 00:00:00 2001 From: Madhas Date: Fri, 25 May 2018 14:36:12 +0300 Subject: [PATCH] correct ObservableMappable --- Sources/Classes/Services/NetworkService.swift | 6 +++--- .../Extensions/Alamofire/AlamofireManager+Extensions.swift | 2 +- .../Extensions/Alamofire/AlamofireRequest+Extensions.swift | 2 +- Sources/Protocols/ObservableMappable.swift | 6 +++--- Tests/NetworkServiceTests.swift | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Sources/Classes/Services/NetworkService.swift b/Sources/Classes/Services/NetworkService.swift index edac7141..cf91bffa 100644 --- a/Sources/Classes/Services/NetworkService.swift +++ b/Sources/Classes/Services/NetworkService.swift @@ -59,9 +59,9 @@ open class NetworkService { /// - Parameter parameters: api parameters to pass Alamofire /// - Parameter decoder: json decoder to decode response data /// - Returns: Observable of tuple containing (HTTPURLResponse, ObservableMappable) - public func rxRequest(with parameters: ApiRequestParameters, - decoder: JSONDecoder = JSONDecoder()) - -> Observable<(response: HTTPURLResponse, model: T)> where T.ModelType == T { + public func rxObservableRequest(with parameters: ApiRequestParameters, + decoder: JSONDecoder = JSONDecoder()) + -> Observable<(response: HTTPURLResponse, model: T)> { return sessionManager.rx.responseObservableModel(requestParameters: parameters, decoder: decoder, diff --git a/Sources/Extensions/Alamofire/AlamofireManager+Extensions.swift b/Sources/Extensions/Alamofire/AlamofireManager+Extensions.swift index deacaa73..f25d700f 100644 --- a/Sources/Extensions/Alamofire/AlamofireManager+Extensions.swift +++ b/Sources/Extensions/Alamofire/AlamofireManager+Extensions.swift @@ -75,7 +75,7 @@ public extension Reactive where Base: Alamofire.SessionManager { decoder: JSONDecoder, mappingQueue: DispatchQueue = .global(), acceptableStatusCodes: Set = Base.defaultAcceptableStatusCodes) - -> Observable<(response: HTTPURLResponse, model: T)> where T.ModelType == T { + -> Observable<(response: HTTPURLResponse, model: T)> { return apiRequest(requestParameters: requestParameters, acceptableStatusCodes: acceptableStatusCodes) .flatMap { $0.rx.observableApiResponse(mappingQueue: mappingQueue, decoder: decoder) } diff --git a/Sources/Extensions/Alamofire/AlamofireRequest+Extensions.swift b/Sources/Extensions/Alamofire/AlamofireRequest+Extensions.swift index da192e17..e63cf671 100644 --- a/Sources/Extensions/Alamofire/AlamofireRequest+Extensions.swift +++ b/Sources/Extensions/Alamofire/AlamofireRequest+Extensions.swift @@ -48,7 +48,7 @@ public extension Reactive where Base: DataRequest { /// - Parameter mappingQueue: The dispatch queue to use for mapping /// - Returns: Observable with HTTP URL Response and target object func observableApiResponse(mappingQueue: DispatchQueue = .global(), decoder: JSONDecoder) - -> Observable<(response: HTTPURLResponse, model: T)> where T.ModelType == T { + -> Observable<(response: HTTPURLResponse, model: T)> { return responseData() .observeOn(SerialDispatchQueueScheduler(queue: mappingQueue, internalSerialQueueName: mappingQueue.label)) diff --git a/Sources/Protocols/ObservableMappable.swift b/Sources/Protocols/ObservableMappable.swift index b6027d09..559da931 100644 --- a/Sources/Protocols/ObservableMappable.swift +++ b/Sources/Protocols/ObservableMappable.swift @@ -23,10 +23,10 @@ import RxSwift /// Protocol for concurrent model mapping -public protocol ObservableMappable { +public protocol ObservableMappable where Self: Decodable { - associatedtype ModelType: Decodable + //associatedtype ModelType: Decodable - static func create(from jsonObject: Any, with decoder: JSONDecoder) -> Observable + static func create(from jsonObject: Any, with decoder: JSONDecoder) -> Observable } diff --git a/Tests/NetworkServiceTests.swift b/Tests/NetworkServiceTests.swift index 72aa157a..c310fffe 100644 --- a/Tests/NetworkServiceTests.swift +++ b/Tests/NetworkServiceTests.swift @@ -113,7 +113,7 @@ final class NetworkServiceTests: XCTestCase { let apiRequest = ApiRequestParameters(url: networkService.configuration.baseUrl + "/albums/1") // when - networkService.rxRequest(with: apiRequest) + networkService.rxObservableRequest(with: apiRequest) .subscribe(onNext: { (_, model: Album) in receivedModel = model requestCompletedExpectation.fulfill() @@ -139,7 +139,7 @@ final class NetworkServiceTests: XCTestCase { let apiRequest = ApiRequestParameters(url: networkService.configuration.baseUrl + "/albums") // when - networkService.rxRequest(with: apiRequest) + networkService.rxObservableRequest(with: apiRequest) .subscribe(onNext: { (_, model: AlbumContainer) in receivedModel = model requestCompletedExpectation.fulfill()