Skip to content

Commit

Permalink
#118 some code cleanup (be more DRY)
Browse files Browse the repository at this point in the history
  • Loading branch information
hjacobs committed Jan 12, 2016
1 parent bbdeb4d commit 7320ed2
Showing 1 changed file with 18 additions and 20 deletions.
38 changes: 18 additions & 20 deletions connexion/operation.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,11 @@ def validate_defaults(self):

def resolve_reference(self, schema):
schema = deepcopy(schema) # avoid changing the original schema
reference = schema.get('$ref') # type: str
if not reference and 'items' in schema:
reference = schema['items'].get('$ref')
# find the object we need to resolve/update
for obj in schema, schema.get('items'):
reference = obj and obj.get('$ref') # type: str
if reference:
break
if reference:
if not reference.startswith('#/'):
raise InvalidSpecification(
Expand All @@ -141,26 +143,22 @@ def resolve_reference(self, schema):
try:
# Get sub definition
definition = deepcopy(definitions[definition_name])
for prop, prop_spec in definition.get('properties', {}).items():
resolved = self.resolve_reference(prop_spec.get('schema', {}))
if resolved == {}:
resolved = self.resolve_reference(prop_spec)

if not resolved == {}:
definition['properties'][prop] = resolved

# Update schema
if '$ref' in schema:
schema.update(definition)
else:
schema['items'].update(definition)
except KeyError:
raise InvalidSpecification("{method} {path} Definition '{definition_name}' not found".format(
definition_name=definition_name, method=self.method, path=self.path))
if '$ref' in schema:
del schema['$ref']
else:
del schema['items']['$ref']

# resolve object properties too
for prop, prop_spec in definition.get('properties', {}).items():
resolved = self.resolve_reference(prop_spec.get('schema', {}))
if not resolved:
resolved = self.resolve_reference(prop_spec)

if resolved:
definition['properties'][prop] = resolved

# Update schema
obj.update(definition)
del obj['$ref']
return schema

def get_mimetype(self):
Expand Down

0 comments on commit 7320ed2

Please sign in to comment.