57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
|
from apispec.ext.marshmallow import MarshmallowPlugin
|
||
|
from apispec_webframeworks.flask import FlaskPlugin
|
||
|
|
||
|
from flasgger import APISpec, Schema, Swagger, fields
|
||
|
|
||
|
from eligibility_api.elig_api_exceptions import SwaggerValidationException
|
||
|
|
||
|
|
||
|
def _swagger_validation_error_handler(err, data, _):
|
||
|
print("API swagger error 400")
|
||
|
raise SwaggerValidationException(err, data)
|
||
|
|
||
|
|
||
|
def start_swagger(flask_app):
|
||
|
"""
|
||
|
Creates swagger /apidocs endpoint and adds it to flask app
|
||
|
"""
|
||
|
|
||
|
flask_app.config["SWAGGER"] = {
|
||
|
"uiversion": 3,
|
||
|
"ui_params": {
|
||
|
"apisSorter": "alpha",
|
||
|
"operationsSorter": "alpha",
|
||
|
"tagsSorter": "alpha",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
# Create an APISpec
|
||
|
spec = APISpec(
|
||
|
title="API éligibilité",
|
||
|
version="0.1.0",
|
||
|
openapi_version="2.0",
|
||
|
plugins=(
|
||
|
FlaskPlugin(),
|
||
|
MarshmallowPlugin(),
|
||
|
),
|
||
|
)
|
||
|
|
||
|
template = spec.to_flasgger(
|
||
|
flask_app,
|
||
|
definitions=[
|
||
|
# ContributionSchema,
|
||
|
# PredictConfigSchema,
|
||
|
# VersionSchema,
|
||
|
# PredictInputsSchema,
|
||
|
# ImplementedModelSchema,
|
||
|
# ApiErrorSchema,
|
||
|
# LoggingHealthCheckSchema,
|
||
|
],
|
||
|
)
|
||
|
Swagger(
|
||
|
flask_app,
|
||
|
template=template,
|
||
|
parse=True,
|
||
|
validation_error_handler=_swagger_validation_error_handler,
|
||
|
)
|