123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- from fastapi import FastAPI, Request
- from fastapi.staticfiles import StaticFiles
- from fastapi import HTTPException
- from fastapi.middleware.wsgi import WSGIMiddleware
- from fastapi.middleware.cors import CORSMiddleware
- from starlette.exceptions import HTTPException as StarletteHTTPException
- from apps.ollama.main import app as ollama_app
- from apps.openai.main import app as openai_app
- from apps.web.main import app as webui_app
- import time
- class SPAStaticFiles(StaticFiles):
- async def get_response(self, path: str, scope):
- 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 = FastAPI()
- origins = ["*"]
- app.add_middleware(
- CORSMiddleware,
- allow_origins=origins,
- allow_credentials=True,
- allow_methods=["*"],
- allow_headers=["*"],
- )
- @app.middleware("http")
- async def check_url(request: Request, call_next):
- start_time = int(time.time())
- response = await call_next(request)
- process_time = int(time.time()) - start_time
- response.headers["X-Process-Time"] = str(process_time)
- return response
- app.mount("/api/v1", webui_app)
- app.mount("/ollama/api", ollama_app)
- app.mount("/openai/api", openai_app)
- app.mount("/",
- SPAStaticFiles(directory="../build", html=True),
- name="spa-static-files")
|