From 7a4050ee4a396a769c5abbc482906e26962137af Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Wed, 25 Feb 2026 10:59:23 +0700 Subject: [PATCH] feat: Add request validation middleware to enforce security and data integrity checks on items_per_page limitation --- src/middleware.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/middleware.py b/src/middleware.py index 5599a59..b226813 100644 --- a/src/middleware.py +++ b/src/middleware.py @@ -152,17 +152,26 @@ class RequestValidationMiddleware(BaseHTTPMiddleware): for key, value in params: if value: inspect_value(value, f"query param '{key}'") - + # Pagination constraint: multiples of 5, max 50 if key in pagination_size_keys and value: try: size_val = int(value) if size_val > 50: - raise HTTPException(status_code=400, detail=f"Pagination size '{key}' cannot exceed 50") + raise HTTPException( + status_code=400, + detail=f"Pagination size '{key}' cannot exceed 50", + ) if size_val % 5 != 0: - raise HTTPException(status_code=400, detail=f"Pagination size '{key}' must be a multiple of 5") + raise HTTPException( + status_code=400, + detail=f"Pagination size '{key}' must be a multiple of 5", + ) except ValueError: - raise HTTPException(status_code=400, detail=f"Pagination size '{key}' must be an integer") + raise HTTPException( + status_code=400, + detail=f"Pagination size '{key}' must be an integer", + ) # ------------------------- # 4. Content-Type sanity