mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-13 00:32:16 -05:00
- Created new endpoint user/<user_id>/sms-code to send the sms verification code to the user. - Create new endpoirtn user/<user_id>/email-code to send the email verifcation code to the user. - Marked the old methods, schema, tests with a TODO to be deleted when the admin app is no longer sending messages to /user/<user_id>/code - Added error handlers for DataError and NoResultFound. Data error catches invalid input errors. - Added error handler for SqlAlchemyError which catches any other database errors. - Removed the need for the try catches around the db calls in the user endpoints with the addition of the db error handlers. - We may want to wrap db excpetions in the dao, if we want the No results found message to be more specific and say no result found for user.
52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
from flask import (
|
|
jsonify,
|
|
current_app
|
|
)
|
|
from sqlalchemy.exc import SQLAlchemyError, DataError
|
|
from sqlalchemy.orm.exc import NoResultFound
|
|
|
|
|
|
def register_errors(blueprint):
|
|
|
|
@blueprint.app_errorhandler(400)
|
|
def bad_request(e):
|
|
return jsonify(error=str(e.description)), 400
|
|
|
|
@blueprint.app_errorhandler(401)
|
|
def unauthorized(e):
|
|
error_message = "Unauthorized, authentication token must be provided"
|
|
return jsonify(error=error_message), 401, [('WWW-Authenticate', 'Bearer')]
|
|
|
|
@blueprint.app_errorhandler(403)
|
|
def forbidden(e):
|
|
error_message = "Forbidden, invalid authentication token provided"
|
|
return jsonify(error=error_message), 403
|
|
|
|
@blueprint.app_errorhandler(404)
|
|
def page_not_found(e):
|
|
return jsonify(error=e.description or "Not found"), 404
|
|
|
|
@blueprint.app_errorhandler(429)
|
|
def limit_exceeded(e):
|
|
return jsonify(error=str(e.description)), 429
|
|
|
|
@blueprint.app_errorhandler(500)
|
|
def internal_server_error(e):
|
|
current_app.logger.exception(e)
|
|
return jsonify(error="Internal error"), 500
|
|
|
|
@blueprint.app_errorhandler(NoResultFound)
|
|
def no_result_found(e):
|
|
current_app.logger.error(e)
|
|
return jsonify(error="No result found"), 404
|
|
|
|
@blueprint.app_errorhandler(DataError)
|
|
def no_result_found(e):
|
|
current_app.logger.error(e)
|
|
return jsonify(error="No result found"), 404
|
|
|
|
@blueprint.app_errorhandler(SQLAlchemyError)
|
|
def db_error(e):
|
|
current_app.logger.error(e)
|
|
return jsonify(error="Database error occurred"), 500
|