gold eggs backend
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
This commit is contained in:
62
core/middlewares/core.py
Executable file
62
core/middlewares/core.py
Executable file
@@ -0,0 +1,62 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user