Codex
Run app through Gradio wrapper
668798e
Raw
History Blame Contribute Delete
1.23 kB
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()
@app.middleware("http")
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
@app.get("/healthz")
def healthz():
return {"ok": True}
@app.get("/favicon.ico", include_in_schema=False)
def favicon():
return Response(status_code=204)
if ASSETS.exists():
app.mount("/assets", StaticFiles(directory=ASSETS), name="assets")
@app.get("/{path:path}", include_in_schema=False)
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)