123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package requests
- import (
- "bytes"
- "fmt"
- "io"
- "sort"
- "strings"
- )
- type CommonRequest struct {
- *baseRequest
- Version string
- ApiName string
- Product string
- ServiceCode string
- // roa params
- PathPattern string
- PathParams map[string]string
- Ontology AcsRequest
- }
- func NewCommonRequest() (request *CommonRequest) {
- request = &CommonRequest{
- baseRequest: defaultBaseRequest(),
- }
- request.Headers["x-sdk-invoke-type"] = "common"
- request.PathParams = make(map[string]string)
- return
- }
- func (request *CommonRequest) String() string {
- request.TransToAcsRequest()
- resultBuilder := bytes.Buffer{}
- mapOutput := func(m map[string]string) {
- if len(m) > 0 {
- sortedKeys := make([]string, 0)
- for k := range m {
- sortedKeys = append(sortedKeys, k)
- }
- // sort 'string' key in increasing order
- sort.Strings(sortedKeys)
- for _, key := range sortedKeys {
- resultBuilder.WriteString(key + ": " + m[key] + "\n")
- }
- }
- }
- // Request Line
- resultBuilder.WriteString(fmt.Sprintf("%s %s %s/1.1\n", request.Method, request.BuildQueries(), strings.ToUpper(request.Scheme)))
- // Headers
- resultBuilder.WriteString("Host" + ": " + request.Domain + "\n")
- mapOutput(request.Headers)
- resultBuilder.WriteString("\n")
- // Body
- if len(request.Content) > 0 {
- resultBuilder.WriteString(string(request.Content) + "\n")
- } else {
- mapOutput(request.FormParams)
- }
- return resultBuilder.String()
- }
- func (request *CommonRequest) TransToAcsRequest() {
- if len(request.PathPattern) > 0 {
- roaRequest := &RoaRequest{}
- roaRequest.initWithCommonRequest(request)
- request.Ontology = roaRequest
- } else {
- rpcRequest := &RpcRequest{}
- rpcRequest.baseRequest = request.baseRequest
- rpcRequest.product = request.Product
- rpcRequest.version = request.Version
- rpcRequest.locationServiceCode = request.ServiceCode
- rpcRequest.actionName = request.ApiName
- request.Ontology = rpcRequest
- }
- }
- func (request *CommonRequest) BuildUrl() string {
- return request.Ontology.BuildUrl()
- }
- func (request *CommonRequest) BuildQueries() string {
- return request.Ontology.BuildQueries()
- }
- func (request *CommonRequest) GetBodyReader() io.Reader {
- return request.Ontology.GetBodyReader()
- }
- func (request *CommonRequest) GetStyle() string {
- return request.Ontology.GetStyle()
- }
- func (request *CommonRequest) addPathParam(key, value string) {
- request.PathParams[key] = value
- }
|