public void ModifyRequest()

in alibabacloud-gateway-pop/csharp/core/Client.cs [67:170]


        public void ModifyRequest(AlibabaCloud.GatewaySpi.Models.InterceptorContext context, AlibabaCloud.GatewaySpi.Models.AttributeMap attributeMap)
        {
            AlibabaCloud.GatewaySpi.Models.InterceptorContext.InterceptorContextRequest request = context.Request;
            AlibabaCloud.GatewaySpi.Models.InterceptorContext.InterceptorContextConfiguration config = context.Configuration;
            string date = AlibabaCloud.OpenApiUtil.Client.GetTimestamp();
            request.Headers = TeaConverter.merge<string>
            (
                new Dictionary<string, string>()
                {
                    {"host", config.Endpoint},
                    {"x-acs-version", request.Version},
                    {"x-acs-action", request.Action},
                    {"user-agent", request.UserAgent},
                    {"x-acs-date", date},
                    {"x-acs-signature-nonce", AlibabaCloud.TeaUtil.Common.GetNonce()},
                    {"accept", "application/json"},
                },
                request.Headers
            );
            string signatureAlgorithm = AlibabaCloud.TeaUtil.Common.DefaultString(request.SignatureAlgorithm, _sha256);
            string hashedRequestPayload = AlibabaCloud.DarabonbaEncodeUtil.Encoder.HexEncode(AlibabaCloud.DarabonbaEncodeUtil.Encoder.Hash(AlibabaCloud.TeaUtil.Common.ToBytes(""), signatureAlgorithm));
            if (!AlibabaCloud.TeaUtil.Common.IsUnset(request.Stream))
            {
                byte[] tmp = AlibabaCloud.TeaUtil.Common.ReadAsBytes(request.Stream);
                hashedRequestPayload = AlibabaCloud.DarabonbaEncodeUtil.Encoder.HexEncode(AlibabaCloud.DarabonbaEncodeUtil.Encoder.Hash(tmp, signatureAlgorithm));
                request.Stream = TeaCore.BytesReadable(tmp);
                request.Headers["content-type"] = "application/octet-stream";
            }
            else
            {
                if (!AlibabaCloud.TeaUtil.Common.IsUnset(request.Body))
                {
                    if (AlibabaCloud.TeaUtil.Common.EqualString(request.ReqBodyType, "json"))
                    {
                        string jsonObj = AlibabaCloud.TeaUtil.Common.ToJSONString(request.Body);
                        hashedRequestPayload = AlibabaCloud.DarabonbaEncodeUtil.Encoder.HexEncode(AlibabaCloud.DarabonbaEncodeUtil.Encoder.Hash(AlibabaCloud.TeaUtil.Common.ToBytes(jsonObj), signatureAlgorithm));
                        request.Stream = TeaCore.BytesReadable(jsonObj);
                        request.Headers["content-type"] = "application/json; charset=utf-8";
                    }
                    else
                    {
                        Dictionary<string, object> m = AlibabaCloud.TeaUtil.Common.AssertAsMap(request.Body);
                        string formObj = AlibabaCloud.OpenApiUtil.Client.ToForm(m);
                        hashedRequestPayload = AlibabaCloud.DarabonbaEncodeUtil.Encoder.HexEncode(AlibabaCloud.DarabonbaEncodeUtil.Encoder.Hash(AlibabaCloud.TeaUtil.Common.ToBytes(formObj), signatureAlgorithm));
                        request.Stream = TeaCore.BytesReadable(formObj);
                        request.Headers["content-type"] = "application/x-www-form-urlencoded";
                    }
                }
            }
            if (AlibabaCloud.TeaUtil.Common.EqualString(signatureAlgorithm, _sm3))
            {
                request.Headers["x-acs-content-sm3"] = hashedRequestPayload;
            }
            else
            {
                request.Headers["x-acs-content-sha256"] = hashedRequestPayload;
            }
            if (!AlibabaCloud.TeaUtil.Common.EqualString(request.AuthType, "Anonymous"))
            {
                Aliyun.Credentials.Client credential = request.Credential;
                if (AlibabaCloud.TeaUtil.Common.IsUnset(credential))
                {
                    throw new TeaException(new Dictionary<string, string>
                    {
                        {"code", "ParameterMissing"},
                        {"message", "'config.credential' can not be unset"},
                    });
                }
                Aliyun.Credentials.Models.CredentialModel credentialModel = credential.GetCredential();
                if (!AlibabaCloud.TeaUtil.Common.Empty(credentialModel.ProviderName))
                {
                    request.Headers["x-acs-credentials-provider"] = credentialModel.ProviderName;
                }
                string authType = credentialModel.Type;
                if (AlibabaCloud.TeaUtil.Common.EqualString(authType, "bearer"))
                {
                    string bearerToken = credential.GetBearerToken();
                    request.Headers["x-acs-bearer-token"] = bearerToken;
                    request.Headers["x-acs-signature-type"] = "BEARERTOKEN";
                    request.Headers["Authorization"] = "Bearer " + bearerToken;
                }
                else if (AlibabaCloud.TeaUtil.Common.EqualString(authType, "id_token"))
                {
                    string idToken = credentialModel.SecurityToken;
                    request.Headers["x-acs-zero-trust-idtoken"] = idToken;
                }
                else
                {
                    string accessKeyId = credentialModel.AccessKeyId;
                    string accessKeySecret = credentialModel.AccessKeySecret;
                    string securityToken = credentialModel.SecurityToken;
                    if (!AlibabaCloud.TeaUtil.Common.Empty(securityToken))
                    {
                        request.Headers["x-acs-accesskey-id"] = accessKeyId;
                        request.Headers["x-acs-security-token"] = securityToken;
                    }
                    string dateNew = AlibabaCloud.DarabonbaString.StringUtil.SubString(date, 0, 10);
                    dateNew = AlibabaCloud.DarabonbaString.StringUtil.Replace(dateNew, "-", "", null);
                    string region = GetRegion(request.ProductId, config.Endpoint, config.RegionId);
                    byte[] signingkey = GetSigningkey(signatureAlgorithm, accessKeySecret, request.ProductId, region, dateNew);
                    request.Headers["Authorization"] = GetAuthorization(request.Pathname, request.Method, request.Query, request.Headers, signatureAlgorithm, hashedRequestPayload, accessKeyId, signingkey, request.ProductId, region, dateNew);
                }
            }
        }