WMS / app.py
amir-salar's picture
Use Starlette static wrapper for Space
8a7459d
Raw
History Blame Contribute Delete
993 Bytes
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)