diff options
author | Max Wittig <max.wittig@siemens.com> | 2018-11-28 19:39:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-28 19:39:58 +0100 |
commit | 7bd41cbf88af87a31ad1943f58c5f7f8295d956b (patch) | |
tree | 2efabf6649eaacebeed2c50c1127dbf55781fcbb | |
parent | 20eb7d8900cdc24c3ea1e7ef2262dca9965a2884 (diff) | |
parent | 1fb1296c9191e57e109c4e5eb9504bce191a6ff1 (diff) | |
download | gitlab-7bd41cbf88af87a31ad1943f58c5f7f8295d956b.tar.gz |
Merge pull request #641 from python-gitlab/refactor/excpetion_msg
Improve error message handling in exceptions
-rw-r--r-- | gitlab/__init__.py | 8 | ||||
-rw-r--r-- | gitlab/exceptions.py | 7 |
2 files changed, 12 insertions, 3 deletions
diff --git a/gitlab/__init__.py b/gitlab/__init__.py index 99ff5c5..477d564 100644 --- a/gitlab/__init__.py +++ b/gitlab/__init__.py @@ -490,10 +490,14 @@ class Gitlab(object): time.sleep(wait_time) continue + error_message = result.content try: - error_message = result.json()['message'] + error_json = result.json() + for k in ('message', 'error'): + if k in error_json: + error_message = error_json[k] except (KeyError, ValueError, TypeError): - error_message = result.content + pass if result.status_code == 401: raise GitlabAuthenticationError( diff --git a/gitlab/exceptions.py b/gitlab/exceptions.py index 650328a..0822d3e 100644 --- a/gitlab/exceptions.py +++ b/gitlab/exceptions.py @@ -28,7 +28,12 @@ class GitlabError(Exception): # Full http response self.response_body = response_body # Parsed error message from gitlab - self.error_message = error_message + try: + # if we receive str/bytes we try to convert to unicode/str to have + # consistent message types (see #616) + self.error_message = error_message.decode() + except Exception: + self.error_message = error_message def __str__(self): if self.response_code is not None: |