Skip to content

Commit 907b8de

Browse files
authored
Support context managers, and improve request methods for rest client (#577)
1 parent d0553d4 commit 907b8de

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

atlassian/rest_client.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ def __init__(self, url, username=None, password=None, timeout=60, api_root='rest
5454
elif cookies is not None:
5555
self._session.cookies.update(cookies)
5656

57+
def __enter__(self):
58+
return self
59+
60+
def __exit__(self, *_):
61+
self.close()
62+
5763
def _create_basic_session(self, username, password):
5864
self._session.auth = (username, password)
5965

@@ -89,6 +95,17 @@ def _update_header(self, key, value):
8995
"""
9096
self._session.headers.update({key: value})
9197

98+
@staticmethod
99+
def _response_handler(response):
100+
try:
101+
return response.json()
102+
except ValueError:
103+
log.debug('Received response with no content')
104+
return None
105+
except Exception as e:
106+
log.error(e)
107+
return None
108+
92109
def log_curl_debug(self, method, url, data=None, headers=None, level=logging.DEBUG):
93110
"""
94111
@@ -117,6 +134,9 @@ def url_joiner(url, path, trailing=None):
117134
url_link += '/'
118135
return url_link
119136

137+
def close(self):
138+
return self._session.close()
139+
120140
def request(self, method='GET', path='/', data=None, json=None, flags=None, params=None, headers=None,
121141
files=None, trailing=None):
122142
"""
@@ -199,28 +219,15 @@ def post(self, path, data=None, json=None, headers=None, files=None, params=None
199219
trailing=trailing)
200220
if self.advanced_mode:
201221
return response
202-
try:
203-
return response.json()
204-
except ValueError:
205-
log.debug('Received response with no content')
206-
return None
207-
except Exception as e:
208-
log.error(e)
209-
return None
222+
return self._response_handler(response)
210223

211224
def put(self, path, data=None, headers=None, files=None, trailing=None, params=None):
212225
response = self.request('PUT', path=path, data=data, headers=headers, files=files, params=params,
213226
trailing=trailing)
214227
if self.advanced_mode:
215228
return response
216-
try:
217-
return response.json()
218-
except ValueError:
219-
log.debug('Received response with no content')
220-
return None
221-
except Exception as e:
222-
log.error(e)
223-
return None
229+
return self._response_handler(response)
230+
224231

225232
def delete(self, path, data=None, headers=None, params=None, trailing=None):
226233
"""
@@ -232,11 +239,4 @@ def delete(self, path, data=None, headers=None, params=None, trailing=None):
232239
response = self.request('DELETE', path=path, data=data, headers=headers, params=params, trailing=trailing)
233240
if self.advanced_mode:
234241
return response
235-
try:
236-
return response.json()
237-
except ValueError:
238-
log.debug('Received response with no content')
239-
return None
240-
except Exception as e:
241-
log.error(e)
242-
return None
242+
return self._response_handler(response)

0 commit comments

Comments
 (0)