def internal_server_error(error): if current_app.config['PROPOGATE_ERROR'] is True: exc = JsonApiException({'pointer': ''}, str(error)) else: exc = JsonApiException({'pointer': ''}, 'Unknown error') return make_response(json.dumps(jsonapi_errors([exc.to_dict()])), exc.status, {'Content-Type': 'application/vnd.api+json'})
def internal_server_error(error): if current_app.config['PROPOGATE_ERROR'] is True: exc = JsonApiException({'pointer': ''}, str(error)) else: exc = JsonApiException({'pointer': ''}, 'Unknown error') return make_response(json.dumps(jsonapi_errors([exc.to_dict()])), exc.status, {'Content-Type': 'application/vnd.api+json'})
def wrapper(*args, **kwargs): headers = {'Content-Type': 'application/vnd.api+json'} try: return func(*args, **kwargs) except JsonApiException as e: return make_response(jsonify(jsonapi_errors([e.to_dict()])), e.status, headers) except Exception as e: if current_app.config['DEBUG'] is True or current_app.config.get( 'PROPAGATE_EXCEPTIONS') is True: raise if 'sentry' in current_app.extensions: current_app.extensions['sentry'].captureException() exc = JsonApiException(getattr( e, 'detail', current_app.config.get('GLOBAL_ERROR_MESSAGE') or str(e)), source=getattr(e, 'source', ''), title=getattr(e, 'title', None), status=getattr(e, 'status', None), code=getattr(e, 'code', None), id_=getattr(e, 'id', None), links=getattr(e, 'links', None), meta=getattr(e, 'meta', None)) return make_response(jsonify(jsonapi_errors([exc.to_dict()])), exc.status, headers)
def dispatch_request(self, *args, **kwargs): """Logic of how to handle a request""" method = getattr(self, request.method.lower(), None) if method is None and request.method == 'HEAD': method = getattr(self, 'get', None) assert method is not None, 'Unimplemented method {}'.format(request.method) headers = {'Content-Type': 'application/vnd.api+json'} try: response = method(*args, **kwargs) except JsonApiException as e: return make_response(jsonify(jsonapi_errors([e.to_dict()])), e.status, headers) except Exception as e: if current_app.config['DEBUG'] is True: raise e if 'sentry' in current_app.extensions: current_app.extensions['sentry'].captureException() exc = JsonApiException(getattr(e, 'detail', current_app.config.get('GLOBAL_ERROR_MESSAGE') or str(e)), source=getattr(e, 'source', ''), title=getattr(e, 'title', None), status=getattr(e, 'status', None), code=getattr(e, 'code', None), id_=getattr(e, 'id', None), links=getattr(e, 'links', None), meta=getattr(e, 'meta', None)) return make_response(jsonify(jsonapi_errors([exc.to_dict()])), exc.status, headers) if isinstance(response, Response): response.headers.add('Content-Type', 'application/vnd.api+json') return response if not isinstance(response, tuple): if isinstance(response, dict): response.update({'jsonapi': {'version': '1.0'}}) return make_response(jsonify(response), 200, headers) try: data, status_code, headers = response headers.update({'Content-Type': 'application/vnd.api+json'}) except ValueError: pass try: data, status_code = response except ValueError: pass if isinstance(data, dict): data.update({'jsonapi': {'version': '1.0'}}) return make_response(jsonify(data), status_code, headers)
def dispatch_request(self, *args, **kwargs): """Logic of how to handle a request""" method = getattr(self, request.method.lower(), None) if method is None and request.method == 'HEAD': method = getattr(self, 'get', None) assert method is not None, 'Unimplemented method {}'.format( request.method) headers = {'Content-Type': 'application/vnd.api+json'} try: response = method(*args, **kwargs) except JsonApiException as e: return make_response(jsonify(jsonapi_errors([e.to_dict()])), e.status, headers) except Exception as e: if current_app.config['DEBUG'] is True: raise e exc = JsonApiException('', str(e)) return make_response(jsonify(jsonapi_errors([exc.to_dict()])), exc.status, headers) if isinstance(response, Response): response.headers.add('Content-Type', 'application/vnd.api+json') return response if not isinstance(response, tuple): if isinstance(response, dict): response.update({'jsonapi': {'version': '1.0'}}) return make_response(jsonify(response), 200, headers) try: data, status_code, headers = response headers.update({'Content-Type': 'application/vnd.api+json'}) except ValueError: pass try: data, status_code = response except ValueError: pass if isinstance(data, dict): data.update({'jsonapi': {'version': '1.0'}}) return make_response(jsonify(data), status_code, headers)