github.com/aavshr/aws-sdk-go@v1.41.3/private/protocol/query/build.go (about) 1 // Package query provides serialization of AWS query requests, and responses. 2 package query 3 4 //go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/input/query.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 query protocol requests 15 var BuildHandler = request.NamedHandler{Name: "awssdk.query.Build", Fn: Build} 16 17 // Build builds a request for an AWS Query service. 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, false); err != nil { 24 r.Error = awserr.New(request.ErrCodeSerialization, "failed encoding Query request", err) 25 return 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 }