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

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

package com.ksyun.ks3.service.request;

import com.ksyun.ks3.http.HttpMethod;
import com.ksyun.ks3.http.Request;
import com.ksyun.ks3.utils.StringUtils;

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

/**
 *  获取 objects 所有历史版本
 */
public class ListObjectVersionsRequest extends Ks3WebServiceRequest{
    private String bucket;
    private String prefix;

    /**
     * prefix和delimiter详解
     * 

* commonPrefix由prefix和delimiter确定,以prefix开头的object * key,在prefix之后第一次出现delimiter的位置之前(包含delimiter)的子字符串将存在于commonPrefixes中 *

*

* 比如有一下几个个object key *

*

* aaaa/bbb/ddd.txt *

*

* aaaa/ccc/eee.txt *

*

* ssss/eee/fff.txt *

*

* prefix为空 delimiter为/ 则commonPrefix 为 aaaa/和ssss/ 返回的object为空 *

*

* prefix为aaaa/ delimiter为/ 则commonPrefix 为 aaaa/bbb/和aaaa/ccc/ 返回的object为空 *

*

* prefix为ssss/ delimiter为/ 则commonPrefix 为 aaaa/eee/ 返回的object为空 *

*

* prefix为空 delimiter为空 则commonPrefix 为空 返回的object * keys为aaaa/bbb/ddd.txt、aaaa/ccc/eee.txt、ssss/eee/fff.txt *

*

* prefix为aaaa/ delimiter为空 则commonPrefix 为空 返回的object * keys为aaaa/bbb/ddd.txt、aaaa/ccc/eee.txt *

*

* prefix为ssss/ delimiter为空 则commonPrefix 为空 返回的object keys为ssss/eee/fff.txt *

* *

* 由于分布式文件存储系统中没有文件夹结构,所以用delimiter和prefix模拟文件夹结构,可以把prefix看成当前在哪个文件夹下, * delimiter为文件夹分隔符,commonprefix为当前文件夹下的子文件夹 *

*/ private String delimiter; /** * 返回的最大数1-1000 */ private Integer maxKeys; /** * 要求ks3服务器对返回的结果中object key进行编码 */ private String encodingType; /** * 起始 key(不包含) */ private String KeyMarker; /** * 起始版本号(不包含) */ private String VersionIdMarker; public String getKeyMarker() { return KeyMarker; } public void setKeyMarker(String keyMarker) { KeyMarker = keyMarker; } public String getVersionIdMarker() { return VersionIdMarker; } public void setVersionIdMarker(String versionIdMarker) { VersionIdMarker = versionIdMarker; } public String getBucket() { return bucket; } public void setBucket(String bucket) { this.bucket = bucket; } /** * 前缀 */ public String getPrefix() { return prefix; } /** * 前缀 */ public void setPrefix(String prefix) { this.prefix = prefix; } /** * 分隔符 */ public String getDelimiter() { return delimiter; } /** * 分隔符 */ public void setDelimiter(String delimiter) { this.delimiter = delimiter; } /** * 返回的最大数 */ public Integer getMaxKeys() { return maxKeys; } /** * 返回的最大数 */ public void setMaxKeys(Integer maxKeys) { this.maxKeys = maxKeys; } /** * @param bucketName */ public ListObjectVersionsRequest(String bucketName) { this(bucketName, null, null, null, null,null); } /** * * @param bucketName * @param prefix */ public ListObjectVersionsRequest(String bucketName, String prefix) { this(bucketName, prefix, null, null, null,null); } /** * * @param bucket * @param prefix * @param delimiter * @param maxKeys * @param keyMarker * @param versionIdMarker */ public ListObjectVersionsRequest(String bucket, String prefix, String keyMarker, String versionIdMarker, String delimiter, Integer maxKeys) { this.bucket = bucket; this.prefix = prefix; this.KeyMarker = keyMarker; this.VersionIdMarker = versionIdMarker; this.delimiter = delimiter; this.maxKeys = maxKeys; } @Override public void validateParams() throws IllegalArgumentException { if (StringUtils.isBlank(this.bucket)) throw notNull( "bucketName"); if (this.maxKeys != null && (this.maxKeys > 1000 || this.maxKeys < 1)) throw between( "maxKeys",String.valueOf(maxKeys),"1","1000"); if (this.VersionIdMarker != null && this.KeyMarker == null) { throw notNull("KeyMarker"); } } public String getEncodingType() { return encodingType; } public void setEncodingType(String encodingType) { this.encodingType = encodingType; } @Override public void buildRequest(Request request) { request.setMethod(HttpMethod.GET); request.setBucket(bucket); request.addQueryParam("versions", ""); request.addQueryParamIfNotNull("prefix", prefix); request.addQueryParamIfNotNull("key-marker", KeyMarker ); request.addQueryParamIfNotNull("version-id-marker", VersionIdMarker); request.addQueryParamIfNotNull("delimiter", delimiter); if(maxKeys!=null) request.addQueryParamIfNotNull("max-keys", String.valueOf(maxKeys)); request.addQueryParamIfNotNull("encoding-type", this.encodingType); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy