From b376e845560ce4e2f3fa80a08f1d68906f84d8ef Mon Sep 17 00:00:00 2001 From: Nicholas Tindle Date: Thu, 11 Jul 2024 23:25:24 -0500 Subject: [PATCH] feat: partial serving files on built version --- .../autogpt_server/server/server.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/rnd/autogpt_server/autogpt_server/server/server.py b/rnd/autogpt_server/autogpt_server/server/server.py index af04474ec4..1baee7e8b1 100644 --- a/rnd/autogpt_server/autogpt_server/server/server.py +++ b/rnd/autogpt_server/autogpt_server/server/server.py @@ -1,7 +1,9 @@ import asyncio import uuid -from typing import Annotated, Any, Dict +from typing import Annotated, Any, Dict, MutableMapping +from starlette.responses import Response +from starlette.exceptions import HTTPException as StarletteHTTPException import uvicorn from fastapi.responses import JSONResponse from fastapi.staticfiles import StaticFiles @@ -137,9 +139,18 @@ class AgentServer(AppService): app.add_exception_handler(500, self.handle_internal_error) # type: ignore + class SPAStaticFiles(StaticFiles): + async def get_response(self, path: str, scope: MutableMapping[str, Any]) -> Response: + try: + return await super().get_response(path, scope) + except (HTTPException, StarletteHTTPException) as ex: + if ex.status_code == 404: + return await super().get_response("index.html", scope) + else: + raise ex app.mount( - path="/frontend", - app=StaticFiles(directory=get_frontend_path(), html=True), + path="/", + app=SPAStaticFiles(directory=get_frontend_path(), html=True), name="example_files", )