| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package request
- import (
- "fmt"
- "net/url"
- "strings"
- "time"
- "github.com/aliyun/credentials-go/credentials/utils"
- )
- // CommonRequest is for requesting credential
- type CommonRequest struct {
- Scheme string
- Method string
- Domain string
- RegionId string
- URL string
- ReadTimeout time.Duration
- ConnectTimeout time.Duration
- isInsecure *bool
- BodyParams map[string]string
- userAgent map[string]string
- QueryParams map[string]string
- Headers map[string]string
- queries string
- }
- // NewCommonRequest returns a CommonRequest
- func NewCommonRequest() *CommonRequest {
- return &CommonRequest{
- BodyParams: make(map[string]string),
- QueryParams: make(map[string]string),
- Headers: make(map[string]string),
- }
- }
- // BuildURL returns a url
- func (request *CommonRequest) BuildURL() string {
- url := fmt.Sprintf("%s://%s", strings.ToLower(request.Scheme), request.Domain)
- request.queries = "/?" + utils.GetURLFormedMap(request.QueryParams)
- return url + request.queries
- }
- // BuildStringToSign returns BuildStringToSign
- func (request *CommonRequest) BuildStringToSign() (stringToSign string) {
- signParams := make(map[string]string)
- for key, value := range request.QueryParams {
- signParams[key] = value
- }
- for key, value := range request.BodyParams {
- signParams[key] = value
- }
- stringToSign = utils.GetURLFormedMap(signParams)
- stringToSign = strings.Replace(stringToSign, "+", "%20", -1)
- stringToSign = strings.Replace(stringToSign, "*", "%2A", -1)
- stringToSign = strings.Replace(stringToSign, "%7E", "~", -1)
- stringToSign = url.QueryEscape(stringToSign)
- stringToSign = request.Method + "&%2F&" + stringToSign
- return
- }
|