public async Task ModifyRequestAsync()

in alibabacloud-gateway-oss/csharp/core/Client.cs [219:301]


        public async Task ModifyRequestAsync(AlibabaCloud.GatewaySpi.Models.InterceptorContext context, AlibabaCloud.GatewaySpi.Models.AttributeMap attributeMap)
        {
            AlibabaCloud.GatewaySpi.Models.InterceptorContext.InterceptorContextRequest request = context.Request;
            Dictionary<string, string> hostMap = new Dictionary<string, string>(){};
            if (!AlibabaCloud.TeaUtil.Common.IsUnset(request.HostMap))
            {
                hostMap = request.HostMap;
            }
            string bucketName = hostMap.Get("bucket");
            if (AlibabaCloud.TeaUtil.Common.IsUnset(bucketName))
            {
                bucketName = "";
            }
            if (!AlibabaCloud.TeaUtil.Common.IsUnset(request.Headers.Get("x-oss-meta-*")))
            {
                object tmp = AlibabaCloud.TeaUtil.Common.ParseJSON(request.Headers.Get("x-oss-meta-*"));
                Dictionary<string, object> mapData = AlibabaCloud.TeaUtil.Common.AssertAsMap(tmp);
                Dictionary<string, string> metaData = AlibabaCloud.TeaUtil.Common.StringifyMapValue(mapData);
                List<string> metaKeySet = AlibabaCloud.DarabonbaMap.MapUtil.KeySet(metaData);
                request.Headers["x-oss-meta-*"] = null;

                foreach (var key in metaKeySet) {
                    string newKey = "x-oss-meta-" + key;
                    request.Headers[newKey] = metaData.Get(key);
                }
            }
            AlibabaCloud.GatewaySpi.Models.InterceptorContext.InterceptorContextConfiguration config = context.Configuration;
            string regionId = config.RegionId;
            Aliyun.Credentials.Client credential = request.Credential;
            string accessKeyId = await credential.GetAccessKeyIdAsync();
            string accessKeySecret = await credential.GetAccessKeySecretAsync();
            string securityToken = await credential.GetSecurityTokenAsync();
            if (!AlibabaCloud.TeaUtil.Common.Empty(securityToken))
            {
                request.Headers["x-oss-security-token"] = securityToken;
            }
            if (!AlibabaCloud.TeaUtil.Common.IsUnset(request.Body))
            {
                if (AlibabaCloud.DarabonbaString.StringUtil.Equals(request.ReqBodyType, "xml"))
                {
                    Dictionary<string, object> reqBodyMap = AlibabaCloud.TeaUtil.Common.AssertAsMap(request.Body);
                    string xmlStr = AlibabaCloud.TeaXML.Client.ToXML(reqBodyMap);
                    request.Stream = TeaCore.BytesReadable(xmlStr);
                    request.Headers["content-type"] = "application/xml";
                    request.Headers["content-md5"] = AlibabaCloud.DarabonbaEncodeUtil.Encoder.Base64EncodeToString(AlibabaCloud.DarabonbaSignatureUtil.Signer.MD5Sign(xmlStr));
                }
                else if (AlibabaCloud.DarabonbaString.StringUtil.Equals(request.ReqBodyType, "json"))
                {
                    string reqBodyStr = AlibabaCloud.TeaUtil.Common.ToJSONString(request.Body);
                    request.Stream = TeaCore.BytesReadable(reqBodyStr);
                    request.Headers["content-type"] = "application/json; charset=utf-8";
                }
                else if (AlibabaCloud.DarabonbaString.StringUtil.Equals(request.ReqBodyType, "formData"))
                {
                    Dictionary<string, object> reqBodyForm = AlibabaCloud.TeaUtil.Common.AssertAsMap(request.Body);
                    request.Stream = TeaCore.BytesReadable(AlibabaCloud.OpenApiUtil.Client.ToForm(reqBodyForm));
                    request.Headers["content-type"] = "application/x-www-form-urlencoded";
                }
                else if (AlibabaCloud.DarabonbaString.StringUtil.Equals(request.ReqBodyType, "binary"))
                {
                    attributeMap.Key = new Dictionary<string, string>
                    {
                        {"crc", ""},
                        {"md5", ""},
                    };
                    request.Stream = AlibabaCloud.OSSUtil.Common.Inject(request.Stream, attributeMap.Key);
                    request.Headers["content-type"] = "application/octet-stream";
                }
            }
            string host = await GetHostAsync(config.EndpointType, bucketName, config.Endpoint);
            request.Headers = TeaConverter.merge<string>
            (
                new Dictionary<string, string>()
                {
                    {"host", host},
                    {"date", AlibabaCloud.TeaUtil.Common.GetDateUTCString()},
                    {"user-agent", request.UserAgent},
                },
                request.Headers
            );
            string signatureVersion = AlibabaCloud.TeaUtil.Common.DefaultString(request.SignatureVersion, "v1");
            request.Headers["authorization"] = await GetAuthorizationAsync(signatureVersion, bucketName, request.Pathname, request.Method, request.Query, request.Headers, accessKeyId, accessKeySecret, regionId);
        }