g4f-demo2 / app.py
hlohaus
Fix g4f demo space
272de65
import os
from fastapi import FastAPI, Response, Request
from fastapi.responses import RedirectResponse
#from g4f.image import images_dir
import g4f.api
import g4f.Provider
import demo
from demo.BackendApi import BackendApi
g4f.Provider.__map__["Feature"] = BackendApi
#g4f.models.demo_models
#from g4f.image import copy_images
def create_app():
g4f.debug.logging = True
g4f.api.AppConfig.gui = True
g4f.api.AppConfig.demo = True
app = FastAPI()
# Add CORS middleware
app.add_middleware(
g4f.api.CORSMiddleware,
allow_origin_regex=".*",
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
api = g4f.api.Api(app)
api.register_routes()
api.register_authorization()
api.register_validation_exception_handler()
# @app.get("/download/{filename}", response_class=RedirectResponse)
# async def download(filename, request: Request):
# filename = os.path.basename(filename)
# if "." not in filename:
# target = os.path.join(images_dir, filename)
# filename = f"{filename}.jpg"
# target = os.path.join(images_dir, filename)
# if not os.path.exists(target):
# url = str(request.query_params).split("url=", 1)[1]
# if url:
# source_url = url.replace("%2F", "/").replace("%3A", ":").replace("%3F", "?")
# await copy_images(
# [source_url],
# target=target,
# ssl=False,
# headers=demo.headers if source_url.startswith(BackendApi.url) else None)
# if not os.path.exists(target):
# return Response(status_code=404)
# return RedirectResponse(f"/images/{filename}")
gui_app = g4f.api.WSGIMiddleware(g4f.api.get_gui_app(g4f.api.AppConfig.demo))
app.mount("/", gui_app)
return app
app = create_app()