in alibabacloud-gateway-fc/golang/client/client.go [228:296]
func (client *Client) SignRequestForFc(context *spi.InterceptorContext) (_err error) {
request := context.Request
config := context.Configuration
request.Headers = tea.Merge(map[string]*string{
"host": config.Endpoint,
"date": util.GetDateUTCString(),
"accept": tea.String("application/json"),
"user-agent": request.UserAgent,
}, request.Headers)
request.Headers["content-type"] = tea.String("application/json")
if !tea.BoolValue(util.IsUnset(request.Stream)) {
tmp, _err := util.ReadAsBytes(request.Stream)
if _err != nil {
return _err
}
request.Stream = tea.ToReader(tmp)
request.Headers["content-type"] = tea.String("application/octet-stream")
request.Headers["content-md5"] = encodeutil.Base64EncodeToString(signatureutil.MD5SignForBytes(tmp))
} else {
if !tea.BoolValue(util.IsUnset(request.Body)) {
if tea.BoolValue(util.EqualString(request.ReqBodyType, tea.String("json"))) {
jsonObj := util.ToJSONString(request.Body)
request.Stream = tea.ToReader(jsonObj)
request.Headers["content-type"] = tea.String("application/json")
request.Headers["content-md5"] = encodeutil.Base64EncodeToString(signatureutil.MD5Sign(jsonObj))
} else {
m, _err := util.AssertAsMap(request.Body)
if _err != nil {
return _err
}
formObj := openapiutil.ToForm(m)
request.Stream = tea.ToReader(formObj)
request.Headers["content-type"] = tea.String("application/x-www-form-urlencoded")
request.Headers["content-md5"] = encodeutil.Base64EncodeToString(signatureutil.MD5Sign(formObj))
}
}
}
credential := request.Credential
accessKeyId, _err := credential.GetAccessKeyId()
if _err != nil {
return _err
}
accessKeySecret, _err := credential.GetAccessKeySecret()
if _err != nil {
return _err
}
securityToken, _err := credential.GetSecurityToken()
if _err != nil {
return _err
}
if !tea.BoolValue(util.Empty(securityToken)) {
request.Headers["x-fc-security-token"] = securityToken
}
request.Headers["Authorization"], _err = client.GetAuthorizationForFc(request.Pathname, request.Method, request.Query, request.Headers, accessKeyId, accessKeySecret)
if _err != nil {
return _err
}
return _err
}