File size: 1,941 Bytes
eac6483 4c68978 272de65 57c2629 5fa5a4a ec410ac a90f20f eac6483 410cc8f 272de65 410cc8f eac6483 a90f20f 410cc8f eac6483 272de65 eac6483 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
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() |