in alibabacloud-gateway-pop/java/src/main/java/com/aliyun/gateway/pop/Client.java [40:129]
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;
com.aliyun.gateway.spi.models.InterceptorContext.InterceptorContextConfiguration config = context.configuration;
String date = com.aliyun.openapiutil.Client.getTimestamp();
request.headers = TeaConverter.merge(String.class,
TeaConverter.buildMap(
new TeaPair("host", config.endpoint),
new TeaPair("x-acs-version", request.version),
new TeaPair("x-acs-action", request.action),
new TeaPair("user-agent", request.userAgent),
new TeaPair("x-acs-date", date),
new TeaPair("x-acs-signature-nonce", com.aliyun.teautil.Common.getNonce()),
new TeaPair("accept", "application/json")
),
request.headers
);
String signatureAlgorithm = com.aliyun.teautil.Common.defaultString(request.signatureAlgorithm, _sha256);
String hashedRequestPayload = com.aliyun.darabonba.encode.Encoder.hexEncode(com.aliyun.darabonba.encode.Encoder.hash(com.aliyun.teautil.Common.toBytes(""), signatureAlgorithm));
if (!com.aliyun.teautil.Common.isUnset(request.stream)) {
byte[] tmp = com.aliyun.teautil.Common.readAsBytes(request.stream);
hashedRequestPayload = com.aliyun.darabonba.encode.Encoder.hexEncode(com.aliyun.darabonba.encode.Encoder.hash(tmp, signatureAlgorithm));
request.stream = Tea.toReadable(tmp);
request.headers.put("content-type", "application/octet-stream");
} else {
if (!com.aliyun.teautil.Common.isUnset(request.body)) {
if (com.aliyun.teautil.Common.equalString(request.reqBodyType, "json")) {
String jsonObj = com.aliyun.teautil.Common.toJSONString(request.body);
hashedRequestPayload = com.aliyun.darabonba.encode.Encoder.hexEncode(com.aliyun.darabonba.encode.Encoder.hash(com.aliyun.teautil.Common.toBytes(jsonObj), signatureAlgorithm));
request.stream = Tea.toReadable(jsonObj);
request.headers.put("content-type", "application/json; charset=utf-8");
} else {
java.util.Map<String, Object> m = com.aliyun.teautil.Common.assertAsMap(request.body);
String formObj = com.aliyun.openapiutil.Client.toForm(m);
hashedRequestPayload = com.aliyun.darabonba.encode.Encoder.hexEncode(com.aliyun.darabonba.encode.Encoder.hash(com.aliyun.teautil.Common.toBytes(formObj), signatureAlgorithm));
request.stream = Tea.toReadable(formObj);
request.headers.put("content-type", "application/x-www-form-urlencoded");
}
}
}
if (com.aliyun.teautil.Common.equalString(signatureAlgorithm, _sm3)) {
request.headers.put("x-acs-content-sm3", hashedRequestPayload);
} else {
request.headers.put("x-acs-content-sha256", hashedRequestPayload);
}
if (!com.aliyun.teautil.Common.equalString(request.authType, "Anonymous")) {
com.aliyun.credentials.Client credential = request.credential;
if (com.aliyun.teautil.Common.isUnset(credential)) {
throw new TeaException(TeaConverter.buildMap(
new TeaPair("code", "ParameterMissing"),
new TeaPair("message", "'config.credential' can not be unset")
));
}
com.aliyun.credentials.models.CredentialModel credentialModel = credential.getCredential();
if (!com.aliyun.teautil.Common.empty(credentialModel.providerName)) {
request.headers.put("x-acs-credentials-provider", credentialModel.providerName);
}
String authType = credentialModel.type;
if (com.aliyun.teautil.Common.equalString(authType, "bearer")) {
String bearerToken = credential.getBearerToken();
request.headers.put("x-acs-bearer-token", bearerToken);
request.headers.put("x-acs-signature-type", "BEARERTOKEN");
request.headers.put("Authorization", "Bearer " + bearerToken + "");
} else if (com.aliyun.teautil.Common.equalString(authType, "id_token")) {
String idToken = credentialModel.securityToken;
request.headers.put("x-acs-zero-trust-idtoken", idToken);
} else {
String accessKeyId = credentialModel.accessKeyId;
String accessKeySecret = credentialModel.accessKeySecret;
String securityToken = credentialModel.securityToken;
if (!com.aliyun.teautil.Common.empty(securityToken)) {
request.headers.put("x-acs-accesskey-id", accessKeyId);
request.headers.put("x-acs-security-token", securityToken);
}
String dateNew = com.aliyun.darabonbastring.Client.subString(date, 0, 10);
dateNew = com.aliyun.darabonbastring.Client.replace(dateNew, "-", "", null);
String region = this.getRegion(request.productId, config.endpoint, config.regionId);
byte[] signingkey = this.getSigningkey(signatureAlgorithm, accessKeySecret, request.productId, region, dateNew);
request.headers.put("Authorization", this.getAuthorization(request.pathname, request.method, request.query, request.headers, signatureAlgorithm, hashedRequestPayload, accessKeyId, signingkey, request.productId, region, dateNew));
}
}
}