Tizen_4.0 base
[platform/upstream/docker-engine.git] / vendor / github.com / aws / aws-sdk-go / private / protocol / query / build.go
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 }