@@ -6,48 +6,62 @@ class FritzRequests():
66 def __init__ (self , prefixed_host : str , max_retries : int , timeout : int , ssl_verify : bool ) -> None :
77 self ._prefixed_host = prefixed_host
88 self ._max_retries = max_retries
9- self ._timeout = timeout
9+ self ._timeout = timeout
1010 self ._ssl_verify = ssl_verify
1111 self ._logger = logging .getLogger ("FritzAdvancedThermostatLogger" )
1212
1313 def _generate_headers (self , data : dict ) -> dict :
14- return {
14+ self ._logger .debug ("Generating headers for the request." )
15+ headers = {
1516 "Accept" : "*/*" ,
1617 "Content-Type" : "application/x-www-form-urlencoded" ,
1718 "Origin" : self ._prefixed_host ,
1819 "Content-Length" : str (len (data )),
1920 "Accept-Language" : "en-GB,en;q=0.9" ,
2021 "Host" : self ._prefixed_host .split ("://" )[1 ],
21- "User-Agent" :
22- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.2 Safari/605.1.15" ,
22+ "User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.2 Safari/605.1.15" ,
2323 "Referer" : self ._prefixed_host ,
2424 "Accept-Encoding" : "gzip, deflate" ,
2525 "Connection" : "keep-alive" ,
2626 }
27+ self ._logger .debug ("Headers generated: %s" , headers )
28+ return headers
2729
2830 def post (self , payload : dict , site : str ) -> dict :
2931 url = f"{ self ._prefixed_host } /{ site } "
32+ self ._logger .info ("Sending POST request to %s" , url )
33+ self ._logger .debug ("Payload: %s" , payload )
34+
3035 retries = 0
3136 while retries <= self ._max_retries :
3237 try :
38+ self ._logger .debug ("Attempt %s of %s" , retries + 1 , self ._max_retries )
3339 response = requests .post (
3440 url ,
3541 headers = self ._generate_headers (payload ),
3642 data = payload ,
37- verify = self ._ssl_verify , timeout = self ._timeout )
43+ verify = self ._ssl_verify ,
44+ timeout = self ._timeout
45+ )
46+ self ._logger .info ("Request successful on attempt %s" , retries + 1 )
3847 break
39- except ConnectionError as e :
40- self ._logger .warning ("Connection Error on loading data" )
48+ except requests . ConnectionError as e :
49+ self ._logger .warning ("Connection Error on attempt %s: %s" , retries + 1 , e )
4150 retries += 1
4251 if retries > self ._max_retries :
43- err = "Tried 3 times, got Connection Error on loading raw thermostat data"
52+ err = "Tried %s times, Connection Error on loading raw thermostat data" % self ._max_retries
53+ self ._logger .error (err )
4454 raise FritzAdvancedThermostatConnectionError (err ) from e
45- self ._logger .warning ("Retry %s of %s" , str (
46- retries ), str (self ._max_retries ))
55+ self ._logger .info ("Retrying request, attempt %s of %s" , retries + 1 , self ._max_retries )
56+
57+ self ._logger .debug ("Received response with status code: %s" , response .status_code )
58+
4759 if response .status_code != requests .codes .ok :
4860 err = "Error: " + str (response .status_code )
49- self ._logger .error (err )
61+ self ._logger .error ("Request failed: %s" , err )
5062 raise FritzAdvancedThermostatConnectionError (err )
63+
64+ self ._logger .debug ("Response received: %s" , response .text )
5165 return response .text
5266
5367class ThermostatDataGenerator ():
0 commit comments