Last active
August 12, 2016 07:28
-
-
Save yota345/595d2a46611894f4a9d6b8c7b8fd19d0 to your computer and use it in GitHub Desktop.
Alamofire with RxSwift (https://github.com/takuwan0405/RxSwiftSample)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Alamofire | |
import RxSwift | |
/** | |
API通信をするためのプロトコル | |
- parameters: パラメーターを指定 | |
- baseURL: APIのドメインを指定 | |
- path: APIのパスを指定 | |
- method: CRUDを指定 | |
*/ | |
protocol APIRequest { | |
var parameters: [String: AnyObject] { get } | |
var baseURL: String { get } | |
var path: String { get } | |
var method: Alamofire.Method { get } | |
} | |
extension APIRequest { | |
/// API通信の対象URL | |
var url: String { return baseURL + path } | |
/** | |
API通信を実行する | |
- returns: Observable:AnyObject | |
- throws: Observable:ErrorType | |
*/ | |
func request() -> Observable<AnyObject> { | |
return Observable.create { observer in | |
let request = Alamofire.request(self.method, self.url, parameters: self.parameters, encoding: .URL) | |
.responseJSON { response in | |
switch response.result { | |
case .Success: | |
observer.onNext(response.result.value!) | |
observer.onCompleted() | |
case .Failure(let error): | |
observer.onError(error) | |
} | |
} | |
request.resume() | |
return AnonymousDisposable { | |
request.cancel() | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Alamofire | |
/** | |
EventのAPI通信情報を設定 | |
*/ | |
enum EventsRequest { | |
case GetEvents(Int) | |
} | |
extension EventsRequest: APIRequest { | |
var baseURL: String { return GlobalConstant.atndBase } | |
var method: Alamofire.Method { | |
switch self { | |
case .GetEvents: | |
return .GET | |
} | |
} | |
var path: String { | |
switch self { | |
case .GetEvents: | |
return GlobalConstant.atndEvents | |
} | |
} | |
var parameters: [String: AnyObject] { | |
switch self { | |
case .GetEvents(let count): | |
return [ | |
"format": "json", | |
"start": count, | |
"count": 15 | |
] | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment