Skip to content

Commit f652be5

Browse files
committed
✨ Feat: added middleware for Limit Upload Size
1 parent f4d6f69 commit f652be5

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

src/paste/middleware.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from starlette import status
2+
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
3+
from starlette.requests import Request
4+
from starlette.responses import Response
5+
from starlette.types import ASGIApp
6+
7+
8+
class LimitUploadSize(BaseHTTPMiddleware):
9+
def __init__(self, app: ASGIApp, max_upload_size: int) -> None:
10+
super().__init__(app)
11+
self.max_upload_size = max_upload_size
12+
13+
async def dispatch(
14+
self, request: Request, call_next: RequestResponseEndpoint
15+
) -> Response:
16+
if request.method == "POST":
17+
if "content-length" not in request.headers:
18+
return Response(status_code=status.HTTP_411_LENGTH_REQUIRED)
19+
content_length = int(request.headers["content-length"])
20+
if content_length > self.max_upload_size:
21+
return Response(
22+
"File is too large",
23+
status_code=status.HTTP_413_REQUEST_ENTITY_TOO_LARGE,
24+
)
25+
return await call_next(request)

0 commit comments

Comments
 (0)