@@ -31,12 +31,15 @@ def __call__(self, r):
3131
3232class ApiClient (object ):
3333
34- def __init__ (self , endpoint = None , key = None , ssl_verify = True ):
34+ def __init__ (self , endpoint = None , key = None , timeout = 5.0 , ssl_verify = True ):
3535
3636 self .endpoint = endpoint or os .environ .get ('ALERTA_ENDPOINT' , "http://localhost:8080" )
3737 self .key = key or os .environ .get ('ALERTA_API_KEY' , '' )
38- self . ssl_verify = ssl_verify # or REQUESTS_CA_BUNDLE env var
38+
3939 self .session = requests .Session ()
40+ self .session .verify = ssl_verify # or use REQUESTS_CA_BUNDLE env var
41+
42+ self .timeout = float (timeout )
4043
4144 def __repr__ (self ):
4245
@@ -176,7 +179,12 @@ def _get(self, path, query=None):
176179 query = query or tuple ()
177180
178181 url = self .endpoint + path + '?' + urlencode (query , doseq = True )
179- response = self .session .get (url , auth = ApiAuth (self .key ), verify = self .ssl_verify )
182+
183+ try :
184+ response = self .session .get (url , auth = ApiAuth (self .key ), timeout = self .timeout )
185+ except requests .exceptions .RequestException as e :
186+ LOG .error (e )
187+ sys .exit (1 )
180188
181189 LOG .debug ('Request Headers: %s' , response .request .headers )
182190
@@ -190,7 +198,11 @@ def _post(self, path, data=None):
190198 url = self .endpoint + path
191199 headers = {'Content-Type' : 'application/json' }
192200
193- response = self .session .post (url , data = data , headers = headers , auth = ApiAuth (self .key ), verify = self .ssl_verify )
201+ try :
202+ response = self .session .post (url , data = data , headers = headers , auth = ApiAuth (self .key ), timeout = self .timeout )
203+ except requests .exceptions .RequestException as e :
204+ LOG .error (e )
205+ sys .exit (1 )
194206
195207 LOG .debug ('Request Headers: %s' , response .request .headers )
196208 LOG .debug ('Request Body: %s' , data )
@@ -205,8 +217,11 @@ def _put(self, path, data=None):
205217 url = self .endpoint + path
206218 headers = {'Content-Type' : 'application/json' }
207219
208- response = self .session .put (url , data = data , headers = headers , auth = ApiAuth (self .key ), verify = self .ssl_verify )
209-
220+ try :
221+ response = self .session .put (url , data = data , headers = headers , auth = ApiAuth (self .key ), timeout = self .timeout )
222+ except requests .exceptions .RequestException as e :
223+ LOG .error (e )
224+ sys .exit (1 )
210225 LOG .debug ('Request Headers: %s' , response .request .headers )
211226 LOG .debug ('Request Body: %s' , data )
212227
@@ -218,7 +233,12 @@ def _put(self, path, data=None):
218233 def _delete (self , path ):
219234
220235 url = self .endpoint + path
221- response = self .session .delete (url , auth = ApiAuth (self .key ), verify = self .ssl_verify )
236+
237+ try :
238+ response = self .session .delete (url , auth = ApiAuth (self .key ), timeout = self .timeout )
239+ except requests .exceptions .RequestException as e :
240+ LOG .error (e )
241+ sys .exit (1 )
222242
223243 LOG .debug ('Request Headers: %s' , response .request .headers )
224244
0 commit comments