Merge pull request #736 from okomestudio/ts/botocore_update
Remove botocore version pinning
This commit is contained in:
commit
721d1b3a3f
7 changed files with 74 additions and 32 deletions
|
|
@ -1,6 +1,7 @@
|
|||
from __future__ import unicode_literals
|
||||
import datetime
|
||||
import json
|
||||
import logging
|
||||
import re
|
||||
|
||||
import pytz
|
||||
|
|
@ -18,6 +19,9 @@ from moto.compat import OrderedDict
|
|||
from moto.core.utils import camelcase_to_underscores, method_names_from_class
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _decode_dict(d):
|
||||
decoded = {}
|
||||
for key, value in d.items():
|
||||
|
|
@ -550,11 +554,20 @@ def xml_to_json_response(service_spec, operation, xml, result_node=None):
|
|||
|
||||
od = OrderedDict()
|
||||
for k, v in value.items():
|
||||
if k.startswith('@') or v is None:
|
||||
if k.startswith('@'):
|
||||
continue
|
||||
|
||||
if k not in spec:
|
||||
# this can happen when with an older version of
|
||||
# botocore for which the node in XML template is not
|
||||
# defined in service spec.
|
||||
log.warning('Field %s is not defined by the botocore version in use', k)
|
||||
continue
|
||||
|
||||
if spec[k]['type'] == 'list':
|
||||
if len(spec[k]['member']) == 1:
|
||||
if v is None:
|
||||
od[k] = []
|
||||
elif len(spec[k]['member']) == 1:
|
||||
if isinstance(v['member'], list):
|
||||
od[k] = transform(v['member'], spec[k]['member'])
|
||||
else:
|
||||
|
|
@ -566,11 +579,22 @@ def xml_to_json_response(service_spec, operation, xml, result_node=None):
|
|||
else:
|
||||
raise ValueError('Malformatted input')
|
||||
elif spec[k]['type'] == 'map':
|
||||
key = from_str(v['entry']['key'], spec[k]['key'])
|
||||
val = from_str(v['entry']['value'], spec[k]['value'])
|
||||
od[k] = {key: val}
|
||||
if v is None:
|
||||
od[k] = {}
|
||||
else:
|
||||
items = ([v['entry']] if not isinstance(v['entry'], list) else
|
||||
v['entry'])
|
||||
for item in items:
|
||||
key = from_str(item['key'], spec[k]['key'])
|
||||
val = from_str(item['value'], spec[k]['value'])
|
||||
if k not in od:
|
||||
od[k] = {}
|
||||
od[k][key] = val
|
||||
else:
|
||||
od[k] = transform(v, spec[k])
|
||||
if v is None:
|
||||
od[k] = None
|
||||
else:
|
||||
od[k] = transform(v, spec[k])
|
||||
return od
|
||||
|
||||
dic = xmltodict.parse(xml)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue