in alibabacloud-gateway-oss/java/src/main/java/com/aliyun/gateway/oss/Client.java [139:240]
public void modifyRequest(com.aliyun.gateway.spi.models.InterceptorContext context, com.aliyun.gateway.spi.models.AttributeMap attributeMap) throws Exception {
com.aliyun.gateway.spi.models.InterceptorContext.InterceptorContextRequest request = context.request;
java.util.Map<String, String> hostMap = new java.util.HashMap<>();
if (!com.aliyun.teautil.Common.isUnset(request.hostMap)) {
hostMap = request.hostMap;
}
String bucketName = hostMap.get("bucket");
if (com.aliyun.teautil.Common.isUnset(bucketName)) {
bucketName = "";
}
if (!com.aliyun.teautil.Common.isUnset(request.headers.get("x-oss-meta-*"))) {
Object tmp = com.aliyun.teautil.Common.parseJSON(request.headers.get("x-oss-meta-*"));
java.util.Map<String, Object> mapData = com.aliyun.teautil.Common.assertAsMap(tmp);
java.util.Map<String, String> metaData = com.aliyun.teautil.Common.stringifyMapValue(mapData);
java.util.List<String> metaKeySet = com.aliyun.darabonba.map.Client.keySet(metaData);
request.headers.put("x-oss-meta-*", null);
for (String key : metaKeySet) {
String newKey = "x-oss-meta-" + key + "";
request.headers.put(newKey, metaData.get(key));
}
}
com.aliyun.gateway.spi.models.InterceptorContext.InterceptorContextConfiguration config = context.configuration;
String regionId = config.regionId;
if (com.aliyun.teautil.Common.isUnset(regionId) || com.aliyun.teautil.Common.empty(regionId)) {
regionId = this.getRegionIdFromEndpoint(config.endpoint);
}
com.aliyun.credentials.Client credential = request.credential;
String accessKeyId = credential.getAccessKeyId();
String accessKeySecret = credential.getAccessKeySecret();
String securityToken = credential.getSecurityToken();
if (!com.aliyun.teautil.Common.empty(securityToken)) {
request.headers.put("x-oss-security-token", securityToken);
}
if (!com.aliyun.teautil.Common.isUnset(request.body)) {
if (com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "xml")) {
java.util.Map<String, Object> reqBodyMap = com.aliyun.teautil.Common.assertAsMap(request.body);
// for python:
// xml_str = OSS_UtilClient.to_xml(req_body_map)
String xmlStr = com.aliyun.teaxml.Client.toXML(reqBodyMap);
request.stream = Tea.toReadable(xmlStr);
request.headers.put("content-type", "application/xml");
request.headers.put("content-md5", com.aliyun.darabonba.encode.Encoder.base64EncodeToString(com.aliyun.darabonba.signature.Signer.MD5Sign(xmlStr)));
} else if (com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "json")) {
String reqBodyStr = com.aliyun.teautil.Common.toJSONString(request.body);
request.stream = Tea.toReadable(reqBodyStr);
request.headers.put("content-type", "application/json; charset=utf-8");
} else if (com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "formData")) {
java.util.Map<String, Object> reqBodyForm = com.aliyun.teautil.Common.assertAsMap(request.body);
request.stream = Tea.toReadable(com.aliyun.openapiutil.Client.toForm(reqBodyForm));
request.headers.put("content-type", "application/x-www-form-urlencoded");
} else if (com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "binary")) {
attributeMap.key = TeaConverter.buildMap(
new TeaPair("crc", ""),
new TeaPair("md5", "")
);
request.stream = com.aliyun.ossutil.Client.inject(request.stream, attributeMap.key);
request.headers.put("content-type", "application/octet-stream");
}
}
String host = this.getHost(config.endpointType, bucketName, config.endpoint, context);
request.headers = TeaConverter.merge(String.class,
TeaConverter.buildMap(
new TeaPair("host", host),
new TeaPair("date", com.aliyun.teautil.Common.getDateUTCString()),
new TeaPair("user-agent", request.userAgent)
),
request.headers
);
String originPath = request.pathname;
java.util.Map<String, String> originQuery = request.query;
if (!com.aliyun.teautil.Common.empty(originPath)) {
java.util.List<String> pathAndQueries = com.aliyun.darabonbastring.Client.split(originPath, "?", 2);
request.pathname = pathAndQueries.get(0);
if (com.aliyun.teautil.Common.equalNumber(com.aliyun.darabonba.array.Client.size(pathAndQueries), 2)) {
java.util.List<String> pathQueries = com.aliyun.darabonbastring.Client.split(pathAndQueries.get(1), "&", null);
for (String sub : pathQueries) {
java.util.List<String> item = com.aliyun.darabonbastring.Client.split(sub, "=", null);
String queryKey = item.get(0);
String queryValue = "";
if (com.aliyun.teautil.Common.equalNumber(com.aliyun.darabonba.array.Client.size(item), 2)) {
queryValue = item.get(1);
}
if (com.aliyun.teautil.Common.empty(originQuery.get(queryKey))) {
request.query.put(queryKey, queryValue);
}
}
}
}
String signatureVersion = com.aliyun.teautil.Common.defaultString(request.signatureVersion, "v4");
request.headers.put("authorization", this.getAuthorization(signatureVersion, bucketName, request.pathname, request.method, request.query, request.headers, accessKeyId, accessKeySecret, regionId));
}