from typing import Protocol, cast from hibiapi.app.routes import ( bika, bilibili, netease, pixiv, qrcode, sauce, tieba, wallpaper, ) from hibiapi.utils.config import APIConfig from hibiapi.utils.exceptions import ExceptionReturn from hibiapi.utils.log import logger from hibiapi.utils.routing import SlashRouter router = SlashRouter( responses={ code: { "model": ExceptionReturn, } for code in (400, 422, 500, 502) } ) class RouteInterface(Protocol): router: SlashRouter __mount__: str __config__: APIConfig modules = cast( list[RouteInterface], [bilibili, netease, pixiv, qrcode, sauce, tieba, wallpaper, bika], ) for module in modules: mount = ( mount_point if (mount_point := module.__mount__).startswith("/") else f"/{mount_point}" ) if not module.__config__["enabled"].as_bool(): logger.warning( f"API Route {mount} has been " "disabled in config." ) continue router.include_router(module.router, prefix=mount)