package sdk import ( "strconv" "time" ) const ( signatureHeader string = "x-signature" signatureMethodHeader string = "x-signature-method" signatureVersionHeader string = "x-signature-version" timestampHeader string = "x-timestamp" nonceHeader string = "x-nonce" contentTypeHeader string = "Content-Type" accessKeyIdHeader string = "x-accesskeyid" regionIdHeader string = "x-regionid" timezoneHeader string = "x-timezone" apiVersionHeader string = "x-api-version" securityTokenHeader string = "x-security-token" localeHeader string = "x-locale" hostHeader string = "Host" ) type Params struct { headers map[string]string requestMethod string uri string requestBody string secretKey string } func NewParams() *Params { return &Params{headers: map[string]string{ signatureMethodHeader: "HMAC-SHA256", signatureVersionHeader: "1.0", timestampHeader: time.Now().Format("2006-01-02T15:04:05Z"), nonceHeader: strconv.Itoa(int(time.Now().UnixNano())), contentTypeHeader: "application/json", }} } func (p *Params) Headers() map[string]string { return p.headers } func (p *Params) RequestMethod(requestMethod string) *Params { p.requestMethod = requestMethod return p } func (p *Params) Uri(uri string) *Params { p.uri = uri return p } func (p *Params) RequestBody(requestBody string) *Params { p.requestBody = requestBody return p } func (p *Params) SecretKey(secretKey string) *Params { p.secretKey = secretKey return p } func (p *Params) Signature(signature string) *Params { p.headers[signatureHeader] = signature return p } func (p *Params) RegionId(regionId string) *Params { p.headers[regionIdHeader] = regionId return p } func (p *Params) AccessKeyId(accesskeyId string) *Params { p.headers[accessKeyIdHeader] = accesskeyId return p } func (p *Params) SignatureMethod(signatureMethod string) *Params { p.headers[signatureMethodHeader] = signatureMethod return p } func (p *Params) SignatureVersion(signatureVersion string) *Params { p.headers[signatureVersionHeader] = signatureVersion return p } func (p *Params) Nonce(nonce string) *Params { p.headers[nonceHeader] = nonce return p } func (p *Params) Timestamp(timestamp string) *Params { p.headers[timestampHeader] = timestamp return p } func (p *Params) Timezone(timezone string) *Params { p.headers[timezoneHeader] = timezone return p } func (p *Params) ApiVersion(apiVersion string) *Params { p.headers[apiVersionHeader] = apiVersion return p } func (p *Params) SecurityToken(securityToken string) *Params { p.headers[securityTokenHeader] = securityToken return p } func (p *Params) Locale(locale string) *Params { p.headers[localeHeader] = locale return p } func (p *Params) ContentType(contentType string) *Params { p.headers[contentTypeHeader] = contentType return p } func (p *Params) Host(host string) *Params { p.headers[hostHeader] = host return p } // Deprecated func (p *Params) PutParams(params map[string]string) *Params { return p.PutQueryParams(params) } func (p *Params) PutQueryParams(params map[string]string) *Params { for k, v := range params { p.headers[k] = v } return p }