lora-scripts/mikazuki/app/application.py

49 lines
1.2 KiB
Python

import os
import mimetypes
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from mikazuki.app.api import router as api_router
from mikazuki.app.proxy import router as proxy_router
mimetypes.add_type("application/javascript", ".js")
mimetypes.add_type("text/css", ".css")
app = FastAPI()
app.include_router(proxy_router)
cors_config = os.environ.get("MIKAZUKI_APP_CORS", "")
if cors_config != "":
if cors_config == "1":
cors_config = ["http://localhost:8004"]
else:
cors_config = cors_config.split(";")
app.add_middleware(
CORSMiddleware,
allow_origins=cors_config,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.middleware("http")
async def add_cache_control_header(request, call_next):
response = await call_next(request)
response.headers["Cache-Control"] = "max-age=0"
return response
app.include_router(api_router, prefix="/api")
@app.get("/")
async def index():
return FileResponse("./frontend/dist/index.html")
app.mount("/", StaticFiles(directory="frontend/dist"), name="static")