142 lines
3.2 KiB
Go
142 lines
3.2 KiB
Go
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
|
|
}
|