2
2
3
3
import logging
4
4
import aiohttp
5
- from .models import OutageSchedule
6
5
import datetime
7
6
import pytz
7
+ from .models import OutageSchedule
8
8
9
9
LOGGER = logging .getLogger (__name__ )
10
10
11
11
12
12
class LoeOutagesApi :
13
13
"""Class to interact with API for Loe outages."""
14
14
15
- schedule : list [OutageSchedule ]
15
+ schedules : list [OutageSchedule ]
16
16
17
17
def __init__ (self , group : str ) -> None :
18
18
"""Initialize the LoeOutagesApi."""
19
19
self .group = group
20
- self .schedule = []
20
+ self .schedules = []
21
21
22
22
async def async_fetch_latest_json (self ) -> dict :
23
23
"""Fetch outages from the async API endpoint."""
@@ -43,36 +43,34 @@ async def async_fetch_all_json(self) -> dict:
43
43
LOGGER .error (f"Failed to fetch schedule: { response .status } " )
44
44
return None
45
45
46
- async def async_fetch_schedule (self ) -> None :
46
+ async def async_fetch_schedules (self ) -> None :
47
47
"""Fetch outages from the JSON response."""
48
- if len (self .schedule ) == 0 :
49
- schedule_data = await self .async_fetch_all_json ()
50
- schedules = OutageSchedule .from_list (schedule_data )
48
+ if len (self .schedules ) == 0 :
49
+ schedules_data = await self .async_fetch_all_json ()
50
+ schedules = OutageSchedule .from_list (schedules_data )
51
51
for schedule in sorted (schedules , key = lambda s : s .date ):
52
- self .schedule .append (schedule )
52
+ self .schedules .append (schedule )
53
53
return
54
54
else :
55
55
schedule_data = await self .async_fetch_latest_json ()
56
56
schedule = OutageSchedule .from_dict (schedule_data )
57
57
58
58
new_schedule = OutageSchedule .from_dict (schedule_data )
59
- self .schedule = [
59
+ self .schedules = [
60
60
item
61
- for item in self .schedule
61
+ for item in self .schedules
62
62
if item .dateString != new_schedule .dateString
63
63
]
64
- self .schedule .append (new_schedule )
65
- self .schedule .sort (key = lambda item : item .dateString )
66
-
67
- self .schedule = sorted (self .schedule , key = lambda s : s .date )
64
+ self .schedules .append (new_schedule )
65
+ self .schedules .sort (key = lambda item : item .date )
68
66
69
67
def get_current_event (self , at : datetime ) -> dict :
70
68
"""Get the current event."""
71
- if not self .schedule :
69
+ if not self .schedules :
72
70
return None
73
71
74
72
twoDaysBefore = datetime .datetime .now () + datetime .timedelta (days = - 2 )
75
- for schedule in reversed (self .schedule ):
73
+ for schedule in reversed (self .schedules ):
76
74
if schedule .date < twoDaysBefore .astimezone (pytz .UTC ):
77
75
return None
78
76
@@ -87,12 +85,12 @@ def get_events(
87
85
end_date : datetime .datetime ,
88
86
) -> list [dict ]:
89
87
"""Get all events."""
90
- if not self .schedule :
88
+ if not self .schedules :
91
89
return []
92
90
93
91
result = []
94
92
twoDaysBeforeStart = start_date + datetime .timedelta (days = - 2 )
95
- for schedule in reversed (self .schedule ):
93
+ for schedule in reversed (self .schedules ):
96
94
if schedule .date < twoDaysBeforeStart :
97
95
break
98
96
0 commit comments