from fastapi import FastAPI, Query from fastapi import HTTPException from contextlib import asynccontextmanager from app.enka_logic import EnkaApp from app.akasa_logic import AkasaApp from app.fetch import Fetcher from app.discord_logic import DiscordApp from app.byps_logic import BypsApp from app.gscode_logic import GenshinCodeLogic enka = EnkaApp() akasa = AkasaApp() fetcher = Fetcher() discord_app = DiscordApp() byps = BypsApp() gscode = GenshinCodeLogic() @asynccontextmanager async def lifespan(app: FastAPI): await enka.start() await akasa.start() await fetcher.start() await discord_app.start() await byps.start() await gscode.start() yield await fetcher.stop() await akasa.stop() await enka.stop() await discord_app.stop() await byps.stop() await gscode.stop() app = FastAPI(lifespan=lifespan) @app.get("/info") async def get_info(uid: str): return await enka.fetch_info(uid) @app.get("/gen") async def get_gen(uid: str, char: str = None): return await enka.fetch_gen(uid, char) @app.get("/akasa") async def refresh_akasa(uid: str): return await akasa.refresh_akasha(uid) @app.get("/fetch") async def fetch_url(url: str): return await fetcher.fetch(url) @app.get("/discord-info") async def get_discord_info(uid: str): return await discord_app.get_user_info(uid) @app.get("/api/byps") async def api_bypass(url: str): return await byps.fetch(url) @app.get("/genshin-codes") async def genshin_codes(): return await gscode.fetch_codes() @app.get("/") def home(): return {"status": "online"}