From e64d6dee8e8bb701c1dc0f340d8d1bf1a47c903e Mon Sep 17 00:00:00 2001 From: "kramedavid@gmail.com" Date: Fri, 15 May 2026 10:10:07 +0200 Subject: [PATCH] fix: middleware classes inherit BaseHTTPMiddleware to fix 500 errors on all API requests --- archive/v1/src/middleware/auth.py | 12 +++++++----- archive/v1/src/middleware/rate_limit.py | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/archive/v1/src/middleware/auth.py b/archive/v1/src/middleware/auth.py index 1aee4479..10d72b53 100644 --- a/archive/v1/src/middleware/auth.py +++ b/archive/v1/src/middleware/auth.py @@ -9,6 +9,7 @@ from datetime import datetime, timedelta from fastapi import Request, Response, HTTPException, status from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials +from starlette.middleware.base import BaseHTTPMiddleware from jose import JWTError, jwt from passlib.context import CryptContext @@ -155,16 +156,17 @@ class UserManager: return False -class AuthenticationMiddleware: +class AuthenticationMiddleware(BaseHTTPMiddleware): """Authentication middleware for FastAPI.""" - - def __init__(self, settings: Settings): + + def __init__(self, app, settings: Settings): + super().__init__(app) self.settings = settings self.token_manager = TokenManager(settings) self.user_manager = UserManager() self.enabled = settings.enable_authentication - - async def __call__(self, request: Request, call_next: Callable) -> Response: + + async def dispatch(self, request: Request, call_next: Callable) -> Response: """Process request through authentication middleware.""" start_time = time.time() diff --git a/archive/v1/src/middleware/rate_limit.py b/archive/v1/src/middleware/rate_limit.py index d1b4e461..68217cbb 100644 --- a/archive/v1/src/middleware/rate_limit.py +++ b/archive/v1/src/middleware/rate_limit.py @@ -11,6 +11,7 @@ from collections import defaultdict, deque from dataclasses import dataclass from fastapi import Request, Response, HTTPException, status +from starlette.middleware.base import BaseHTTPMiddleware from starlette.types import ASGIApp from src.config.settings import Settings @@ -299,15 +300,16 @@ class RateLimiter: } -class RateLimitMiddleware: +class RateLimitMiddleware(BaseHTTPMiddleware): """Rate limiting middleware for FastAPI.""" - - def __init__(self, settings: Settings): + + def __init__(self, app, settings: Settings): + super().__init__(app) self.settings = settings self.rate_limiter = RateLimiter(settings) self.enabled = settings.enable_rate_limiting - - async def __call__(self, request: Request, call_next: Callable) -> Response: + + async def dispatch(self, request: Request, call_next: Callable) -> Response: """Process request through rate limiting middleware.""" if not self.enabled: return await call_next(request)