Skip to content

Commit fc230a4

Browse files
author
Tom Reitz
committed
definitions in swagger were renamed to paths in 7.1
1 parent 221b7b6 commit fc230a4

2 files changed

Lines changed: 24 additions & 6 deletions

File tree

lightbeam/api.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -344,12 +344,25 @@ def get_params_for_endpoint(self, endpoint):
344344

345345
def get_required_params_from_swagger(self, swagger, definition, prefix=""):
346346
params = {}
347-
for requiredProperty in swagger["definitions"][definition]["required"]:
348-
if "$ref" in swagger["definitions"][definition]["properties"][requiredProperty].keys():
349-
sub_definition = swagger["definitions"][definition]["properties"][requiredProperty]["$ref"].replace("#/definitions/", "")
347+
use_paths = False
348+
if "definitions" in swagger.keys():
349+
schema = swagger["definitions"][definition]
350+
elif "paths" in swagger.keys():
351+
schema = swagger["paths"][definition]
352+
use_paths = True
353+
else:
354+
self.logger.critical(f"Swagger contains neither `definitions` nor `paths` - check that the Swagger is valid.")
355+
356+
for requiredProperty in schema["required"]:
357+
if "$ref" in schema["properties"][requiredProperty].keys():
358+
sub_definition = schema["properties"][requiredProperty]["$ref"]
359+
if use_paths:
360+
sub_definition = sub_definition.replace("#/paths/", "")
361+
else:
362+
sub_definition = sub_definition.replace("#/definitions/", "")
350363
sub_params = self.get_required_params_from_swagger(swagger, sub_definition, prefix=requiredProperty+".")
351364
for k,v in sub_params.items():
352365
params[k] = v
353-
elif swagger["definitions"][definition]["properties"][requiredProperty]["type"]!="array":
366+
elif schema["properties"][requiredProperty]["type"]!="array":
354367
params[requiredProperty] = prefix + requiredProperty
355368
return params

lightbeam/validate.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,13 @@ def validate(self):
3131
# Validates a single endpoint based on the Swagger docs
3232
def validate_endpoint(self, swagger, endpoint, local_descriptors=[]):
3333
definition = util.camel_case(self.lightbeam.config["namespace"]) + "_" + util.singularize_endpoint(endpoint)
34-
resource_schema = swagger["definitions"][definition]
35-
34+
if "definitions" in swagger.keys():
35+
resource_schema = swagger["definitions"][definition]
36+
elif "paths" in swagger.keys():
37+
resource_schema = swagger["paths"][definition]
38+
else:
39+
self.logger.critical(f"Swagger contains neither `definitions` nor `paths` - check that the Swagger is valid.")
40+
3641
resolver = RefResolver("test", swagger, swagger)
3742
validator = Draft4Validator(resource_schema, resolver=resolver)
3843
params_structure = self.lightbeam.api.get_params_for_endpoint(endpoint)

0 commit comments

Comments
 (0)