github.com/aavshr/aws-sdk-go@v1.41.3/private/protocol/ec2query/build.go (about)

     1  // Package ec2query provides serialization of AWS EC2 requests and responses.
     2  package ec2query
     3  
     4  //go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/input/ec2.json build_test.go
     5  
     6  import (
     7  	"net/url"
     8  
     9  	"github.com/aavshr/aws-sdk-go/aws/awserr"
    10  	"github.com/aavshr/aws-sdk-go/aws/request"
    11  	"github.com/aavshr/aws-sdk-go/private/protocol/query/queryutil"
    12  )
    13  
    14  // BuildHandler is a named request handler for building ec2query protocol requests
    15  var BuildHandler = request.NamedHandler{Name: "awssdk.ec2query.Build", Fn: Build}
    16  
    17  // Build builds a request for the EC2 protocol.
    18  func Build(r *request.Request) {
    19  	body := url.Values{
    20  		"Action":  {r.Operation.Name},
    21  		"Version": {r.ClientInfo.APIVersion},
    22  	}
    23  	if err := queryutil.Parse(body, r.Params, true); err != nil {
    24  		r.Error = awserr.New(request.ErrCodeSerialization,
    25  			"failed encoding EC2 Query request", err)
    26  	}
    27  
    28  	if !r.IsPresigned() {
    29  		r.HTTPRequest.Method = "POST"
    30  		r.HTTPRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")
    31  		r.SetBufferBody([]byte(body.Encode()))
    32  	} else { // This is a pre-signed request
    33  		r.HTTPRequest.Method = "GET"
    34  		r.HTTPRequest.URL.RawQuery = body.Encode()
    35  	}
    36  }