def get_swagger_blueprint(url_prefix=""): swagger = Blueprint( "eve_swagger", __name__, template_folder="templates", url_prefix=url_prefix ) swagger.additional_documentation = OrderedDict() @swagger.route("/api-docs") @_modify_response def index_json(): return jsonify(_compile_docs(swagger)) @swagger.route("/docs") @_modify_response def index(): return render_template("index.html", spec_url="/api-docs") return swagger
parameters, responses, request_bodies, security_schemes, security, tags, external_docs, headers, links, callbacks, examples, ) from .paths import paths swagger = Blueprint("eve_swagger", __name__, template_folder="templates") swagger.additional_documentation = OrderedDict() def _compile_docs(): def node(parent, key, value): if value: parent[key] = value root = OrderedDict() root["openapi"] = "3.0.0" node(root, "info", info()) node(root, "servers", servers()) node(root, "paths", paths()) components = OrderedDict() node(components, "schemas", definitions())
import re from collections import Mapping from flask import Blueprint, jsonify, make_response, request, \ current_app as app from functools import wraps from eve_swagger import OrderedDict from .definitions import definitions from .objects import info, host, base_path, schemes, consumes, produces, \ parameters, responses, security_definitions, security, tags, \ external_docs from .paths import paths swagger = Blueprint('eve_swagger', __name__) swagger.additional_documentation = OrderedDict() def add_documentation(doc): _nested_update(swagger.additional_documentation, doc) def _modify_response(f): @wraps(f) def decorated(*args, **kwargs): if request.method == 'OPTIONS': resp = app.make_default_options_response() else: resp = make_response(f(*args, **kwargs)) # CORS