mirror of
https://github.com/logos-blockchain/logos-blockchain-block-explorer-template.git
synced 2026-02-19 12:33:21 +00:00
37 lines
1017 B
Python
37 lines
1017 B
Python
from functools import partial, update_wrapper
|
|
from os import environ
|
|
from urllib.request import Request
|
|
|
|
from fastapi import APIRouter
|
|
from starlette.responses import JSONResponse, Response
|
|
|
|
from api.router import create_api_router
|
|
from frontend import create_frontend_router
|
|
|
|
|
|
async def _debug_router(_request: Request, *_, router: APIRouter) -> Response:
|
|
content = [
|
|
{
|
|
"path": route.path,
|
|
"name": route.name,
|
|
"methods": list(route.methods),
|
|
}
|
|
for route in router.routes
|
|
]
|
|
return JSONResponse(content)
|
|
|
|
|
|
def create_router() -> APIRouter:
|
|
router = APIRouter()
|
|
|
|
debug_router = partial(_debug_router, router=router)
|
|
update_wrapper(debug_router, _debug_router)
|
|
|
|
router.include_router(create_api_router(), prefix="/api")
|
|
if bool(environ.get("DEBUG")):
|
|
router.add_route("/debug", debug_router)
|
|
|
|
router.include_router(create_frontend_router()) # Needs to go last since it contains a catch-all route
|
|
|
|
return router
|