]>
Commit | Line | Data |
---|---|---|
1 | // Package query provides serialization of AWS query requests, and responses. | |
2 | package query | |
3 | ||
4 | //go:generate go run -tags codegen ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/input/query.json build_test.go | |
5 | ||
6 | import ( | |
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 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("SerializationError", "failed encoding Query request", err) | |
25 | return | |
26 | } | |
27 | ||
28 | if r.ExpireTime == 0 { | |
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 | } |