Source code for zemfrog.loaders.api

from importlib import import_module

from flask import Blueprint, Flask

from ..helper import get_import_name, import_attr


[docs]def loader(app: Flask): """ A function to load all of your API resources to flask based on the ``APIS`` configuration in config.py. """ apis = app.config.get("APIS", []) import_name = get_import_name(app) api: Blueprint = import_attr(import_name + "apis.api") prefix = "apis." for name in apis: res = name if not name.startswith(prefix): res = prefix + res try: res = import_module(import_name + res) except ImportError: res = import_module(name.lstrip(prefix)) endpoint = res.endpoint url_prefix = res.url_prefix routes = res.routes for detail in routes: route, view, methods = detail url = url_prefix + route e = endpoint + "_" + view.__name__ api.add_url_rule(url, e, view_func=view, methods=methods) app.register_blueprint(api)