import logging from contextlib import asynccontextmanager from fastapi import FastAPI from app.routers import image_editing, image_generation, system, tasks, utilities, video_generation from app.services import file_manager, freepik_client from app.services.webhook import router as webhook_router logging.basicConfig( level=logging.INFO, format='%(asctime)s %(levelname)s %(name)s: %(message)s', ) logger = logging.getLogger(__name__) @asynccontextmanager async def lifespan(app: FastAPI): logger.info('Starting Freepik API...') file_manager.ensure_directories() await freepik_client.create_client() logger.info('Freepik API ready') yield logger.info('Shutting down...') await freepik_client.close_client() app = FastAPI( title='Freepik API', version='1.0.0', description='REST API wrapping Freepik cloud AI services', lifespan=lifespan, ) app.include_router(image_generation.router) app.include_router(video_generation.router) app.include_router(image_editing.router) app.include_router(utilities.router) app.include_router(utilities.icon_router) app.include_router(tasks.router) app.include_router(system.router) app.include_router(webhook_router)