59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
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)
|
|
|