@@ -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