func getSignature()

in util/golang/service/service.go [61:85]


func getSignature(request *tea.Request, accessKeySecret string) string {
	resource := tea.StringValue(request.Pathname)
	if !strings.Contains(resource, "?") && len(request.Query) > 0 {
		resource += "?"
	}
	queryKeys := make([]string, len(request.Query))
	for k,_ := range request.Query {
		queryKeys = append(queryKeys, k)
	}
	sort.Strings(queryKeys)
	for _, key := range queryKeys {
		value := request.Query[key]
		if value != nil {
			tmp := url.QueryEscape(tea.StringValue(value))
			tmp = strings.ReplaceAll(tmp, "'", "%27")
			tmp = strings.ReplaceAll(tmp, "+", "%20")
			if strings.HasSuffix(resource, "?") {
				resource = resource + key + "=" + tmp
			} else {
				resource = resource + "&" + key + "=" + tmp
			}
		}
	}
	return getSignedStr(request, resource, accessKeySecret)
}