middleware.py 807 B

1234567891011121314151617181920212223
  1. from django.http import HttpResponse
  2. from .codecs import _OpenAPICodec
  3. from .errors import SwaggerValidationError
  4. class SwaggerExceptionMiddleware(object):
  5. def __init__(self, get_response):
  6. self.get_response = get_response
  7. def __call__(self, request):
  8. return self.get_response(request)
  9. def process_exception(self, request, exception):
  10. if isinstance(exception, SwaggerValidationError):
  11. err = {'errors': exception.errors, 'message': str(exception)}
  12. codec = exception.source_codec
  13. if isinstance(codec, _OpenAPICodec):
  14. err = codec.encode_error(err)
  15. content_type = codec.media_type
  16. return HttpResponse(err, status=500, content_type=content_type)
  17. return None # pragma: no cover