...

Source file src/github.com/aliyun/credentials-go/credentials/request/common_request.go

Documentation: github.com/aliyun/credentials-go/credentials/request

     1  package request
     2  
     3  import (
     4  	"fmt"
     5  	"net/url"
     6  	"strings"
     7  	"time"
     8  
     9  	"github.com/aliyun/credentials-go/credentials/utils"
    10  )
    11  
    12  // CommonRequest is for requesting credential
    13  type CommonRequest struct {
    14  	Scheme         string
    15  	Method         string
    16  	Domain         string
    17  	RegionId       string
    18  	URL            string
    19  	ReadTimeout    time.Duration
    20  	ConnectTimeout time.Duration
    21  	isInsecure     *bool
    22  	BodyParams     map[string]string
    23  	userAgent      map[string]string
    24  	QueryParams    map[string]string
    25  	Headers        map[string]string
    26  
    27  	queries string
    28  }
    29  
    30  // NewCommonRequest returns a CommonRequest
    31  func NewCommonRequest() *CommonRequest {
    32  	return &CommonRequest{
    33  		BodyParams:  make(map[string]string),
    34  		QueryParams: make(map[string]string),
    35  		Headers:     make(map[string]string),
    36  	}
    37  }
    38  
    39  // BuildURL returns a url
    40  func (request *CommonRequest) BuildURL() string {
    41  	url := fmt.Sprintf("%s://%s", strings.ToLower(request.Scheme), request.Domain)
    42  	request.queries = "/?" + utils.GetURLFormedMap(request.QueryParams)
    43  	return url + request.queries
    44  }
    45  
    46  // BuildStringToSign returns BuildStringToSign
    47  func (request *CommonRequest) BuildStringToSign() (stringToSign string) {
    48  	signParams := make(map[string]string)
    49  	for key, value := range request.QueryParams {
    50  		signParams[key] = value
    51  	}
    52  
    53  	for key, value := range request.BodyParams {
    54  		signParams[key] = value
    55  	}
    56  	stringToSign = utils.GetURLFormedMap(signParams)
    57  	stringToSign = strings.Replace(stringToSign, "+", "%20", -1)
    58  	stringToSign = strings.Replace(stringToSign, "*", "%2A", -1)
    59  	stringToSign = strings.Replace(stringToSign, "%7E", "~", -1)
    60  	stringToSign = url.QueryEscape(stringToSign)
    61  	stringToSign = request.Method + "&%2F&" + stringToSign
    62  	return
    63  }
    64  

View as plain text