""" Main application entry point for the Enterprise AI Gateway """ import os import time from dotenv import load_dotenv from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from slowapi import Limiter, _rate_limit_exceeded_handler from slowapi.util import get_remote_address from slowapi.errors import RateLimitExceeded from .config import SERVICE_API_KEY, RATE_LIMIT, ALLOWED_ORIGINS from .api.routes import router # Load environment variables load_dotenv() # --- FastAPI App Setup --- app = FastAPI( title="Enterprise AI Gateway", description="Enterprise-grade AI Gateway with security and fallback protocols.", version="1.0.0", docs_url="/docs", redoc_url="/redoc" ) # --- CORS & Rate Limiting --- app.add_middleware( CORSMiddleware, allow_origins=ALLOWED_ORIGINS, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) limiter = Limiter(key_func=get_remote_address, default_limits=[RATE_LIMIT]) app.state.limiter = limiter app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) # --- Routes --- app.include_router(router) if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)