From 3e1261eab74bada1fd1c037df633a50e9a94eef9 Mon Sep 17 00:00:00 2001 From: Munyoki Kilyungi Date: Sun, 25 Feb 2024 17:37:57 +0300 Subject: Correctly handle URLError. Using the `internal_server_error` function to handle URLError raised an exception because the `pnf` exception did not have some attributes. * gn3/errors.py (url_server_error): New function. (register_error_handlers): Register above function to handle URLError. Signed-off-by: Munyoki Kilyungi --- gn3/errors.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gn3/errors.py b/gn3/errors.py index 3752a9a..245c791 100644 --- a/gn3/errors.py +++ b/gn3/errors.py @@ -42,6 +42,14 @@ def internal_server_error(pnf): })), 500 +def url_server_error(pnf): + """Handler for an exception with a url connection.""" + return jsonify(add_trace(pnf, { + "error": f"URLLib Error no: {pnf.reason.errno}", + "error_description": pnf.reason.strerror, + })) + + def handle_authorisation_error(exc: AuthorisationError): """Handle AuthorisationError if not handled anywhere else.""" current_app.logger.error(exc) @@ -92,7 +100,7 @@ def register_error_handlers(app: Flask): app.register_error_handler(OperationalError, handle_sqlite3_errors) app.register_error_handler(AuthorisationError, handle_authorisation_error) app.register_error_handler(RemoteDisconnected, internal_server_error) - app.register_error_handler(URLError, internal_server_error) + app.register_error_handler(URLError, url_server_error) for exc in ( EndPointInternalError, EndPointNotFound, -- cgit v1.2.3