in src/main/java/com/aliyun/oss/common/parser/RequestMarshallers.java [312:529]
public FixedLengthInputStream marshall(SetBucketWebsiteRequest request) {
StringBuffer xmlBody = new StringBuffer();
xmlBody.append("<WebsiteConfiguration>");
if (request.getIndexDocument() != null) {
xmlBody.append("<IndexDocument>");
xmlBody.append("<Suffix>" + request.getIndexDocument() + "</Suffix>");
if(request.isSupportSubDir()) {
xmlBody.append("<SupportSubDir>" + request.isSupportSubDir() + "</SupportSubDir>");
if (request.getSubDirType() != null) {
xmlBody.append("<Type>" + request.getSubDirType().toString() + "</Type>");
}
}
xmlBody.append("</IndexDocument>");
}
if (request.getErrorDocument() != null) {
xmlBody.append("<ErrorDocument>");
xmlBody.append("<Key>" + request.getErrorDocument() + "</Key>");
if (request.getHttpStatus() != null) {
xmlBody.append("<HttpStatus>" + request.getHttpStatus() + "</HttpStatus>");
}
xmlBody.append("</ErrorDocument>");
}
// RoutingRules可以没有
if (request.getRoutingRules().size() > 0) {
xmlBody.append("<RoutingRules>");
for (RoutingRule routingRule : request.getRoutingRules()) {
xmlBody.append("<RoutingRule>");
xmlBody.append("<RuleNumber>" + routingRule.getNumber() + "</RuleNumber>");
// Condition字句可以没有,如果有至少有一个条件
RoutingRule.Condition condition = routingRule.getCondition();
if (condition.getKeyPrefixEquals() != null || condition.getHttpErrorCodeReturnedEquals() > 0) {
xmlBody.append("<Condition>");
if (condition.getKeyPrefixEquals() != null) {
xmlBody.append("<KeyPrefixEquals>" + escapeKey(condition.getKeyPrefixEquals())
+ "</KeyPrefixEquals>");
}
// add KeySuffixEquals
if (condition.getKeySuffixEquals() != null) {
xmlBody.append("<KeySuffixEquals>" + escapeKey(condition.getKeySuffixEquals())
+ "</KeySuffixEquals>");
}
if (condition.getHttpErrorCodeReturnedEquals() != null) {
xmlBody.append("<HttpErrorCodeReturnedEquals>" + condition.getHttpErrorCodeReturnedEquals()
+ "</HttpErrorCodeReturnedEquals>");
}
if (condition.getIncludeHeaders() != null && condition.getIncludeHeaders().size() > 0) {
for (RoutingRule.IncludeHeader includeHeader : condition.getIncludeHeaders()) {
xmlBody.append("<IncludeHeader>");
if (includeHeader.getKey() != null) {
xmlBody.append("<Key>" + includeHeader.getKey() + "</Key>");
}
if (includeHeader.getEquals() != null) {
xmlBody.append("<Equals>" + includeHeader.getEquals() + "</Equals>");
}
if (includeHeader.getStartsWith() != null) {
xmlBody.append("<StartsWith>" + includeHeader.getStartsWith() + "</StartsWith>");
}
if (includeHeader.getEndsWith() != null) {
xmlBody.append("<EndsWith>" + includeHeader.getEndsWith() + "</EndsWith>");
}
xmlBody.append("</IncludeHeader>");
}
}
xmlBody.append("</Condition>");
}
// Redirect子句必须存在
RoutingRule.Redirect redirect = routingRule.getRedirect();
xmlBody.append("<Redirect>");
if (redirect.getRedirectType() != null) {
xmlBody.append("<RedirectType>" + redirect.getRedirectType().toString() + "</RedirectType>");
}
if (redirect.getHostName() != null) {
xmlBody.append("<HostName>" + redirect.getHostName() + "</HostName>");
}
if (redirect.getProtocol() != null) {
xmlBody.append("<Protocol>" + redirect.getProtocol().toString() + "</Protocol>");
}
if (redirect.getReplaceKeyPrefixWith() != null) {
xmlBody.append("<ReplaceKeyPrefixWith>" + escapeKey(redirect.getReplaceKeyPrefixWith())
+ "</ReplaceKeyPrefixWith>");
}
if (redirect.getReplaceKeyWith() != null) {
xmlBody.append(
"<ReplaceKeyWith>" + escapeKey(redirect.getReplaceKeyWith()) + "</ReplaceKeyWith>");
}
if (redirect.getHttpRedirectCode() != null) {
xmlBody.append("<HttpRedirectCode>" + redirect.getHttpRedirectCode() + "</HttpRedirectCode>");
}
if (redirect.getMirrorURL() != null) {
xmlBody.append("<MirrorURL>" + redirect.getMirrorURL() + "</MirrorURL>");
}
if(redirect.getMirrorTunnelId() != null) {
xmlBody.append("<MirrorTunnelId>" + redirect.getMirrorTunnelId() + "</MirrorTunnelId>");
}
if (redirect.getMirrorMultiAlternates() != null && redirect.getMirrorMultiAlternates().size() > 0) {
xmlBody.append("<MirrorMultiAlternates>");
for (int i = 0; i < redirect.getMirrorMultiAlternates().size(); i++) {
RoutingRule.Redirect.MirrorMultiAlternate mirrorMultiAlternate = redirect.getMirrorMultiAlternates().get(i);
if (mirrorMultiAlternate != null && mirrorMultiAlternate.getUrl() != null) {
xmlBody.append("<MirrorMultiAlternate>");
xmlBody.append("<MirrorMultiAlternateNumber>");
xmlBody.append(mirrorMultiAlternate.getPrior());
xmlBody.append("</MirrorMultiAlternateNumber>");
xmlBody.append("<MirrorMultiAlternateURL>");
xmlBody.append(mirrorMultiAlternate.getUrl());
xmlBody.append("</MirrorMultiAlternateURL>");
xmlBody.append("</MirrorMultiAlternate>");
}
}
xmlBody.append("</MirrorMultiAlternates>");
}
if (redirect.getMirrorSecondaryURL() != null) {
xmlBody.append("<MirrorURLSlave>" + redirect.getMirrorSecondaryURL() + "</MirrorURLSlave>");
}
if (redirect.getMirrorProbeURL() != null) {
xmlBody.append("<MirrorURLProbe>" + redirect.getMirrorProbeURL() + "</MirrorURLProbe>");
}
if (redirect.isMirrorPassQueryString() != null) {
xmlBody.append(
"<MirrorPassQueryString>" + redirect.isMirrorPassQueryString() + "</MirrorPassQueryString>");
}
if (redirect.isPassOriginalSlashes() != null) {
xmlBody.append("<MirrorPassOriginalSlashes>" + redirect.isPassOriginalSlashes()
+ "</MirrorPassOriginalSlashes>");
}
if (redirect.isPassQueryString() != null) {
xmlBody.append("<PassQueryString>" + redirect.isPassQueryString()
+ "</PassQueryString>");
}
// add EnableReplacePrefix and MirrorSwitchAllErrors
if (redirect.isEnableReplacePrefix() != null) {
xmlBody.append("<EnableReplacePrefix>" + redirect.isEnableReplacePrefix()
+ "</EnableReplacePrefix>");
}
if (redirect.isMirrorSwitchAllErrors() != null) {
xmlBody.append("<MirrorSwitchAllErrors>" + redirect.isMirrorSwitchAllErrors()
+ "</MirrorSwitchAllErrors>");
}
if (redirect.isMirrorCheckMd5() != null) {
xmlBody.append("<MirrorCheckMd5>" + redirect.isMirrorCheckMd5()
+ "</MirrorCheckMd5>");
}
if (redirect.isMirrorFollowRedirect() != null) {
xmlBody.append("<MirrorFollowRedirect>" + redirect.isMirrorFollowRedirect()
+ "</MirrorFollowRedirect>");
}
if (redirect.isMirrorUserLastModified() != null) {
xmlBody.append("<MirrorUserLastModified>" + redirect.isMirrorUserLastModified()
+ "</MirrorUserLastModified>");
}
if (redirect.isMirrorIsExpressTunnel() != null) {
xmlBody.append("<MirrorIsExpressTunnel>" + redirect.isMirrorIsExpressTunnel()
+ "</MirrorIsExpressTunnel>");
}
if (redirect.getMirrorDstRegion() != null) {
xmlBody.append("<MirrorDstRegion>" + redirect.getMirrorDstRegion()
+ "</MirrorDstRegion>");
}
if (redirect.getMirrorDstVpcId() != null) {
xmlBody.append("<MirrorDstVpcId>" + redirect.getMirrorDstVpcId()
+ "</MirrorDstVpcId>");
}
if (redirect.isMirrorUsingRole() != null) {
xmlBody.append("<MirrorUsingRole>" + redirect.isMirrorUsingRole() + "</MirrorUsingRole>");
}
if (redirect.getMirrorRole() != null) {
xmlBody.append("<MirrorRole>" + redirect.getMirrorRole() + "</MirrorRole>");
}
if (redirect.getMirrorHeaders() != null) {
xmlBody.append("<MirrorHeaders>");
RoutingRule.MirrorHeaders mirrorHeaders = redirect.getMirrorHeaders();
xmlBody.append("<PassAll>" + mirrorHeaders.isPassAll() + "</PassAll>");
if (mirrorHeaders.getPass() != null && mirrorHeaders.getPass().size() > 0) {
for (String pass : mirrorHeaders.getPass()) {
xmlBody.append("<Pass>" + pass + "</Pass>");
}
}
if (mirrorHeaders.getRemove() != null && mirrorHeaders.getRemove().size() > 0) {
for (String remove : mirrorHeaders.getRemove()) {
xmlBody.append("<Remove>" + remove + "</Remove>");
}
}
if (mirrorHeaders.getSet() != null && mirrorHeaders.getSet().size() > 0) {
for (Map<String, String> setMap : mirrorHeaders.getSet()) {
xmlBody.append("<Set>");
xmlBody.append("<Key>" + setMap.get("Key") + "</Key>");
xmlBody.append("<Value>" + setMap.get("Value") + "</Value>");
xmlBody.append("</Set>");
}
}
xmlBody.append("</MirrorHeaders>");
}
xmlBody.append("</Redirect>");
xmlBody.append("</RoutingRule>");
}
xmlBody.append("</RoutingRules>");
}
xmlBody.append("</WebsiteConfiguration>");
return stringMarshaller.marshall(xmlBody.toString());
}