mirror of
https://github.com/matrix-org/matrix-spec
synced 2026-04-02 01:04:10 +02:00
Merge pull request #319 from matrix-org/rav/swagger_refs
Improve handling of $ref in swagger files
This commit is contained in:
commit
986f5df82e
|
|
@ -36,15 +36,19 @@ logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
def resolve_references(path, schema):
|
def resolve_references(path, schema):
|
||||||
if isinstance(schema, dict):
|
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():
|
for key, value in schema.items():
|
||||||
if key == "$ref":
|
result[key] = resolve_references(path, value)
|
||||||
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)
|
|
||||||
return result
|
return result
|
||||||
elif isinstance(schema, list):
|
elif isinstance(schema, list):
|
||||||
return [resolve_references(path, value) for value in schema]
|
return [resolve_references(path, value) for value in schema]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue