in alibabacloud-gateway-oss/csharp/core/Client.cs [135:217]
public void ModifyRequest(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 = credential.GetAccessKeyId();
string accessKeySecret = credential.GetAccessKeySecret();
string securityToken = credential.GetSecurityToken();
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 = GetHost(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"] = GetAuthorization(signatureVersion, bucketName, request.Pathname, request.Method, request.Query, request.Headers, accessKeyId, accessKeySecret, regionId);
}