public Observable<ApiResponse> uploadImage(long wmId, Uri uri) {
    File file = new File(uri.getPath());
    RequestBody fbody = RequestBody.create(MediaType.parse("application/octet-stream"), file);

    MultipartBody.Part part = MultipartBody.Part.createFormData("photo", file.getName(), fbody);
    return apiService.uploadImage(wmId, part).compose(ApiUtils.<ApiResponse>failRequestAsError());
  }
 public Observable<Void> uploadMeasurementMetaData(
     long wmId, MeasurementImageUploadResponse image, MeasurementInfo measurementInfo) {
   return apiService
       .uploadMeasurementMetaData(wmId, image.id(), MeasurementInfoWrapper.create(measurementInfo))
       .flatMap(
           new Func1<Response<Void>, Observable<Void>>() {
             @Override
             public Observable<Void> call(Response<Void> response) {
               if (response.isSuccessful()) {
                 return Observable.just(null);
               }
               return Observable.error(new Exception("Status code" + response.code()));
             }
           });
 }