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

com.ksyun.ks3.service.request.PutObjectFetchRequest Maven / Gradle / Ivy

package com.ksyun.ks3.service.request;

import static com.ksyun.ks3.exception.client.ClientIllegalArgumentExceptionGenerator.notNull;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;

import com.ksyun.ks3.utils.Jackson;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.ksyun.ks3.dto.AccessControlList;
import com.ksyun.ks3.dto.CannedAccessControlList;
import com.ksyun.ks3.dto.ObjectMetadata;
import com.ksyun.ks3.http.HttpHeaders;
import com.ksyun.ks3.http.HttpMethod;
import com.ksyun.ks3.http.Request;
import com.ksyun.ks3.utils.HttpUtils;
import com.ksyun.ks3.utils.StringUtils;

public class PutObjectFetchRequest extends Ks3WebServiceRequest{

	private static final Log log = LogFactory.getLog(PutObjectFetchRequest.class);
	/**
	 * 目标bucket
	 */
	private String bucket;
	/**
	 * 目标key
	 */
	private String key;
	/**
	 * 将要上传的object的元数据
	 */
	private ObjectMetadata objectMeta = new ObjectMetadata();
	/**
	 * 设置新的object的acl
	 */
	private CannedAccessControlList cannedAcl;
	/**
	 * 设置新的object的acl
	 */
	private AccessControlList acl = new AccessControlList();
	
	private String sourceUrl;
	
	public String getSourceUrl() {
		return sourceUrl;
	}

	public void setSourceUrl(String sourceUrl) {
		this.sourceUrl = sourceUrl;
	}

	public String getCallbackUrl() {
		return callbackUrl;
	}

	public void setCallbackUrl(String callbackUrl) {
		this.callbackUrl = callbackUrl;
	}


	private String callbackUrl;

	private boolean force;

	public boolean isForce() {
		return force;
	}

	public void setForce(boolean force) {
		this.force = force;
	}

	private String fetchSourceHeader;

	public String getFetchSourceHeader() {
		return fetchSourceHeader;
	}

	public void setFetchSourceHeader(String fetchSourceHeader) {
		this.fetchSourceHeader = fetchSourceHeader;
	}

	/**
	 * 
	 * @param bucketname
	 * @param key
	 * @param sourceUrl
	 *            要上传的文件
	 */
	public PutObjectFetchRequest(String bucketname, String key,String sourceUrl) {
		this.bucket = bucketname;
		this.key = key;
		this.sourceUrl = sourceUrl;
	}

	/**
	 * 
	 * @param bucketname
	 * @param key
	 * @param metadata
	 *            请尽量提供content-length,否则可能会导致jvm内存溢出
	 */
	public PutObjectFetchRequest(String bucketname, String key,ObjectMetadata metadata) {
		if(metadata == null)
			metadata = new ObjectMetadata();
		this.bucket = bucketname;
		this.key = key;
		this.setObjectMeta(metadata);
	}

	@Override
	public void validateParams() throws IllegalArgumentException {
		if (StringUtils.isBlank(this.bucket))
			throw notNull("bucketname");
		if (StringUtils.isBlank(this.key))
			throw notNull("objectkey");
		if(StringUtils.isBlank(this.sourceUrl)){
			throw notNull("sourceUrl");
		}
		
	}
	
	public String getBucket() {
		return bucket;
	}

	public void setBucket(String bucket) {
		this.bucket = bucket;
	}
	
	
	public void setMd5Base64(String md5Base64) {
		this.objectMeta.setContentMD5(md5Base64);
	}

	public String getKey() {
		return key;
	}

	public void setKey(String key) {
		this.key = key;
	}

	public ObjectMetadata getObjectMeta() {
		return objectMeta;
	}

	public void setObjectMeta(ObjectMetadata objectMeta) {
		this.objectMeta = objectMeta;
	}

	public CannedAccessControlList getCannedAcl() {
		return cannedAcl;
	}

	public void setCannedAcl(CannedAccessControlList cannedAcl) {
		this.cannedAcl = cannedAcl;
	}

	public AccessControlList getAcl() {
		return acl;
	}

	public void setAcl(AccessControlList acl) {
		this.acl = acl;
	}


	@Override
	public void buildRequest(Request request) {
		request.setMethod(HttpMethod.PUT);
		request.setBucket(bucket);
		request.setKey(key);
		request.addQueryParam("fetch", "");
//		request.addHeader(HttpHeaders.ContentType,"application/octet-stream");
		if (this.objectMeta == null)
			this.objectMeta = new ObjectMetadata();
		
		//添加元数据
		request.getHeaders().putAll(HttpUtils.convertMeta2Headers(objectMeta));
		// acl
		if (this.cannedAcl != null) {
			request.addHeader(HttpHeaders.CannedAcl.toString(),
					cannedAcl.toString());
		}
		if (this.acl != null) {
			request.getHeaders().putAll(HttpUtils.convertAcl2Headers(acl));
		}
		try {
			if(this.sourceUrl != null){
				request.getHeaders().put(HttpHeaders.XKssSourceUrl.toString(), URLEncoder.encode(this.sourceUrl,"UTF-8"));
			}
			if(this.callbackUrl != null){
				request.getHeaders().put(HttpHeaders.XKssCallbackUrl.toString(), URLEncoder.encode(this.callbackUrl,"UTF-8"));
			}
			if (this.isForce()) {
				request.getHeaders().put(HttpHeaders.XKssForce.toString(), String.valueOf(this.force));
			}
			if (this.fetchSourceHeader != null) {
				Map map = Jackson.fromJsonString(this.fetchSourceHeader, Map.class);
				request.getHeaders().put(HttpHeaders.XKssFetchSourceHeader.toString(), this.fetchSourceHeader);
			}
		} catch (UnsupportedEncodingException e) {
			log.error("put head error:{}",e);
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy