Esempio n. 1
0
def error_handler(error):
    if isinstance(error, AXException):
        data = error.json()
        if isinstance(error, AXApiInvalidParam):
            status_code = 400
        elif isinstance(error, AXApiResourceNotFound):
            status_code = 404
        else:
            status_code = 500
        f = app.logger.exception if status_code == 500 else app.logger.error
        f('Error occurred: code = %s, message = %s, detail = %s', data.get('code'), data.get('message'), data.get('detail'))
    else:
        # If exception is HTTPError, we need to examine its status code to determine
        # if it is client-side error or server-side error
        if isinstance(error, HTTPError):
            if error.response.status_code == 404:
                _error = AXApiResourceNotFound
            elif 400 <= error.response.status_code < 500:
                _error = AXApiInvalidParam
            else:
                _error = AXApiInternalError
        else:
            _error = AXApiInternalError
        data = {
            'code': _error.code,
            'message': str(error),
            'detail': str(error)
        }
        status_code = _error.status_code
        f = app.logger.exception if status_code == 500 else app.logger.error
        f('Error occurred: code = %s, message = %s, detail = %s', data.get('code'), data.get('message'), data.get('detail'))
    return ax_make_response(original_jsonify(data), status_code)
Esempio n. 2
0
File: rest.py Progetto: nuaays/argo
def error_handler(error):
    if isinstance(error, AXException):
        status_code = error.status_code

        error_dict = error.json()
        if status_code != 404:
            _app.logger.exception(error_dict)
        return ax_make_response(original_jsonify(error_dict), status_code)
    data = {"message": str(error), "backtrace": str(traceback.format_exc())}
    if isinstance(error, ValueError) or isinstance(error, KeyError) or isinstance(error, AssertionError):
        _app.logger.exception(str(error))
        status_code = 400
    else:
        _app.logger.exception("Internal error")
        status_code = 400
    return ax_make_response(original_jsonify(data), status_code)
Esempio n. 3
0
def jsonify(*args, **kwargs):
    if current_user.is_authenticated:
        if 'meta' in kwargs:
            kwargs['meta']['csrf_token'] = generate_csrf()
        else:
            kwargs['meta'] = {'csrf_token': generate_csrf()}

    return original_jsonify(*args, **kwargs)
Esempio n. 4
0
def error_handler(error):
    if isinstance(error, AXException):
        if isinstance(error, AXIllegalArgumentException):
            status_code = 400
        elif isinstance(error, AXServiceTemporarilyUnavailableException):
            status_code = 503
        elif isinstance(error, AXIllegalOperationException):
            status_code = 500
        else:
            status_code = 500

        error_dict = error.json()
        _app.logger.exception(error_dict)
        return ax_make_response(original_jsonify(error_dict), status_code)
    data = {"message": str(error), "backtrace": str(traceback.format_exc())}
    if isinstance(error, ValueError):
        _app.logger.warn(str(error))
        status_code = 400
    else:
        _app.logger.exception("Internal error")
        status_code = 500
    return ax_make_response(original_jsonify(data), status_code)
Esempio n. 5
0
def jsonify(*args, **kwargs):
    return ax_make_response(original_jsonify(*args, **kwargs), 200)