Verified Commit 6ee319b4 authored by Dan Jones's avatar Dan Jones
Browse files

refactor: simplify nesting and improve comments

parent e1f6efba
...@@ -112,17 +112,39 @@ swagger_config = { ...@@ -112,17 +112,39 @@ swagger_config = {
def configure_flask(swagger_config): def configure_flask(swagger_config):
"""
Setup a flask app, load flasgger
and then patch to remove invalid
definitions:{} object
"""
app = Flask(__name__) app = Flask(__name__)
Swagger(app, config=swagger_config, merge=True) Swagger(app, config=swagger_config, merge=True)
# Replace schema route to remove invalid
# definitions: {}
# Should be fixed if Flassger 0.9.7 is released
#
# The last release of flasgger was Aug 2020
# This bug was fixed in Nov 2021
# There is a pre-release from May 2023
# Until the fix gets released we have to
# remove the invalid definitions object
# from the spec
@app.after_request @app.after_request
def after_request_decorator(response): def after_request_decorator(response):
if type(response).__name__ == "Response": """
if response.content_type == "application/json": I didn't want to mess with flasgger so
data = response.json this blunt workaround that runs on every
if "definitions" in data: route and then checks whether it's required
del data["definitions"] """
response.data = json.dumps(data) is_response = type(response).__name__ == "Response"
is_json = is_response and response.content_type == "application/json"
if is_json:
parsed = response.json
if "definitions" in parsed:
del parsed["definitions"]
response.data = json.dumps(parsed)
return response return response
...@@ -131,18 +153,8 @@ def configure_flask(swagger_config): ...@@ -131,18 +153,8 @@ def configure_flask(swagger_config):
def serve(swagger_config): def serve(swagger_config):
""" """
Run as local flask app on port 5000 Run as local flask app on FLASK_PORT|5000
""" """
# Replace schema route to remove invalid
# definitions: {}
# Should be fixed if Flassger 0.9.7 is released
#
# The last release of flasgger was Aug 2020
# This bug was fixed in Nov 2021
# There is a pre-release from May 2023
# Until the fix gets released we have to
# remove the invalid definitions object
# from the spec
app = configure_flask(swagger_config) app = configure_flask(swagger_config)
app.run(debug=True, host=FLASK_HOST, port=FLASK_PORT) app.run(debug=True, host=FLASK_HOST, port=FLASK_PORT)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment