Spaces:
Sleeping
Sleeping
| from pathlib import Path | |
| from fastapi import FastAPI, Response | |
| from fastapi.responses import FileResponse | |
| from fastapi.staticfiles import StaticFiles | |
| import uvicorn | |
| ROOT = Path(__file__).resolve().parent | |
| DIST = ROOT / "dist" | |
| ASSETS = DIST / "assets" | |
| INDEX = DIST / "index.html" | |
| app = FastAPI() | |
| async def add_browser_inference_headers(request, call_next): | |
| response = await call_next(request) | |
| response.headers.setdefault("Cross-Origin-Opener-Policy", "same-origin") | |
| response.headers.setdefault("Cross-Origin-Embedder-Policy", "require-corp") | |
| response.headers.setdefault("Cross-Origin-Resource-Policy", "cross-origin") | |
| return response | |
| def healthz(): | |
| return {"ok": True} | |
| def favicon(): | |
| return Response(status_code=204) | |
| if ASSETS.exists(): | |
| app.mount("/assets", StaticFiles(directory=ASSETS), name="assets") | |
| def serve_app(path: str): | |
| candidate = DIST / path | |
| if path and candidate.is_file(): | |
| return FileResponse(candidate) | |
| return FileResponse(INDEX) | |
| if __name__ == "__main__": | |
| uvicorn.run(app, host="0.0.0.0", port=7860) | |