Skip to content

Instantly share code, notes, and snippets.

@andreyoshev
Last active July 29, 2018 21:18
Show Gist options
  • Save andreyoshev/f578b9a9220da6e552768db6f4567d72 to your computer and use it in GitHub Desktop.
Save andreyoshev/f578b9a9220da6e552768db6f4567d72 to your computer and use it in GitHub Desktop.
func createRequest(request: Request) -> Observable<NewRequestEvent> {
return Observable<NewRequestEvent>.create { observer in
RequestRemoteService.shared().createRequest(session: ProfileService.shared().currentSession, request: request, result: { request, code in
guard let resultRequest = request else {
var requestEvent = NewRequestEvent()
if code != nil, let event = NewRequestEvent.Event(rawValue: code!) {
requestEvent.event = event
} else {
requestEvent.event = .retryEvent
}
observer.onNext(requestEvent)
observer.onCompleted()
return
}
var requestEvent = NewRequestEvent()
requestEvent.request = resultRequest
requestEvent.event = .createdEvent
observer.onNext(requestEvent)
observer.onCompleted()
})
return Disposables.create()
}
}
func createRequest(session: String, request: Request, result: @escaping (_ response: Request?, _ code: Int?) -> Void) {
Alamofire
.request(Config.connectiusApiBaseUrl + "/profile/my/requests", method: .post, parameters: request.dictionary, headers: [SESSION_HEADER:session])
.validate(statusCode: [200])
.responseData { response in
self.prepareResponse(rawResponse: response, code: response.response?.statusCode, callBack: result)
}
}
struct NewRequestEvent {
var request: Request?
var event: Event?
enum Event: Int {
case createdEvent = 200
case fewParamsEvent = 400
case invalidParamsEvent = 500
case retryEvent
func toLocalizedString () -> String {
switch self {
case .fewParamsEvent:
return "NewRequestEvent.fewParamsEvent.text".localized()
case .invalidParamsEvent:
return "NewRequestEvent.invalidParamsEvent.text".localized()
case .retryEvent:
return "NewRequestEvent.retryEvent.text".localized()
default:
return ""
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment