def default(self, obj):
"""
"""
if isinstance(obj, dict) and _is_swagger_parameter(obj):
parameter_type = obj.get('format', obj.get('type'))
parameter_schema = obj.get('schema')
parameter_ref = obj.get('$ref')
if parameter_type in SWAGGER_FORMAT_MAPPING:
return SWAGGER_FORMAT_MAPPING[parameter_type]
elif parameter_ref:
return self.transform(self.get_ref(parameter_ref, self.spec))
elif parameter_type == 'array':
if obj['items'].get('enum'):
return st.lists(elements=st.sampled_from(obj['items']['enum']))
elif obj['items'].get('type'):
return st.lists(elements=SWAGGER_FORMAT_MAPPING[obj['items']['type']])
elif obj['items'].get('$ref'):
schema = self.get_ref(obj['items']['$ref'], self.spec)
return st.lists(elements=self.transform(schema))
raise Exception('array', obj)
elif parameter_type == 'object':
properties = {}
for property_name, property_ in obj['properties'].items():
properties[property_name] = self.transform(property_)
return st.fixed_dictionaries(properties)
elif parameter_schema:
if parameter_schema.get('type') == 'array':
schema = self.get_ref(parameter_schema['items']['$ref'], self.spec)
return st.lists(elements=self.transform(schema))
else:
schema = self.get_ref(parameter_schema['$ref'], self.spec)
transformed = self.transform(schema)
return transformed
else:
raise Exception("Invalid", obj, parameter_type)
return obj
评论列表
文章目录