chwellofficial/nt360Slides
0
1import os2 3from fastapi import FastAPI4from fastapi.middleware.cors import CORSMiddleware5from fastapi.staticfiles import StaticFiles6 7from api.lifespan import app_lifespan8from api.middlewares import SessionAuthMiddleware, UserConfigEnvUpdateMiddleware9from api.v1.auth.router import API_V1_AUTH_ROUTER10from api.v1.mock.router import API_V1_MOCK_ROUTER11from api.v1.ppt.router import API_V1_PPT_ROUTER12from api.v1.webhook.router import API_V1_WEBHOOK_ROUTER13from utils.get_env import get_app_data_directory_env14from utils.path_helpers import get_resource_path15 16app = FastAPI(lifespan=app_lifespan)17 18# Routers19app.include_router(API_V1_PPT_ROUTER)20app.include_router(API_V1_WEBHOOK_ROUTER)21app.include_router(API_V1_MOCK_ROUTER)22app.include_router(API_V1_AUTH_ROUTER)23 24# Mount app_data and static assets (direct FastAPI access; nginx also serves /static in Docker).25app_data_dir = get_app_data_directory_env()26if app_data_dir:27 os.makedirs(app_data_dir, exist_ok=True)28 app.mount("/app_data", StaticFiles(directory=app_data_dir), name="app_data")29 30static_dir = get_resource_path("static")31if os.path.isdir(static_dir):32 app.mount("/static", StaticFiles(directory=static_dir), name="static")33 34# Middlewares35origins = ["*"]36app.add_middleware(37 CORSMiddleware,38 allow_origins=origins,39 allow_credentials=True,40 allow_methods=["*"],41 allow_headers=["*"],42)43 44app.add_middleware(UserConfigEnvUpdateMiddleware)45app.add_middleware(SessionAuthMiddleware)46 