public void modifyRequest()

in alibabacloud-gateway-pds/java/src/main/java/com/aliyun/gateway/pds/Client.java [18:115]


    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.teautil.Common.getDateUTCString();
        request.headers = TeaConverter.merge(String.class,
            TeaConverter.buildMap(
                new TeaPair("date", date),
                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-signature-nonce", com.aliyun.teautil.Common.getNonce()),
                new TeaPair("accept", "application/json")
            ),
            request.headers
        );
        String signatureAlgorithm = com.aliyun.teautil.Common.defaultString(request.signatureAlgorithm, "ACS4-HMAC-SHA256");
        String signatureVersion = com.aliyun.teautil.Common.defaultString(request.signatureVersion, "v1");
        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.darabonbastring.Client.equals(signatureVersion, "v4")) {
            if (com.aliyun.teautil.Common.equalString(signatureAlgorithm, "ACS4-HMAC-SM3")) {
                request.headers.put("x-acs-content-sm3", hashedRequestPayload);
            } else {
                request.headers.put("x-acs-content-sha256", hashedRequestPayload);
            }

        } else {
            request.headers.put("x-acs-signature-method", "HMAC-SHA1");
            request.headers.put("x-acs-signature-version", "1.0");
        }

        if (!com.aliyun.teautil.Common.equalString(request.authType, "Anonymous") && !com.aliyun.teautil.Common.isUnset(request.credential)) {
            com.aliyun.credentials.Client credential = request.credential;
            com.aliyun.credentials.models.CredentialModel credentialModel = credential.getCredential();
            String authType = credentialModel.type;
            if (com.aliyun.teautil.Common.equalString(authType, "bearer")) {
                String bearerToken = credentialModel.bearerToken;
                request.headers.put("x-acs-bearer-token", bearerToken);
                request.headers.put("Authorization", "Bearer " + bearerToken + "");
            } 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-security-token", securityToken);
                }

                java.util.Map<String, String> headers = new java.util.HashMap<>();
                if (!com.aliyun.teautil.Common.isUnset(request.headers.get("content-type"))) {
                    headers = request.headers;
                } else if (com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "formData") && com.aliyun.darabonbastring.Client.equals(request.action, "DownloadFile") && com.aliyun.darabonbastring.Client.equals(request.pathname, "/v2/file/download")) {
                    java.util.List<String> headersArray = com.aliyun.darabonba.map.Client.keySet(request.headers);
                    for (String key : headersArray) {
                        headers.put(key, request.headers.get(key));
                    }
                    headers.put("content-type", "application/x-www-form-urlencoded; charset=UTF-8");
                } else {
                    headers = request.headers;
                }

                if (com.aliyun.darabonbastring.Client.equals(signatureVersion, "v4")) {
                    String dateNew = com.aliyun.darabonbastring.Client.subString(date, 0, 10);
                    String region = this.getRegion(config.endpoint);
                    byte[] signingkey = this.getSigningkey(signatureAlgorithm, accessKeySecret, region, dateNew);
                    request.headers.put("Authorization", this.getAuthorizationV4(request.pathname, request.method, request.query, headers, signatureAlgorithm, hashedRequestPayload, accessKeyId, signingkey, request.productId, region, dateNew));
                } else {
                    request.headers.put("Authorization", this.getAuthorization(request.pathname, request.method, request.query, headers, accessKeyId, accessKeySecret));
                }

            }

        }

    }