@@ -163,7 +163,10 @@ def api_login(self):
163
163
f"Authentication Error: Encountered an unknown authentication error. Received response code: { response .status_code } , response: { response .content } "
164
164
) from exc
165
165
166
- def make_api_call (self , url : str , headers = None , data = None ) -> reqs .Response :
166
+ def make_api_call (
167
+ self , url : str , headers = None , data = None , login_retry = False , delay = 1
168
+ ) -> reqs .Response :
169
+ response = None
167
170
try :
168
171
if not headers :
169
172
headers = self .headers
@@ -175,23 +178,31 @@ def make_api_call(self, url: str, headers=None, data=None) -> reqs.Response:
175
178
url , headers = headers , data = json .dumps (data )
176
179
)
177
180
response .raise_for_status ()
178
- except reqs . exceptions . HTTPError as exc :
179
- if response .status_code == 401 :
181
+ except Exception as exc :
182
+ if response .status_code == 401 and not login_retry :
180
183
self .api_login ()
181
- if not headers :
182
- headers = self .headers
183
- if not data :
184
- response = self .session .get (url , headers = headers )
185
- else :
186
- headers ["Content-Type" ] = "application/json"
187
- response = self .session .post (
188
- url , headers = headers , data = json .dumps (data )
189
- )
190
- response .raise_for_status ()
184
+ headers = headers or self .headers
185
+ time .sleep (delay )
186
+ response = self .make_api_call (
187
+ url ,
188
+ headers = headers ,
189
+ data = data ,
190
+ login_retry = True ,
191
+ delay = delay ,
192
+ )
191
193
else :
192
- raise WemPortalError (DATA_GATHERING_ERROR ) from exc
193
- except Exception as exc :
194
- raise WemPortalError (DATA_GATHERING_ERROR ) from exc
194
+ try :
195
+ response_data = response .json ()
196
+ # Status we get back from server
197
+ server_status = response_data ["Status" ]
198
+ server_message = response_data ["Message" ]
199
+ raise WemPortalError (
200
+ f"{ DATA_GATHERING_ERROR } Server returned status code: { server_status } and message: { server_message } "
201
+ ) from exc
202
+ # If there is no Status or Message in response
203
+ except KeyError :
204
+ raise WemPortalError (DATA_GATHERING_ERROR ) from exc
205
+
195
206
return response
196
207
197
208
def get_devices (self ):
0 commit comments