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"
[docs] def get_headers(self, enviro): super(HTTPExceptionMixin, self).get_headers(enviro) return {'WWW-Authenticate': 'Basic realm="/"'}