import logging from fastapi import FastAPI, Request from fastapi.staticfiles import StaticFiles from fastapi.middleware.cors import CORSMiddleware from starlette.middleware.base import BaseHTTPMiddleware from app.users.router import router as user_router from app.chat.websocket import router as websocket_router from app.images.router import router as image_router # sentry_sdk.init( # dsn=settings.SENTRY_DSN, # traces_sample_rate=1.0, # profiles_sample_rate=1.0, # ) app = FastAPI(title="Чат BP", root_path="/api") app.include_router(websocket_router) app.include_router(user_router) app.include_router(image_router) origins = ["http://localhost:5173"] headers = [ "Content-Type", "Set-Cookie", "Access-Control-Allow-Headers", "Authorization", "Accept", "Access-Control-Allow-Origin", "Sec-WebSocket-Protocol", ] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH"], allow_headers=headers, ) app.mount("/static", StaticFiles(directory="app/static"), name="static") class AddHeaderMiddleware(BaseHTTPMiddleware): async def dispatch(self, request: Request, call_next): logging.critical(f"Запрос \n{request.headers.get("Sec-Websocket-Protocol", "НИХУЯ")}") response = await call_next(request) logging.critical(f"Ответ \n {response.headers.get("Sec-Websocket-Protocol", "НИХУЯ")}") if "Sec-Websocket-Protocol" in request.headers: raise ValueError(request.headers["Sec-Websocket-Protocol"]) response.headers["Sec-Websocket-Protocol"] = request.headers["Sec-Websocket-Protocol"] return response app.add_middleware(AddHeaderMiddleware)