All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.avos.avoscloud.upload.UrlDirectlyUploader Maven / Gradle / Ivy

package com.avos.avoscloud.upload;

import com.avos.avoscloud.AVErrorUtils;
import com.avos.avoscloud.AVException;
import com.avos.avoscloud.AVFile;
import com.avos.avoscloud.AVPowerfulUtils;
import com.avos.avoscloud.AVUtils;
import com.avos.avoscloud.GenericObjectCallback;
import com.avos.avoscloud.PaasClient;
import com.avos.avoscloud.ProgressCallback;
import com.avos.avoscloud.SaveCallback;
import com.avos.avoscloud.utils.AVFileUtil;

import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class UrlDirectlyUploader extends HttpClientUploader {
  private UploadCallback callback = null;
  public UrlDirectlyUploader(AVFile avFile, SaveCallback saveCallback,
                                ProgressCallback progressCallback, UploadCallback uploadCallback) {
    super(avFile, saveCallback, progressCallback);
    this.callback = uploadCallback;
  }

  @Override
  public AVException doWork() {

    final AVException[] exceptionSaveFile = new AVException[1];
    String url = AVPowerfulUtils.getEndpoint(avFile, true);
    String params = getFileRequestParameters();
    PaasClient.storageInstance().postObject(url, params, true,
        new GenericObjectCallback() {
          @Override
          public void onSuccess(String content, AVException e) {
            if (e == null) {
              try {
                JSONObject jsonObject = new JSONObject(content);
                if (null != callback) {
                  callback.finishedWithResults(jsonObject.getString("objectId"), avFile.getUrl());
                }
//                avFile.handleUploadedResponse(jsonObject.getString("objectId"),
//                    jsonObject.getString("objectId"), avFile.getUrl());
                publishProgress(100);
              } catch (Exception ex) {
                exceptionSaveFile[0] = new AVException(ex);
              }
            } else {
              exceptionSaveFile[0] = AVErrorUtils.createException(e, content);
            }
          }

          @Override
          public void onFailure(Throwable error, String content) {
            exceptionSaveFile[0] = AVErrorUtils.createException(error, content);
          }

        });

    return exceptionSaveFile[0];
  }

  private String getFileRequestParameters() {
    // decide file mimetype.
    String mimeType = AVFileUtil.getFileMimeType(avFile);

    Map parameters = new HashMap();
    parameters.put("name", avFile.getName());
    parameters.put("mime_type", mimeType);
    parameters.put("metaData", avFile.getMetaData());
    parameters.put("__type", AVFile.className());
    parameters.put("url", avFile.getUrl());
    if (avFile.getACL() != null) {
      parameters.putAll(AVUtils.getParsedMap(avFile.getACL().getACLMap()));
    }
    return AVUtils.restfulServerData(parameters);
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy