Spaces:
Running
Running
File size: 882 Bytes
45b1179 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | from starlette.middleware.base import BaseHTTPMiddleware
from starlette.requests import Request
from starlette.responses import JSONResponse, Response
class RequestSizeLimitMiddleware(BaseHTTPMiddleware):
def __init__(self, app, max_body_size: int) -> None:
super().__init__(app)
self._max_body_size = max_body_size
async def dispatch(self, request: Request, call_next) -> Response:
content_length = request.headers.get("content-length")
if content_length and int(content_length) > self._max_body_size:
return JSONResponse(
status_code=413,
content={
"error": {
"code": "request_too_large",
"message": "Request body is too large.",
}
},
)
return await call_next(request)
|