31 lines
968 B
Python
31 lines
968 B
Python
# Copyright (c) 2023-present Plane Software, Inc. and contributors
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
# See the LICENSE file for details.
|
|
|
|
from django.core.exceptions import RequestDataTooBig
|
|
from django.http import JsonResponse
|
|
|
|
|
|
class RequestBodySizeLimitMiddleware:
|
|
"""
|
|
Middleware to catch RequestDataTooBig exceptions and return
|
|
413 Request Entity Too Large instead of 400 Bad Request.
|
|
"""
|
|
|
|
def __init__(self, get_response):
|
|
self.get_response = get_response
|
|
|
|
def __call__(self, request):
|
|
try:
|
|
_ = request.body
|
|
except RequestDataTooBig:
|
|
return JsonResponse(
|
|
{
|
|
"error": "REQUEST_BODY_TOO_LARGE",
|
|
"detail": "The size of the request body exceeds the maximum allowed size.",
|
|
},
|
|
status=413,
|
|
)
|
|
|
|
# If body size is OK, continue with the request
|
|
return self.get_response(request)
|