Skip to content

Instantly share code, notes, and snippets.

@sohayb
Forked from chuganzy/APIKit+Rx.swift
Last active February 18, 2017 06:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sohayb/2bea2cecf5e735eba28925d080560458 to your computer and use it in GitHub Desktop.
Save sohayb/2bea2cecf5e735eba28925d080560458 to your computer and use it in GitHub Desktop.
RxSwift x APIKit (RxSwift 3.0 and Swift 3.0)
import Foundation
import APIKit
import RxSwift
extension Session {
func rx_sendRequest<T: Request>(request: T) -> Observable<T.Response> {
return Observable.create { observer in
let task = self.send(request) { result in
switch result {
case .success(let res):
observer.on(.next(res))
observer.on(.completed)
case .failure(let err):
observer.onError(err)
}
}
return Disposables.create { [weak task] in
task?.cancel()
}
}
}
class func rx_sendRequest<T: Request>(request: T) -> Observable<T.Response> {
return shared.rx_sendRequest(request: request)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment