RxAlamofire публикует составные данные

Как отправлять составные данные с помощью RxAlamofire

Например, в 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. Или способ обернуть эту функцию в Observable?

person harsh_v    schedule 28.12.2016    source источник


Ответы (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()
    }
}
person xandrefreire    schedule 19.01.2017