in alibabacloud-gateway-fc/csharp/core/Client.cs [320:386]
public void SignRequestForPop(AlibabaCloud.GatewaySpi.Models.InterceptorContext context)
{
AlibabaCloud.GatewaySpi.Models.InterceptorContext.InterceptorContextRequest request = context.Request;
AlibabaCloud.GatewaySpi.Models.InterceptorContext.InterceptorContextConfiguration config = context.Configuration;
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", AlibabaCloud.OpenApiUtil.Client.GetTimestamp()},
{"x-acs-signature-nonce", AlibabaCloud.TeaUtil.Common.GetNonce()},
{"accept", "application/json"},
},
request.Headers
);
string signatureAlgorithm = "ACS3-HMAC-SHA256";
if (!AlibabaCloud.TeaUtil.Common.IsUnset(request.SignatureAlgorithm))
{
signatureAlgorithm = request.SignatureAlgorithm;
}
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";
}
}
}
request.Headers["x-acs-content-sha256"] = hashedRequestPayload;
if (!AlibabaCloud.TeaUtil.Common.EqualString(request.AuthType, "Anonymous"))
{
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-acs-accesskey-id"] = accessKeyId;
request.Headers["x-acs-security-token"] = securityToken;
}
request.Headers["Authorization"] = GetAuthorizationForPop(request.Pathname, request.Method, request.Query, request.Headers, signatureAlgorithm, hashedRequestPayload, accessKeyId, accessKeySecret);
}
}