correct ObservableMappable

This commit is contained in:
Madhas 2018-05-25 14:36:12 +03:00
parent dcc095a233
commit 475e801393
5 changed files with 10 additions and 10 deletions

View File

@ -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<T: ObservableMappable>(with parameters: ApiRequestParameters,
decoder: JSONDecoder = JSONDecoder())
-> Observable<(response: HTTPURLResponse, model: T)> where T.ModelType == T {
public func rxObservableRequest<T: ObservableMappable>(with parameters: ApiRequestParameters,
decoder: JSONDecoder = JSONDecoder())
-> Observable<(response: HTTPURLResponse, model: T)> {
return sessionManager.rx.responseObservableModel(requestParameters: parameters,
decoder: decoder,

View File

@ -75,7 +75,7 @@ public extension Reactive where Base: Alamofire.SessionManager {
decoder: JSONDecoder,
mappingQueue: DispatchQueue = .global(),
acceptableStatusCodes: Set<Int> = 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) }

View File

@ -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<T: ObservableMappable>(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))

View File

@ -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<ModelType>
static func create(from jsonObject: Any, with decoder: JSONDecoder) -> Observable<Self>
}

View File

@ -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()