@@ -54,6 +54,12 @@ def __init__(self, url, username=None, password=None, timeout=60, api_root='rest
54
54
elif cookies is not None :
55
55
self ._session .cookies .update (cookies )
56
56
57
+ def __enter__ (self ):
58
+ return self
59
+
60
+ def __exit__ (self , * _ ):
61
+ self .close ()
62
+
57
63
def _create_basic_session (self , username , password ):
58
64
self ._session .auth = (username , password )
59
65
@@ -89,6 +95,17 @@ def _update_header(self, key, value):
89
95
"""
90
96
self ._session .headers .update ({key : value })
91
97
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
+
92
109
def log_curl_debug (self , method , url , data = None , headers = None , level = logging .DEBUG ):
93
110
"""
94
111
@@ -117,6 +134,9 @@ def url_joiner(url, path, trailing=None):
117
134
url_link += '/'
118
135
return url_link
119
136
137
+ def close (self ):
138
+ return self ._session .close ()
139
+
120
140
def request (self , method = 'GET' , path = '/' , data = None , json = None , flags = None , params = None , headers = None ,
121
141
files = None , trailing = None ):
122
142
"""
@@ -199,28 +219,15 @@ def post(self, path, data=None, json=None, headers=None, files=None, params=None
199
219
trailing = trailing )
200
220
if self .advanced_mode :
201
221
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 )
210
223
211
224
def put (self , path , data = None , headers = None , files = None , trailing = None , params = None ):
212
225
response = self .request ('PUT' , path = path , data = data , headers = headers , files = files , params = params ,
213
226
trailing = trailing )
214
227
if self .advanced_mode :
215
228
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
+
224
231
225
232
def delete (self , path , data = None , headers = None , params = None , trailing = None ):
226
233
"""
@@ -232,11 +239,4 @@ def delete(self, path, data=None, headers=None, params=None, trailing=None):
232
239
response = self .request ('DELETE' , path = path , data = data , headers = headers , params = params , trailing = trailing )
233
240
if self .advanced_mode :
234
241
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