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)