@@ -118,12 +118,26 @@ def _create_default_request(self):
118
118
'url_path' : '/' ,
119
119
'query_string' : '' ,
120
120
'method' : self .DEFAULT_METHOD ,
121
- 'headers' : {} ,
121
+ 'headers' : self . headers ,
122
122
# An empty body is represented as an empty byte string.
123
123
'body' : b''
124
124
}
125
125
return serialized
126
126
127
+ def _serialize_not_shape (self , data , parameters ):
128
+ pass
129
+
130
+ def _serialize_data (self , serialized , data ):
131
+
132
+ serialized ['body' ] = data
133
+
134
+ return serialized
135
+
136
+ @property
137
+ def headers (self ):
138
+
139
+ return {}
140
+
127
141
# Some extra utility methods subclasses can use.
128
142
129
143
def _timestamp_iso8601 (self , value ):
@@ -162,7 +176,9 @@ def _get_base64(self, value):
162
176
163
177
164
178
class QuerySerializer (Serializer ):
165
-
179
+ """
180
+ BASE HTTP QUERY REQUEST
181
+ """
166
182
TIMESTAMP_FORMAT = 'iso8601'
167
183
168
184
def serialize_to_request (self , parameters , operation_model ):
@@ -172,12 +188,24 @@ def serialize_to_request(self, parameters, operation_model):
172
188
self .DEFAULT_METHOD )
173
189
# The query serializer only deals with body params so
174
190
# that's what we hand off the _serialize_* methods.
191
+
175
192
body_params = self .MAP_TYPE ()
176
193
body_params ['Action' ] = operation_model .name
177
194
body_params ['Version' ] = operation_model .metadata ['apiVersion' ]
178
195
if shape is not None :
179
196
self ._serialize (body_params , parameters , shape )
180
- serialized ['body' ] = body_params
197
+ else :
198
+ self ._serialize_not_shape (body_params , parameters )
199
+
200
+ return self ._serialize_data (serialized , body_params )
201
+
202
+ def _serialize_not_shape (self , data , parameters ):
203
+ pass
204
+
205
+ def _serialize_data (self , serialized , data ):
206
+
207
+ serialized ['body' ] = data
208
+
181
209
return serialized
182
210
183
211
def _serialize (self , serialized , value , shape , prefix = '' ):
@@ -285,52 +313,74 @@ def _serialize_type_list(self, serialized, value, shape, prefix=''):
285
313
self ._serialize (serialized , element , element_shape , element_prefix )
286
314
287
315
288
- class ResJSONSerializer (QuerySerializer ):
316
+ class QueryAcceptJsonSerializer (QuerySerializer ):
317
+
318
+ @property
319
+ def headers (self ):
320
+ return {"Accept" : 'application/json' }
321
+
322
+ def _serialize_not_shape (self , data , parameters ):
323
+
324
+ data .update (parameters )
325
+
326
+ def _serialize_data (self , serialized , data ):
289
327
290
- def serialize_to_request (self , parameters , operation_model ):
291
- shape = operation_model .input_shape
292
- serialized = self ._create_default_request ()
293
- serialized ['method' ] = operation_model .http .get ('method' ,
294
- self .DEFAULT_METHOD )
295
- # The query serializer only deals with body params so
296
- # that's what we hand off the _serialize_* methods.
297
- body_params = self .MAP_TYPE ()
298
- body_params ['Action' ] = operation_model .name
299
- body_params ['Version' ] = operation_model .metadata ['apiVersion' ]
300
- if shape is not None :
301
- self ._serialize (body_params , parameters , shape )
302
- else :
303
- body_params .update (parameters )
304
328
if serialized ['method' ].lower () == "get" :
305
329
serialized ['body' ] = {}
306
- serialized ['query_string' ] = body_params
330
+ serialized ['query_string' ] = data
307
331
else :
308
- serialized ['body' ] = body_params
332
+ serialized ['body' ] = data
333
+
334
+ return serialized
335
+
336
+
337
+ class KCSSerializer (QueryAcceptJsonSerializer ):
338
+
339
+ def _serialize_data (self , serialized , data ):
309
340
310
- serialized ['headers' ].update (Accept = 'application/json' )
341
+ serialized ['body' ] = {}
342
+
343
+ serialized ['query_string' ] = data
311
344
312
345
return serialized
313
346
314
347
315
348
class JSONSerializer (Serializer ):
349
+ """
350
+ BASE JSON REQUEST all method with json body
351
+ """
316
352
TIMESTAMP_FORMAT = 'unixtimestamp'
317
353
318
354
def serialize_to_request (self , parameters , operation_model ):
319
355
target = '%s.%s' % (operation_model .metadata ['targetPrefix' ],
320
356
operation_model .name )
321
- json_version = operation_model .metadata ['jsonVersion' ]
322
357
serialized = self ._create_default_request ()
323
358
serialized ['method' ] = operation_model .http .get ('method' ,
324
359
self .DEFAULT_METHOD )
360
+
361
+ serialized ['query_string' ] = self .MAP_TYPE (
362
+ Action = operation_model .name , Version = operation_model .metadata ['apiVersion' ]
363
+ )
364
+
325
365
serialized ['headers' ] = {
326
366
'X-Amz-Target' : target ,
327
- 'Content-Type' : 'application/x-amz-json-%s' % json_version ,
367
+ 'Content-Type' : 'application/json' ,
368
+ 'Accept' : 'application/json' ,
369
+
328
370
}
329
371
body = {}
330
372
input_shape = operation_model .input_shape
331
373
if input_shape is not None :
332
374
self ._serialize (body , parameters , input_shape )
333
- serialized ['body' ] = json .dumps (body ).encode (self .DEFAULT_ENCODING )
375
+ else :
376
+ self ._serialize_not_shape (body , parameters )
377
+ return self ._serialize_data (serialized , body )
378
+
379
+ def _serialize_not_shape (self , data , parameters ):
380
+ data .update (parameters )
381
+
382
+ def _serialize_data (self , serialized , data ):
383
+ serialized ['body' ] = json .dumps (data ).encode (self .DEFAULT_ENCODING )
334
384
return serialized
335
385
336
386
def _serialize (self , serialized , value , shape , key = None ):
@@ -383,21 +433,14 @@ def _serialize_type_blob(self, serialized, value, shape, key):
383
433
serialized [key ] = self ._get_base64 (value )
384
434
385
435
386
- class KSJSONSerializer (JSONSerializer ):
436
+ class NotGetJsonSerializer (JSONSerializer ):
387
437
388
- def serialize_to_request (self , parameters , operation_model ):
389
- serialized = JSONSerializer .serialize_to_request (self , parameters , operation_model )
390
- query_params = self .MAP_TYPE ()
391
- query_params ['Action' ] = operation_model .name
392
- query_params ['Version' ] = operation_model .metadata ['apiVersion' ]
393
- serialized ['query_string' ] = query_params
394
- headers = {'Content-Type' : 'application/json' , 'Accept' : 'application/json' }
395
- serialized ['headers' ].update (headers )
396
- body = {}
397
- input_shape = operation_model .input_shape
398
- if input_shape is not None :
399
- self ._serialize (body , parameters , input_shape )
400
- serialized ['body' ] = json .dumps (body ).encode (self .DEFAULT_ENCODING )
438
+ def _serialize_data (self , serialized , data ):
439
+ if serialized ['method' ].lower () == "get" :
440
+ serialized ['body' ] = {}
441
+ serialized ['query_string' ].update (data )
442
+ else :
443
+ serialized ['body' ] = json .dumps (data ).encode (self .DEFAULT_ENCODING )
401
444
return serialized
402
445
403
446
@@ -664,10 +707,12 @@ def _default_serialize(self, xmlnode, params, shape, name):
664
707
665
708
666
709
SERIALIZERS = {
710
+ 'kcs' : KCSSerializer ,
667
711
'ec2' : EC2Serializer ,
668
712
'query' : QuerySerializer ,
669
- 'query-json' : ResJSONSerializer ,
670
- 'json' : KSJSONSerializer ,
713
+ 'query-json' : QueryAcceptJsonSerializer ,
714
+ 'json' : JSONSerializer ,
715
+ 'json2' : NotGetJsonSerializer ,
671
716
'rest-json' : RestJSONSerializer ,
672
717
'rest-xml' : RestXMLSerializer ,
673
718
}
0 commit comments