Skip to content

Commit d48f9a6

Browse files
committed
Add additional error logging
1 parent 1aef523 commit d48f9a6

3 files changed

Lines changed: 66 additions & 13 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,5 @@ debug.txt
1414

1515
# Visual Studio related files
1616
/.vs/*
17+
18+
.DS_Store

ThermiaOnlineAPI/api/ThermiaAPI.py

Lines changed: 52 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,9 @@ def get_devices(self):
9393
)
9494
return []
9595

96-
return request.json()
96+
return utils.get_response_json_or_log_and_raise_exception(
97+
request, "Error getting devices."
98+
)
9799

98100
def get_device_by_id(self, device_id: str):
99101
self.__check_token_validity()
@@ -124,7 +126,9 @@ def get_device_info(self, device_id: str):
124126
)
125127
return None
126128

127-
return request.json()
129+
return utils.get_response_json_or_log_and_raise_exception(
130+
request, "Error getting device info."
131+
)
128132

129133
def get_device_status(self, device_id: str):
130134
self.__check_token_validity()
@@ -147,7 +151,9 @@ def get_device_status(self, device_id: str):
147151
)
148152
return None
149153

150-
return request.json()
154+
return utils.get_response_json_or_log_and_raise_exception(
155+
request, "Error fetching device status."
156+
)
151157

152158
def get_all_alarms(self, device_id: str):
153159
self.__check_token_validity()
@@ -170,7 +176,9 @@ def get_all_alarms(self, device_id: str):
170176
)
171177
return None
172178

173-
return request.json()
179+
return utils.get_response_json_or_log_and_raise_exception(
180+
request, "Error in getting device's alarms."
181+
)
174182

175183
def get_historical_data_registers(self, device_id: str):
176184
self.__check_token_validity()
@@ -192,7 +200,9 @@ def get_historical_data_registers(self, device_id: str):
192200
)
193201
return None
194202

195-
return request.json()
203+
return utils.get_response_json_or_log_and_raise_exception(
204+
request, "Error in historical data registers."
205+
)
196206

197207
def get_historical_data(
198208
self, device_id: str, register_id, start_date_str, end_date_str
@@ -222,7 +232,9 @@ def get_historical_data(
222232
)
223233
return None
224234

225-
return request.json()
235+
return utils.get_response_json_or_log_and_raise_exception(
236+
request, "Error in historical data for specific register."
237+
)
226238

227239
def get_all_available_groups(self, installation_profile_id: int):
228240
self.__check_token_validity()
@@ -246,7 +258,9 @@ def get_all_available_groups(self, installation_profile_id: int):
246258
)
247259
return None
248260

249-
return request.json()
261+
return utils.get_response_json_or_log_and_raise_exception(
262+
request, "Error in getting available groups."
263+
)
250264

251265
def get__group_temperatures(self, device_id: str):
252266
return self.__get_register_group(device_id, REG_GROUP_TEMPERATURES)
@@ -463,7 +477,9 @@ def __get_register_group(self, device_id: str, register_group: str) -> list:
463477
)
464478
return []
465479

466-
return request.json()
480+
return utils.get_response_json_or_log_and_raise_exception(
481+
request, "Error in getting device's register group: " + register_group
482+
)
467483

468484
def __set_register_value(
469485
self, device: ThermiaHeatPump, register_index: int, register_value: int
@@ -510,7 +526,9 @@ def __fetch_configuration(self):
510526
)
511527
raise NetworkException("Error fetching API configuration.", status)
512528

513-
return request.json()
529+
return utils.get_response_json_or_log_and_raise_exception(
530+
request, "Error fetching API configuration."
531+
)
514532

515533
def __authenticate_refresh_token(self) -> Optional[str]:
516534
request_token__data = {
@@ -584,9 +602,21 @@ def __authenticate(self) -> bool:
584602
settings_string = request_auth.text.split("var SETTINGS = ")
585603
settings_string = settings_string[1].split("};")[0] + "}"
586604
if len(settings_string) > 0:
587-
settings = json.loads(settings_string)
588-
state_code = str(settings["transId"]).split("=")[1]
589-
csrf_token = settings["csrf"]
605+
try:
606+
settings = json.loads(settings_string)
607+
state_code = str(settings["transId"]).split("=")[1]
608+
csrf_token = settings["csrf"]
609+
except Exception as e:
610+
_LOGGER.error(
611+
"Error parsing authorization API settings. "
612+
+ str(request_auth.text),
613+
e,
614+
)
615+
raise NetworkException(
616+
"Error parsing authorization API settings. "
617+
+ request_auth.text,
618+
e,
619+
)
590620
else:
591621
_LOGGER.error(
592622
"Error fetching authorization API. Status: "
@@ -675,7 +705,16 @@ def __authenticate(self) -> bool:
675705

676706
request_token_text = request_token.text
677707

678-
token_data = json.loads(request_token_text)
708+
try:
709+
token_data = json.loads(request_token_text)
710+
except Exception as e:
711+
_LOGGER.error(
712+
"Error parsing authentication token data. " + str(request_token_text),
713+
e,
714+
)
715+
raise NetworkException(
716+
"Error parsing authentication token data. " + request_token_text, e
717+
)
679718

680719
self.__token = token_data["access_token"]
681720
self.__token_valid_to = token_data["expires_on"]

ThermiaOnlineAPI/utils/utils.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
import json
22
from base64 import urlsafe_b64encode
3+
import logging
34
import random
45
import string
56
from typing import Any, TypeVar
67

78
T = TypeVar("T")
89

910

11+
_LOGGER = logging.getLogger(__name__)
12+
13+
1014
def get_dict_value_or_none(dictionary, key) -> Any:
1115
if dictionary is None or key not in dictionary:
1216
return None
@@ -43,3 +47,11 @@ def generate_challenge(length):
4347
characters = string.ascii_letters + string.digits
4448
challenge = "".join(random.choice(characters) for _ in range(length))
4549
return challenge
50+
51+
52+
def get_response_json_or_log_and_raise_exception(response, message: str):
53+
try:
54+
return response.json()
55+
except Exception as e:
56+
_LOGGER.error(f"{message} {response.status_code} {response.text}")
57+
raise Exception(f"{message} {response.status_code} {response.text}") from e

0 commit comments

Comments
 (0)