diff --git a/backend/src/main.py b/backend/src/main.py index cbc0915f..5e55c059 100644 --- a/backend/src/main.py +++ b/backend/src/main.py @@ -1,10 +1,12 @@ import logging import uvicorn -from fastapi import FastAPI +from fastapi import FastAPI, Request +from fastapi.responses import HTMLResponse, RedirectResponse +from fastapi.staticfiles import StaticFiles +from fastapi.templating import Jinja2Templates from module.api import v1 from module.api.proxy import router as proxy_router -from module.api.web import router as web_router from module.conf import settings, setup_logger from starlette.types import ASGIApp @@ -25,11 +27,25 @@ uvicorn_logging_config = { } +def mount_dist(app: ASGIApp): + from module.conf import VERSION + + if VERSION != "DEV_VERSION": + app.mount("/", StaticFiles(directory="dist", html=True), name="dist") + templates = Jinja2Templates(directory="dist") + @app.get("/", response_class=HTMLResponse, tags=["html"]) + def index(request: Request): + return templates.TemplateResponse("index.html", {"request": request}) + else: + @app.get("/", status_code=302, tags=["html"]) + def index(): + return RedirectResponse("/docs") + def create_app() -> ASGIApp: app = FastAPI() - # mount routers - app.include_router(web_router) + # mount dist + mount_dist(app) app.include_router(proxy_router) app.include_router(v1, prefix="/api") diff --git a/backend/src/module/api/web.py b/backend/src/module/api/web.py index 1a4217f9..e69de29b 100644 --- a/backend/src/module/api/web.py +++ b/backend/src/module/api/web.py @@ -1,37 +0,0 @@ -from fastapi import APIRouter, Request -from fastapi.responses import FileResponse, HTMLResponse, RedirectResponse -from fastapi.staticfiles import StaticFiles -from fastapi.templating import Jinja2Templates - -from module.conf import VERSION - -router = APIRouter() - -if VERSION != "DEV_VERSION": - router.mount("/assets", StaticFiles(directory="templates/assets"), name="assets") - templates = Jinja2Templates(directory="templates") - - # Resource - @router.get("/favicon.svg", tags=["html"]) - def favicon(): - return FileResponse("templates/favicon.svg") - - @router.get("/AutoBangumi.svg", tags=["html"]) - def logo(): - return FileResponse("templates/AutoBangumi.svg") - - @router.get("/favicon-light.svg", tags=["html"]) - def favicon_light(): - return FileResponse("templates/favicon-light.svg") - - # HTML Response - @router.get("/{full_path:path}", response_class=HTMLResponse, tags=["html"]) - def index(request: Request): - context = {"request": request} - return templates.TemplateResponse("index.html", context) - -else: - - @router.get("/", status_code=302, tags=["html"]) - def index(): - return RedirectResponse("/docs")