From fbe2b7652a82547f94e3c381a0af3b8d2c7da24b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 15 Dec 2017 10:13:04 +0100 Subject: Updated Blender ID add-on to version 1.4.1 - Improved error reporting when validating a token fails due to connection errors. --- blender_id/CHANGELOG.md | 6 ++++++ blender_id/__init__.py | 2 +- blender_id/communication.py | 22 +++++++++++++++------- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/blender_id/CHANGELOG.md b/blender_id/CHANGELOG.md index 8c7709f7..cf62a6e1 100644 --- a/blender_id/CHANGELOG.md +++ b/blender_id/CHANGELOG.md @@ -1,5 +1,11 @@ # Blender ID Add-on Changelog +## Version 1.4.1 (released 2017-12-15) + +- Improved error reporting when validating a token fails due to + connection errors. + + ## Version 1.4 (released 2017-12-05) - Added an extra date/time format for parsing the authentication token expiry date. diff --git a/blender_id/__init__.py b/blender_id/__init__.py index a2026581..73371945 100644 --- a/blender_id/__init__.py +++ b/blender_id/__init__.py @@ -21,7 +21,7 @@ bl_info = { 'name': 'Blender ID authentication', 'author': 'Francesco Siddi, Inês Almeida and Sybren A. Stüvel', - 'version': (1, 4, 0), + 'version': (1, 4, 1), 'blender': (2, 77, 0), 'location': 'Add-on preferences', 'description': diff --git a/blender_id/communication.py b/blender_id/communication.py index 90ccf9a1..5572b637 100644 --- a/blender_id/communication.py +++ b/blender_id/communication.py @@ -19,8 +19,11 @@ # import functools +import logging import typing +log = logging.getLogger(__name__) + class BlenderIdCommError(RuntimeError): """Raised when there was an error communicating with Blender ID""" @@ -84,8 +87,9 @@ def blender_id_server_authenticate(username, password) -> AuthResult: except (requests.exceptions.SSLError, requests.exceptions.HTTPError, requests.exceptions.ConnectionError) as e: - print('Exception POSTing to {}: {}'.format(url, e)) - return AuthResult(status, error_message=e) + msg = 'Exception POSTing to {}: {}'.format(url, e) + print(msg) + return AuthResult(success=False, error_message=msg) if r.status_code == 200: resp = r.json() @@ -117,17 +121,21 @@ def blender_id_server_validate(token) -> typing.Tuple[typing.Optional[str], typi import requests import requests.exceptions + url = blender_id_endpoint('u/validate_token') try: - r = requests.post(blender_id_endpoint('u/validate_token'), - data={'token': token}, verify=True) + r = requests.post(url, data={'token': token}, verify=True) + except requests.exceptions.ConnectionError: + log.exception('error connecting to Blender ID at %s', url) + return None, 'Unable to connect to Blender ID' except requests.exceptions.RequestException as e: - return (str(e), None) + log.exception('error validating token at %s', url) + return None, str(e) if r.status_code != 200: - return (None, 'Authentication token invalid') + return None, 'Authentication token invalid' response = r.json() - return (response['token_expires'], None) + return response['token_expires'], None def blender_id_server_logout(user_id, token): -- cgit v1.2.3