Skip to content

Commit e18df12

Browse files
Halpphstanislavulrych
authored andcommitted
feat(restclient): improved error handling in request
1 parent 204137a commit e18df12

File tree

1 file changed

+24
-35
lines changed

1 file changed

+24
-35
lines changed

tempoapiclient/rest_client.py

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# coding=utf-8
22
import logging
33
import requests
4+
from requests.exceptions import HTTPError
45
from json import dumps
56
from six.moves.urllib.parse import urlencode
67

@@ -36,16 +37,22 @@ def _update_header(self, key, value):
3637
"""
3738
self._session.headers.update({key: value})
3839

39-
@staticmethod
40-
def _response_handler(response):
40+
def _response_handler(self, response):
41+
42+
if self._advanced_mode:
43+
return response
44+
4145
try:
46+
# If the response was successful, no Exception will be raised
47+
response.raise_for_status()
4248
return response.json()
43-
except ValueError:
44-
log.debug('Received response with no content')
45-
return None
46-
except Exception as e:
47-
log.error(e)
48-
return None
49+
50+
except HTTPError as http_err:
51+
log.error(f'HTTP error occurred: {http_err.response.text}')
52+
raise SystemExit(http_err)
53+
except Exception as err:
54+
log.error(err)
55+
raise SystemExit(err)
4956

5057
@staticmethod
5158
def url_joiner(url, path, trailing=None):
@@ -59,7 +66,7 @@ def url_joiner(url, path, trailing=None):
5966
def close(self):
6067
return self._session.close()
6168

62-
def request(self, method='GET', path='/', data=None, json=None, flags=None, params=None, headers=None,
69+
def _request(self, method='GET', path='/', data=None, json=None, flags=None, params=None, headers=None,
6370
files=None, trailing=None):
6471
"""
6572
@@ -101,11 +108,7 @@ def request(self, method='GET', path='/', data=None, json=None, flags=None, para
101108
)
102109
response.encoding = 'utf-8'
103110

104-
if self._advanced_mode:
105-
return response
106-
107111
log.debug("HTTP: {} {} -> {} {}".format(method, path, response.status_code, response.reason))
108-
response.raise_for_status()
109112
return response
110113

111114
def get(self, path, data=None, flags=None, params=None, headers=None, not_json_response=None, trailing=None):
@@ -121,33 +124,20 @@ def get(self, path, data=None, flags=None, params=None, headers=None, not_json_r
121124
:return:
122125
"""
123126

124-
response = self.request('GET', path=path, flags=flags, params=params, data=data, headers=headers,
127+
response = self._request('GET', path=path, flags=flags, params=params, data=data, headers=headers,
125128
trailing=trailing)
126-
if self._advanced_mode:
127-
return response
128-
if not_json_response:
129-
return response.content
130-
else:
131-
if not response.text:
132-
return None
133-
try:
134-
return response.json()
135-
except Exception as e:
136-
log.error(e)
137-
return response.text
129+
130+
return self._response_handler(response)
138131

139132
def post(self, path, data=None, json=None, headers=None, files=None, params=None, trailing=None):
140-
response = self.request('POST', path=path, data=data, json=json, headers=headers, files=files, params=params,
133+
response = self._request('POST', path=path, data=data, json=json, headers=headers, files=files, params=params,
141134
trailing=trailing)
142-
if self._advanced_mode:
143-
return response
135+
144136
return self._response_handler(response)
145137

146138
def put(self, path, data=None, headers=None, files=None, trailing=None, params=None):
147-
response = self.request('PUT', path=path, data=data, headers=headers, files=files, params=params,
139+
response = self._request('PUT', path=path, data=data, headers=headers, files=files, params=params,
148140
trailing=trailing)
149-
if self._advanced_mode:
150-
return response
151141
return self._response_handler(response)
152142

153143

@@ -157,7 +147,6 @@ def delete(self, path, data=None, headers=None, params=None, trailing=None):
157147
:rtype: dict
158148
:return: Empty dictionary to have consistent interface.
159149
"""
160-
response = self.request('DELETE', path=path, data=data, headers=headers, params=params, trailing=trailing)
161-
if self.advanced_mode:
162-
return response
150+
response = self._request('DELETE', path=path, data=data, headers=headers, params=params, trailing=trailing)
151+
163152
return self._response_handler(response)

0 commit comments

Comments
 (0)