Spaces:
Sleeping
Sleeping
| import os | |
| from pathlib import Path | |
| import uvicorn | |
| from starlette.applications import Starlette | |
| from starlette.responses import FileResponse, JSONResponse | |
| from starlette.routing import Mount, Route | |
| from starlette.staticfiles import StaticFiles | |
| ROOT = Path(__file__).resolve().parent | |
| INDEX = ROOT / "index.html" | |
| async def health(_request): | |
| return JSONResponse({"status": "ok", "mode": "static-demo"}) | |
| async def serve_app(request): | |
| path = request.path_params.get("path", "") | |
| requested = (ROOT / path).resolve() | |
| if requested.is_file() and ROOT in requested.parents: | |
| return FileResponse(requested) | |
| return FileResponse(INDEX) | |
| app = Starlette( | |
| debug=False, | |
| routes=[ | |
| Route("/health", health), | |
| Mount("/assets", StaticFiles(directory=ROOT / "assets"), name="assets"), | |
| Route("/{path:path}", serve_app), | |
| ], | |
| ) | |
| if __name__ == "__main__": | |
| port = int(os.environ.get("PORT", "7860")) | |
| uvicorn.run(app, host="0.0.0.0", port=port) | |