mirror of
https://github.com/matrix-org/matrix-spec
synced 2025-12-20 16:38:37 +01:00
Improve handling of $ref in swagger files
It turns out that swagger merges $refed attributes with those defined inline, so do the same here.
This commit is contained in:
parent
4c46c95d0e
commit
262c9ea113
|
|
@ -36,15 +36,19 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
def resolve_references(path, schema):
|
||||
if isinstance(schema, dict):
|
||||
result = {}
|
||||
# do $ref first
|
||||
if '$ref' in schema:
|
||||
value = schema['$ref']
|
||||
path = os.path.join(os.path.dirname(path), value)
|
||||
with open(path) as f:
|
||||
ref = yaml.load(f)
|
||||
result = resolve_references(path, ref)
|
||||
del schema['$ref']
|
||||
else:
|
||||
result = {}
|
||||
|
||||
for key, value in schema.items():
|
||||
if key == "$ref":
|
||||
path = os.path.join(os.path.dirname(path), value)
|
||||
with open(path) as f:
|
||||
schema = yaml.load(f)
|
||||
return resolve_references(path, schema)
|
||||
else:
|
||||
result[key] = resolve_references(path, value)
|
||||
result[key] = resolve_references(path, value)
|
||||
return result
|
||||
elif isinstance(schema, list):
|
||||
return [resolve_references(path, value) for value in schema]
|
||||
|
|
|
|||
Loading…
Reference in a new issue