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()