from fastapi import FastAPI from fastapi.exception_handlers import request_validation_exception_handler from fastapi.responses import FileResponse from pydantic import ValidationError from slowapi import _rate_limit_exceeded_handler from slowapi.errors import RateLimitExceeded from app.core.config import settings from app.views.router import main_router from app.utils.rate_limiter import limiter app = FastAPI( title=settings.PROJECT_NAME ) app.state.limiter = limiter # app.mount( # '/static', # StaticFiles(directory=settings.MAIN_PATH / 'static'), # name='static' # ) app.include_router(main_router) app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) @app.exception_handler(ValidationError) async def validation_exception_handler(request, exc): return await request_validation_exception_handler(request, exc) @app.exception_handler(404) async def custom_404_handler(_, __): return FileResponse(settings.STATIC_FOLDER / '404.jpg')