Source code for db2rest.exceptions
import werkzeug.exceptions as ex
from db2rest.helpers import is_json_request
from simplejson import JSONEncoder as encoder
[docs]class HTTPExceptionMixin(ex.HTTPException):
[docs] def get_response(self, environ):
resp = super(HTTPExceptionMixin, self).get_response(environ)
if is_json_request(environ.get('HTTP_ACCEPT')):
resp.mimetype = environ['HTTP_ACCEPT']
return resp
[docs] def get_body(self, environ=None):
body = super(HTTPExceptionMixin, self).get_body(environ)
if is_json_request(environ.get('HTTP_ACCEPT')):
body = dict(detail=self.body_message)
body = encoder().encode(body)
return body
@property
[docs] def body_message(self):
raise NotImplemented("""The subclass is repsonsibile
to implemet this method""")
[docs]class MethodNotAllowed(ex.MethodNotAllowed, HTTPExceptionMixin):
def __init__(self, description, valid_methods, method):
super(MethodNotAllowed, self).__init__(description=description,
valid_methods=valid_methods)
self.method = method
@property
[docs] def body_message(self):
return "The method %s is not allowed" % self.method.upper()
[docs]class NotFound(ex.NotFound, HTTPExceptionMixin):
@property
[docs] def body_message(self):
return "Resource Not Found"
[docs]class Unauthorized(ex.Unauthorized, HTTPExceptionMixin):
@property
[docs] def body_message(self):
return "Login Required"