aboutsummaryrefslogtreecommitdiffhomepage
path: root/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go')
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go20
1 files changed, 15 insertions, 5 deletions
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 b80f84f..1301b14 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
@@ -25,6 +25,8 @@ var noEscape [256]bool
25 25
26var errValueNotSet = fmt.Errorf("value not set") 26var errValueNotSet = fmt.Errorf("value not set")
27 27
28var byteSliceType = reflect.TypeOf([]byte{})
29
28func init() { 30func init() {
29 for i := 0; i < len(noEscape); i++ { 31 for i := 0; i < len(noEscape); i++ {
30 // AWS expects every character except these to be escaped 32 // AWS expects every character except these to be escaped
@@ -94,6 +96,14 @@ func buildLocationElements(r *request.Request, v reflect.Value, buildGETQuery bo
94 continue 96 continue
95 } 97 }
96 98
99 // Support the ability to customize values to be marshaled as a
100 // blob even though they were modeled as a string. Required for S3
101 // API operations like SSECustomerKey is modeled as stirng but
102 // required to be base64 encoded in request.
103 if field.Tag.Get("marshal-as") == "blob" {
104 m = m.Convert(byteSliceType)
105 }
106
97 var err error 107 var err error
98 switch field.Tag.Get("location") { 108 switch field.Tag.Get("location") {
99 case "headers": // header maps 109 case "headers": // header maps
@@ -137,7 +147,7 @@ func buildBody(r *request.Request, v reflect.Value) {
137 case string: 147 case string:
138 r.SetStringBody(reader) 148 r.SetStringBody(reader)
139 default: 149 default:
140 r.Error = awserr.New("SerializationError", 150 r.Error = awserr.New(request.ErrCodeSerialization,
141 "failed to encode REST request", 151 "failed to encode REST request",
142 fmt.Errorf("unknown payload type %s", payload.Type())) 152 fmt.Errorf("unknown payload type %s", payload.Type()))
143 } 153 }
@@ -152,7 +162,7 @@ func buildHeader(header *http.Header, v reflect.Value, name string, tag reflect.
152 if err == errValueNotSet { 162 if err == errValueNotSet {
153 return nil 163 return nil
154 } else if err != nil { 164 } else if err != nil {
155 return awserr.New("SerializationError", "failed to encode REST request", err) 165 return awserr.New(request.ErrCodeSerialization, "failed to encode REST request", err)
156 } 166 }
157 167
158 name = strings.TrimSpace(name) 168 name = strings.TrimSpace(name)
@@ -170,7 +180,7 @@ func buildHeaderMap(header *http.Header, v reflect.Value, tag reflect.StructTag)
170 if err == errValueNotSet { 180 if err == errValueNotSet {
171 continue 181 continue
172 } else if err != nil { 182 } else if err != nil {
173 return awserr.New("SerializationError", "failed to encode REST request", err) 183 return awserr.New(request.ErrCodeSerialization, "failed to encode REST request", err)
174 184
175 } 185 }
176 keyStr := strings.TrimSpace(key.String()) 186 keyStr := strings.TrimSpace(key.String())
@@ -186,7 +196,7 @@ func buildURI(u *url.URL, v reflect.Value, name string, tag reflect.StructTag) e
186 if err == errValueNotSet { 196 if err == errValueNotSet {
187 return nil 197 return nil
188 } else if err != nil { 198 } else if err != nil {
189 return awserr.New("SerializationError", "failed to encode REST request", err) 199 return awserr.New(request.ErrCodeSerialization, "failed to encode REST request", err)
190 } 200 }
191 201
192 u.Path = strings.Replace(u.Path, "{"+name+"}", value, -1) 202 u.Path = strings.Replace(u.Path, "{"+name+"}", value, -1)
@@ -219,7 +229,7 @@ func buildQueryString(query url.Values, v reflect.Value, name string, tag reflec
219 if err == errValueNotSet { 229 if err == errValueNotSet {
220 return nil 230 return nil
221 } else if err != nil { 231 } else if err != nil {
222 return awserr.New("SerializationError", "failed to encode REST request", err) 232 return awserr.New(request.ErrCodeSerialization, "failed to encode REST request", err)
223 } 233 }
224 query.Set(name, str) 234 query.Set(name, str)
225 } 235 }