aboutsummaryrefslogtreecommitdiffhomepage
path: root/vendor/github.com/aws/aws-sdk-go/private
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/aws/aws-sdk-go/private')
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/host.go68
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go54
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go6
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go14
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go7
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go12
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go14
7 files changed, 162 insertions, 13 deletions
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go
new file mode 100644
index 0000000..d7d42db
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go
@@ -0,0 +1,68 @@
1package protocol
2
3import (
4 "strings"
5
6 "github.com/aws/aws-sdk-go/aws/request"
7)
8
9// ValidateEndpointHostHandler is a request handler that will validate the
10// request endpoint's hosts is a valid RFC 3986 host.
11var ValidateEndpointHostHandler = request.NamedHandler{
12 Name: "awssdk.protocol.ValidateEndpointHostHandler",
13 Fn: func(r *request.Request) {
14 err := ValidateEndpointHost(r.Operation.Name, r.HTTPRequest.URL.Host)
15 if err != nil {
16 r.Error = err
17 }
18 },
19}
20
21// ValidateEndpointHost validates that the host string passed in is a valid RFC
22// 3986 host. Returns error if the host is not valid.
23func ValidateEndpointHost(opName, host string) error {
24 paramErrs := request.ErrInvalidParams{Context: opName}
25 labels := strings.Split(host, ".")
26
27 for i, label := range labels {
28 if i == len(labels)-1 && len(label) == 0 {
29 // Allow trailing dot for FQDN hosts.
30 continue
31 }
32
33 if !ValidHostLabel(label) {
34 paramErrs.Add(request.NewErrParamFormat(
35 "endpoint host label", "[a-zA-Z0-9-]{1,63}", label))
36 }
37 }
38
39 if len(host) > 255 {
40 paramErrs.Add(request.NewErrParamMaxLen(
41 "endpoint host", 255, host,
42 ))
43 }
44
45 if paramErrs.Len() > 0 {
46 return paramErrs
47 }
48 return nil
49}
50
51// ValidHostLabel returns if the label is a valid RFC 3986 host label.
52func ValidHostLabel(label string) bool {
53 if l := len(label); l == 0 || l > 63 {
54 return false
55 }
56 for _, r := range label {
57 switch {
58 case r >= '0' && r <= '9':
59 case r >= 'A' && r <= 'Z':
60 case r >= 'a' && r <= 'z':
61 case r == '-':
62 default:
63 return false
64 }
65 }
66
67 return true
68}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go
new file mode 100644
index 0000000..915b0fc
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go
@@ -0,0 +1,54 @@
1package protocol
2
3import (
4 "strings"
5
6 "github.com/aws/aws-sdk-go/aws"
7 "github.com/aws/aws-sdk-go/aws/request"
8)
9
10// HostPrefixHandlerName is the handler name for the host prefix request
11// handler.
12const HostPrefixHandlerName = "awssdk.endpoint.HostPrefixHandler"
13
14// NewHostPrefixHandler constructs a build handler
15func NewHostPrefixHandler(prefix string, labelsFn func() map[string]string) request.NamedHandler {
16 builder := HostPrefixBuilder{
17 Prefix: prefix,
18 LabelsFn: labelsFn,
19 }
20
21 return request.NamedHandler{
22 Name: HostPrefixHandlerName,
23 Fn: builder.Build,
24 }
25}
26
27// HostPrefixBuilder provides the request handler to expand and prepend
28// the host prefix into the operation's request endpoint host.
29type HostPrefixBuilder struct {
30 Prefix string
31 LabelsFn func() map[string]string
32}
33
34// Build updates the passed in Request with the HostPrefix template expanded.
35func (h HostPrefixBuilder) Build(r *request.Request) {
36 if aws.BoolValue(r.Config.DisableEndpointHostPrefix) {
37 return
38 }
39
40 var labels map[string]string
41 if h.LabelsFn != nil {
42 labels = h.LabelsFn()
43 }
44
45 prefix := h.Prefix
46 for name, value := range labels {
47 prefix = strings.Replace(prefix, "{"+name+"}", value, -1)
48 }
49
50 r.HTTPRequest.URL.Host = prefix + r.HTTPRequest.URL.Host
51 if len(r.HTTPRequest.Host) > 0 {
52 r.HTTPRequest.Host = prefix + r.HTTPRequest.Host
53 }
54}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go
index e0f4d5a..3495c73 100644
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go
+++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go
@@ -23,7 +23,11 @@ func Unmarshal(r *request.Request) {
23 decoder := xml.NewDecoder(r.HTTPResponse.Body) 23 decoder := xml.NewDecoder(r.HTTPResponse.Body)
24 err := xmlutil.UnmarshalXML(r.Data, decoder, r.Operation.Name+"Result") 24 err := xmlutil.UnmarshalXML(r.Data, decoder, r.Operation.Name+"Result")
25 if err != nil { 25 if err != nil {
26 r.Error = awserr.New("SerializationError", "failed decoding Query response", err) 26 r.Error = awserr.NewRequestFailure(
27 awserr.New("SerializationError", "failed decoding Query response", err),
28 r.HTTPResponse.StatusCode,
29 r.RequestID,
30 )
27 return 31 return
28 } 32 }
29 } 33 }
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go
index f214296..46d354e 100644
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go
+++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go
@@ -28,7 +28,11 @@ func UnmarshalError(r *request.Request) {
28 28
29 bodyBytes, err := ioutil.ReadAll(r.HTTPResponse.Body) 29 bodyBytes, err := ioutil.ReadAll(r.HTTPResponse.Body)
30 if err != nil { 30 if err != nil {
31 r.Error = awserr.New("SerializationError", "failed to read from query HTTP response body", err) 31 r.Error = awserr.NewRequestFailure(
32 awserr.New("SerializationError", "failed to read from query HTTP response body", err),
33 r.HTTPResponse.StatusCode,
34 r.RequestID,
35 )
32 return 36 return
33 } 37 }
34 38
@@ -61,6 +65,10 @@ func UnmarshalError(r *request.Request) {
61 } 65 }
62 66
63 // Failed to retrieve any error message from the response body 67 // Failed to retrieve any error message from the response body
64 r.Error = awserr.New("SerializationError", 68 r.Error = awserr.NewRequestFailure(
65 "failed to decode query XML error response", decodeErr) 69 awserr.New("SerializationError",
70 "failed to decode query XML error response", decodeErr),
71 r.HTTPResponse.StatusCode,
72 r.RequestID,
73 )
66} 74}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go
index b34f525..b80f84f 100644
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go
+++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go
@@ -155,6 +155,9 @@ func buildHeader(header *http.Header, v reflect.Value, name string, tag reflect.
155 return awserr.New("SerializationError", "failed to encode REST request", err) 155 return awserr.New("SerializationError", "failed to encode REST request", err)
156 } 156 }
157 157
158 name = strings.TrimSpace(name)
159 str = strings.TrimSpace(str)
160
158 header.Add(name, str) 161 header.Add(name, str)
159 162
160 return nil 163 return nil
@@ -170,8 +173,10 @@ func buildHeaderMap(header *http.Header, v reflect.Value, tag reflect.StructTag)
170 return awserr.New("SerializationError", "failed to encode REST request", err) 173 return awserr.New("SerializationError", "failed to encode REST request", err)
171 174
172 } 175 }
176 keyStr := strings.TrimSpace(key.String())
177 str = strings.TrimSpace(str)
173 178
174 header.Add(prefix+key.String(), str) 179 header.Add(prefix+keyStr, str)
175 } 180 }
176 return nil 181 return nil
177} 182}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go
index 7bdf4c8..b0f4e24 100644
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go
+++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go
@@ -36,7 +36,11 @@ func Build(r *request.Request) {
36 var buf bytes.Buffer 36 var buf bytes.Buffer
37 err := xmlutil.BuildXML(r.Params, xml.NewEncoder(&buf)) 37 err := xmlutil.BuildXML(r.Params, xml.NewEncoder(&buf))
38 if err != nil { 38 if err != nil {
39 r.Error = awserr.New("SerializationError", "failed to encode rest XML request", err) 39 r.Error = awserr.NewRequestFailure(
40 awserr.New("SerializationError", "failed to encode rest XML request", err),
41 r.HTTPResponse.StatusCode,
42 r.RequestID,
43 )
40 return 44 return
41 } 45 }
42 r.SetBufferBody(buf.Bytes()) 46 r.SetBufferBody(buf.Bytes())
@@ -50,7 +54,11 @@ func Unmarshal(r *request.Request) {
50 decoder := xml.NewDecoder(r.HTTPResponse.Body) 54 decoder := xml.NewDecoder(r.HTTPResponse.Body)
51 err := xmlutil.UnmarshalXML(r.Data, decoder, "") 55 err := xmlutil.UnmarshalXML(r.Data, decoder, "")
52 if err != nil { 56 if err != nil {
53 r.Error = awserr.New("SerializationError", "failed to decode REST XML response", err) 57 r.Error = awserr.NewRequestFailure(
58 awserr.New("SerializationError", "failed to decode REST XML response", err),
59 r.HTTPResponse.StatusCode,
60 r.RequestID,
61 )
54 return 62 return
55 } 63 }
56 } else { 64 } else {
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go
index 07764c8..cf981fe 100644
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go
+++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go
@@ -87,15 +87,13 @@ func (b *xmlBuilder) buildValue(value reflect.Value, current *XMLNode, tag refle
87 } 87 }
88} 88}
89 89
90// buildStruct adds a struct and its fields to the current XMLNode. All fields any any nested 90// buildStruct adds a struct and its fields to the current XMLNode. All fields and any nested
91// types are converted to XMLNodes also. 91// types are converted to XMLNodes also.
92func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag reflect.StructTag) error { 92func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
93 if !value.IsValid() { 93 if !value.IsValid() {
94 return nil 94 return nil
95 } 95 }
96 96
97 fieldAdded := false
98
99 // unwrap payloads 97 // unwrap payloads
100 if payload := tag.Get("payload"); payload != "" { 98 if payload := tag.Get("payload"); payload != "" {
101 field, _ := value.Type().FieldByName(payload) 99 field, _ := value.Type().FieldByName(payload)
@@ -123,6 +121,8 @@ func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag refl
123 child.Attr = append(child.Attr, ns) 121 child.Attr = append(child.Attr, ns)
124 } 122 }
125 123
124 var payloadFields, nonPayloadFields int
125
126 t := value.Type() 126 t := value.Type()
127 for i := 0; i < value.NumField(); i++ { 127 for i := 0; i < value.NumField(); i++ {
128 member := elemOf(value.Field(i)) 128 member := elemOf(value.Field(i))
@@ -137,8 +137,10 @@ func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag refl
137 137
138 mTag := field.Tag 138 mTag := field.Tag
139 if mTag.Get("location") != "" { // skip non-body members 139 if mTag.Get("location") != "" { // skip non-body members
140 nonPayloadFields++
140 continue 141 continue
141 } 142 }
143 payloadFields++
142 144
143 if protocol.CanSetIdempotencyToken(value.Field(i), field) { 145 if protocol.CanSetIdempotencyToken(value.Field(i), field) {
144 token := protocol.GetIdempotencyToken() 146 token := protocol.GetIdempotencyToken()
@@ -153,11 +155,11 @@ func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag refl
153 if err := b.buildValue(member, child, mTag); err != nil { 155 if err := b.buildValue(member, child, mTag); err != nil {
154 return err 156 return err
155 } 157 }
156
157 fieldAdded = true
158 } 158 }
159 159
160 if fieldAdded { // only append this child if we have one ore more valid members 160 // Only case where the child shape is not added is if the shape only contains
161 // non-payload fields, e.g headers/query.
162 if !(payloadFields == 0 && nonPayloadFields > 0) {
161 current.AddChild(child) 163 current.AddChild(child)
162 } 164 }
163 165