![JAR search and dependency download from the Maven repository](/logo.png)
com.ksyun.ks3.service.request.PutBucketLifecycleRequest Maven / Gradle / Ivy
package com.ksyun.ks3.service.request;
import com.fasterxml.jackson.databind.util.ISO8601Utils;
import com.ksyun.ks3.config.Constants;
import com.ksyun.ks3.dto.BucketLifecycleConfiguration;
import com.ksyun.ks3.dto.BucketLifecycleConfiguration.NoncurrentVersionTransition;
import com.ksyun.ks3.dto.BucketLifecycleConfiguration.Rule;
import com.ksyun.ks3.dto.BucketLifecycleConfiguration.Transition;
import com.ksyun.ks3.dto.ObjectTag;
import com.ksyun.ks3.http.HttpHeaders;
import com.ksyun.ks3.http.HttpMethod;
import com.ksyun.ks3.http.Request;
import com.ksyun.ks3.utils.DateUtils;
import com.ksyun.ks3.utils.Md5Utils;
import com.ksyun.ks3.utils.StringUtils;
import com.ksyun.ks3.utils.XmlWriter;
import java.io.ByteArrayInputStream;
import java.util.Date;
import java.util.List;
import static com.ksyun.ks3.exception.client.ClientIllegalArgumentExceptionGenerator.between;
import static com.ksyun.ks3.exception.client.ClientIllegalArgumentExceptionGenerator.notNull;
public class PutBucketLifecycleRequest extends Ks3WebServiceRequest {
private String bucketName;
private BucketLifecycleConfiguration lifecycleConfiguration;
public PutBucketLifecycleRequest(String bucketName, BucketLifecycleConfiguration lifecycleConfiguration) {
this.bucketName = bucketName;
this.lifecycleConfiguration = lifecycleConfiguration;
}
public String getBucketName() {
return this.bucketName;
}
public void setBucketName(String bucketName) {
this.bucketName = bucketName;
}
public BucketLifecycleConfiguration getLifecycleConfiguration() {
return this.lifecycleConfiguration;
}
public void setLifecycleConfiguration(BucketLifecycleConfiguration lifecycleConfiguration) {
this.lifecycleConfiguration = lifecycleConfiguration;
}
@Override
public void buildRequest(Request request) {
request.setMethod(HttpMethod.PUT);
request.setBucket(bucketName);
request.addQueryParam("lifecycle","");
XmlWriter writer = new XmlWriter();
writer.start("LifecycleConfiguration");
List rules = lifecycleConfiguration.getRules();
boolean hasAndElement = false;
for(Rule rule : rules){
writer.start("Rule");
writer.start("ID").value(rule.getId()).end();
//Filter
writer.start("Filter");
if (rule.getTagSet() != null && rule.getTagSet().size() > 0) {
hasAndElement = true;
writer.start("And");
}
writer.start("Prefix").value(rule.getPrefix()).end();
if (hasAndElement) {
for (ObjectTag tag : rule.getTagSet()) {
writer.start("Tag");
writer.start("Key").value(tag.getKey()).end();
if (tag.getValue() != null) {
writer.start("Value").value(tag.getValue()).end();
}
writer.end();
}
}
if (hasAndElement)
writer.end();
writer.end();
//Status
writer.start("Status").value(rule.getStatus().status2Str()).end();
if (rule.getExpirationDate() != null || (rule.getExpirationInDays() != null &&rule.getExpirationInDays() > 0)) {
//Expiration
writer.start("Expiration");
if (rule.getExpirationDate() != null) {
//timezone?
writer.start("Date").value(getISO8601Timestamp(rule.getExpirationDate())).end();
} else {
if (rule.getExpirationInDays() > 0) {
writer.start("Days").value(rule.getExpirationInDays()).end();
}else{
if (rule.getExpiredObjectDeleteMarker() != null) {
writer.start("ExpiredObjectDeleteMarker").value(rule.getExpiredObjectDeleteMarker().toString()).end();
}
}
}
writer.end();
}
if(rule.getStorageTransitions() != null
&& rule.getStorageTransitions().size()>0){
for(Transition trans : rule.getStorageTransitions()){
writer.start("Transition");
writer.start("StorageClass").value(trans.getStorageClass().toString()).end();
if(trans.getTransDate() != null){
//timezone?
writer.start("Date").value(getISO8601Timestamp(trans.getTransDate())).end();
}
else{
if(trans.getTransDays() > 0){
writer.start("Days").value(trans.getTransDays()).end();
}
}
writer.end();
}
}
if (rule.getNoncurrentVersionExpirationInDays() != null && (rule.getNoncurrentVersionExpirationInDays() > 0)) {
//Expiration
writer.start("NoncurrentVersionExpiration");
//timezone?
writer.start("NoncurrentDays").value(rule.getNoncurrentVersionExpirationInDays()).end();
writer.end();
}
if(rule.getNoncurrentVersionTransitions() != null
&& rule.getNoncurrentVersionTransitions().size()>0){
for(NoncurrentVersionTransition trans : rule.getNoncurrentVersionTransitions()){
writer.start("NoncurrentVersionTransition");
writer.start("StorageClass").value(trans.getStorageClass().toString()).end();
if(trans.getDays() > 0){
writer.start("NoncurrentDays").value(trans.getDays()).end();
}
writer.end();
}
}
writer.end();
}
writer.end();
String xml = writer.toString();
request.addHeader(HttpHeaders.ContentMD5, Md5Utils.md5AsBase64(xml.getBytes()));
request.setContent(new ByteArrayInputStream(xml.getBytes()));
}
@Override
public void validateParams() {
if (StringUtils.isBlank(this.bucketName))
throw notNull("bucketName");
if (lifecycleConfiguration == null)
throw notNull("lifecycleConfiguration");
if (lifecycleConfiguration.getRules() == null || lifecycleConfiguration.getRules().size() == 0)
throw notNull("bucketLifecycleConfiguration.rules");
if (lifecycleConfiguration.getRules().size() > Constants.lifecycleMaxRules)
throw between("lifecycleConfiguration.rules.size()", String.valueOf(lifecycleConfiguration.getRules().size()), "0", String.valueOf(Constants.lifecycleMaxRules));
List rules = lifecycleConfiguration.getRules();
for (Rule rule : rules) {
rule.validate();
}
}
public static String getISO8601Timestamp(Date date){
// return ISO8601Utils.format(DateUtils.truncateToDay(date), false, TimeZone.getTimeZone("Asia/Shanghai"));
return ISO8601Utils.format(DateUtils.truncateToDay(date));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy