@@ -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,75 +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
309
-
310
- serialized ['headers' ].update (Accept = 'application/json' )
332
+ serialized ['body' ] = data
311
333
312
334
return serialized
313
335
314
336
315
- class KCSSerializer (QuerySerializer ):
337
+ class KCSSerializer (QueryAcceptJsonSerializer ):
316
338
317
- def serialize_to_request (self , parameters , operation_model ):
318
- shape = operation_model .input_shape
319
- serialized = self ._create_default_request ()
320
- serialized ['method' ] = operation_model .http .get ('method' , self .DEFAULT_METHOD )
321
- body_params = self .MAP_TYPE ()
322
- body_params ['Action' ] = operation_model .name
323
- body_params ['Version' ] = operation_model .metadata ['apiVersion' ]
324
- if shape is not None :
325
- self ._serialize (body_params , parameters , shape )
326
- else :
327
- body_params .update (parameters )
328
-
329
- serialized ['query_string' ] = body_params
339
+ def _serialize_data (self , serialized , data ):
330
340
331
341
serialized ['body' ] = {}
332
342
333
- serialized ['headers' ]. update ( Accept = 'application/json' )
343
+ serialized ['query_string' ] = data
334
344
335
345
return serialized
336
346
337
347
338
348
class JSONSerializer (Serializer ):
349
+ """
350
+ BASE JSON REQUEST all method with json body
351
+ """
339
352
TIMESTAMP_FORMAT = 'unixtimestamp'
340
353
341
354
def serialize_to_request (self , parameters , operation_model ):
342
355
target = '%s.%s' % (operation_model .metadata ['targetPrefix' ],
343
356
operation_model .name )
344
- json_version = operation_model .metadata ['jsonVersion' ]
345
357
serialized = self ._create_default_request ()
346
358
serialized ['method' ] = operation_model .http .get ('method' ,
347
359
self .DEFAULT_METHOD )
360
+
361
+ serialized ['query_string' ] = self .MAP_TYPE (
362
+ Action = operation_model .name , Version = operation_model .metadata ['apiVersion' ]
363
+ )
364
+
348
365
serialized ['headers' ] = {
349
366
'X-Amz-Target' : target ,
350
- 'Content-Type' : 'application/x-amz-json-%s' % json_version ,
367
+ 'Content-Type' : 'application/json' ,
368
+ 'Accept' : 'application/json' ,
369
+
351
370
}
352
371
body = {}
353
372
input_shape = operation_model .input_shape
354
373
if input_shape is not None :
355
374
self ._serialize (body , parameters , input_shape )
356
- 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 )
357
384
return serialized
358
385
359
386
def _serialize (self , serialized , value , shape , key = None ):
@@ -406,21 +433,14 @@ def _serialize_type_blob(self, serialized, value, shape, key):
406
433
serialized [key ] = self ._get_base64 (value )
407
434
408
435
409
- class KSJSONSerializer (JSONSerializer ):
436
+ class NotGetJsonSerializer (JSONSerializer ):
410
437
411
- def serialize_to_request (self , parameters , operation_model ):
412
- serialized = JSONSerializer .serialize_to_request (self , parameters , operation_model )
413
- query_params = self .MAP_TYPE ()
414
- query_params ['Action' ] = operation_model .name
415
- query_params ['Version' ] = operation_model .metadata ['apiVersion' ]
416
- serialized ['query_string' ] = query_params
417
- headers = {'Content-Type' : 'application/json' , 'Accept' : 'application/json' }
418
- serialized ['headers' ].update (headers )
419
- body = {}
420
- input_shape = operation_model .input_shape
421
- if input_shape is not None :
422
- self ._serialize (body , parameters , input_shape )
423
- 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 )
424
444
return serialized
425
445
426
446
@@ -690,8 +710,9 @@ def _default_serialize(self, xmlnode, params, shape, name):
690
710
'kcs' : KCSSerializer ,
691
711
'ec2' : EC2Serializer ,
692
712
'query' : QuerySerializer ,
693
- 'query-json' : ResJSONSerializer ,
694
- 'json' : KSJSONSerializer ,
713
+ 'query-json' : QueryAcceptJsonSerializer ,
714
+ 'json' : JSONSerializer ,
715
+ 'json2' : NotGetJsonSerializer ,
695
716
'rest-json' : RestJSONSerializer ,
696
717
'rest-xml' : RestXMLSerializer ,
697
718
}
0 commit comments