2016-12-28 17 views
1

Как отправить MULTIPART данные с RxAlamofireRxAlamofire разместить многокомпонентные данные

Например, в Alamofire

let URL = try! URLRequest(url: "http://example.com", method: .post) 


Alamofire.upload(multipartFormData: { formData in 
    // multiaprt 
}, with: URL, encodingCompletion: {(result: SessionManager.MultipartFormDataEncodingResult) in 

}) 
  1. Как получить такое же поведение/функции с RxAlamofire?
  2. Или Способ обертывания этой функции в наблюдаемом?

ответ

1

Вы можете легко обернуть эту функцию так:

func wrapper() -> Observable<SomeResponseType> { 
    return Observable.create { observer in 

     let URL = try! URLRequest(url: "http://example.com", method: .post) 

     Alamofire.upload(
      multipartFormData: { formData in 
       // multiaprt 
      }, 
      with: URL, 
      encodingCompletion: { encodingResult in 

       switch encodingResult { 

       case .success(let upload, _, _): 
        upload.responseJSON { response in 
         // convert response in something of SomeResponseType 
         // ... 
        observer.onNext(response) 
        observer.onCompleted() 
       } 
       case .failure(let encodingError): 
        observer.onError(encodingError) 
       } 
      }) 

     return Disposables.create() 
    } 
}