encode/golang/client/client.go (59 lines of code) (raw):
// This file is auto-generated, don't edit it. Thanks.
/**
* Encode Util for Darabonba.
*/
package client
import (
"crypto/sha256"
"encoding/base64"
"encoding/hex"
u "net/url"
"strings"
"github.com/alibabacloud-go/tea/tea"
"github.com/tjfoc/gmsm/sm3"
)
/**
* Encode the URL
* @param url string
* @return encoded string
*/
func UrlEncode(url *string) (_result *string) {
return tea.String(base64.URLEncoding.EncodeToString([]byte(tea.StringValue(url))))
}
/**
* Special encoding for url params.
* @param params string
* @return encoded string
*/
func PercentEncode(raw *string) (_result *string) {
uri := tea.StringValue(raw)
uri = u.QueryEscape(uri)
uri = strings.Replace(uri, "+", "%20", -1)
uri = strings.Replace(uri, "*", "%2A", -1)
uri = strings.Replace(uri, "%7E", "~", -1)
return tea.String(uri)
}
/**
* Encode the partial path of url.
* @param path string
* @return encoded string
*/
func PathEncode(path *string) (_result *string) {
uri := tea.StringValue(path)
strs := strings.Split(uri, "/")
for i, v := range strs {
strs[i] = u.QueryEscape(v)
}
uri = strings.Join(strs, "/")
uri = strings.Replace(uri, "+", "%20", -1)
uri = strings.Replace(uri, "*", "%2A", -1)
uri = strings.Replace(uri, "%7E", "~", -1)
return tea.String(uri)
}
/**
* Hex encode for byte array.
* @param raw byte array
* @return encoded string
*/
func HexEncode(raw []byte) (_result *string) {
return tea.String(hex.EncodeToString(raw))
}
/**
* Hash the raw data with signatureAlgorithm.
* @param raw hashing data
* @param signatureAlgorithm the autograph method
* @return hashed bytes
*/
func Hash(raw []byte, signatureAlgorithm *string) (_result []byte) {
signType := tea.StringValue(signatureAlgorithm)
if strings.Contains(signType, "HMAC-SHA256") || strings.Contains(signType, "RSA-SHA256") {
h := sha256.New()
h.Write(raw)
return h.Sum(nil)
} else if strings.Contains(signType, "HMAC-SM3") {
h := sm3.New()
h.Write(raw)
return h.Sum(nil)
}
return nil
}
/**
* Base64 encoder for byte array.
* @param raw byte array
* @return encoded string
*/
func Base64EncodeToString(raw []byte) (_result *string) {
return tea.String(base64.StdEncoding.EncodeToString(raw))
}
/**
* Base64 dncoder for string.
* @param src string
* @return dncoded byte array
*/
func Base64Decode(src *string) (_result []byte) {
_result, err := base64.StdEncoding.DecodeString(tea.StringValue(src))
if err != nil {
return
}
return _result
}