Files
husanjon ab73d05ecc
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
gold eggs backend
2026-04-15 08:59:36 +02:00

63 lines
1.9 KiB
Python
Executable File

from django.http import response
from core import exceptions
class ExceptionMiddleware:
"""
This class is used to handle exceptions that occur during the request/response cycle.
It is a middleware that is added to the Django middleware pipeline.
"""
def __init__(self, get_response):
"""
Initialize the middleware.
Args:
get_response: The next middleware in the pipeline.
"""
self.get_response = get_response
def __call__(self, request):
"""
This method is called for each request.
It retrieves the response from the next middleware in the pipeline,
and handles any exceptions that occur.
Args:
request: The incoming request.
Returns:
The response from the next middleware in the pipeline.
"""
try:
response = self.get_response(request)
except exceptions.BreakException as e:
return self.process_exception(request, e)
return response
def process_exception(self, request, e):
"""
Process an exception that occurred during the request/response cycle.
Args:
request: The incoming request.
e: The exception that occurred.
Returns:
A JSON response containing information about the exception.
"""
if isinstance(e, exceptions.BreakException):
"""
If the exception is a BreakException, construct a JSON response containing the error message, data, and
any additional arguments passed to the BreakException.
"""
error_data = {
"message": e.message,
"data": e.data,
"errors": [
e.args.__str__(),
],
}
return response.JsonResponse(error_data)