1// Package ec2query provides serialization of AWS EC2 requests and responses. 2package 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 6import ( 7 "net/url" 8 9 "github.com/aws/aws-sdk-go/aws/awserr" 10 "github.com/aws/aws-sdk-go/aws/request" 11 "github.com/aws/aws-sdk-go/private/protocol/query/queryutil" 12) 13 14// BuildHandler is a named request handler for building ec2query protocol requests 15var BuildHandler = request.NamedHandler{Name: "awssdk.ec2query.Build", Fn: Build} 16 17// Build builds a request for the EC2 protocol. 18func 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} 37