|
from fastapi import FastAPI, Request |
|
from fastapi.staticfiles import StaticFiles |
|
from starlette.middleware.base import BaseHTTPMiddleware |
|
import uvicorn |
|
import os |
|
|
|
|
|
workspace_dir = "/workspace" |
|
|
|
class WorkspaceDirMiddleware(BaseHTTPMiddleware): |
|
async def dispatch(self, request: Request, call_next): |
|
|
|
if not os.path.exists(workspace_dir): |
|
print(f"Workspace directory {workspace_dir} not found, recreating...") |
|
os.makedirs(workspace_dir, exist_ok=True) |
|
return await call_next(request) |
|
|
|
app = FastAPI() |
|
app.add_middleware(WorkspaceDirMiddleware) |
|
|
|
|
|
os.makedirs(workspace_dir, exist_ok=True) |
|
app.mount('/', StaticFiles(directory=workspace_dir, html=True), name='site') |
|
|
|
|
|
if __name__ == '__main__': |
|
print(f"Starting server with auto-reload, serving files from: {workspace_dir}") |
|
|
|
uvicorn.run("server:app", host="0.0.0.0", port=8080, reload=True) |