11# coding=utf-8
22import logging
33import requests
4+ from requests .exceptions import HTTPError
45from json import dumps
56from 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