Skip to content

Commit 48d7935

Browse files
authored
Merge pull request #13 from Jurkash/develop
add datatypes
2 parents 1f3199f + 573123f commit 48d7935

File tree

3 files changed

+24
-21
lines changed

3 files changed

+24
-21
lines changed

custom_components/loe_outages/api.py

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@
22

33
import logging
44
import aiohttp
5-
from .models import OutageSchedule
65
import datetime
76
import pytz
7+
from .models import OutageSchedule
88

99
LOGGER = logging.getLogger(__name__)
1010

1111

1212
class LoeOutagesApi:
1313
"""Class to interact with API for Loe outages."""
1414

15-
schedule: list[OutageSchedule]
15+
schedules: list[OutageSchedule]
1616

1717
def __init__(self, group: str) -> None:
1818
"""Initialize the LoeOutagesApi."""
1919
self.group = group
20-
self.schedule = []
20+
self.schedules = []
2121

2222
async def async_fetch_latest_json(self) -> dict:
2323
"""Fetch outages from the async API endpoint."""
@@ -43,36 +43,34 @@ async def async_fetch_all_json(self) -> dict:
4343
LOGGER.error(f"Failed to fetch schedule: {response.status}")
4444
return None
4545

46-
async def async_fetch_schedule(self) -> None:
46+
async def async_fetch_schedules(self) -> None:
4747
"""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)
5151
for schedule in sorted(schedules, key=lambda s: s.date):
52-
self.schedule.append(schedule)
52+
self.schedules.append(schedule)
5353
return
5454
else:
5555
schedule_data = await self.async_fetch_latest_json()
5656
schedule = OutageSchedule.from_dict(schedule_data)
5757

5858
new_schedule = OutageSchedule.from_dict(schedule_data)
59-
self.schedule = [
59+
self.schedules = [
6060
item
61-
for item in self.schedule
61+
for item in self.schedules
6262
if item.dateString != new_schedule.dateString
6363
]
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)
6866

6967
def get_current_event(self, at: datetime) -> dict:
7068
"""Get the current event."""
71-
if not self.schedule:
69+
if not self.schedules:
7270
return None
7371

7472
twoDaysBefore = datetime.datetime.now() + datetime.timedelta(days=-2)
75-
for schedule in reversed(self.schedule):
73+
for schedule in reversed(self.schedules):
7674
if schedule.date < twoDaysBefore.astimezone(pytz.UTC):
7775
return None
7876

@@ -87,12 +85,12 @@ def get_events(
8785
end_date: datetime.datetime,
8886
) -> list[dict]:
8987
"""Get all events."""
90-
if not self.schedule:
88+
if not self.schedules:
9189
return []
9290

9391
result = []
9492
twoDaysBeforeStart = start_date + datetime.timedelta(days=-2)
95-
for schedule in reversed(self.schedule):
93+
for schedule in reversed(self.schedules):
9694
if schedule.date < twoDaysBeforeStart:
9795
break
9896

custom_components/loe_outages/coordinator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ async def _async_update_data(self) -> None:
7676
"""Fetch data from API."""
7777
try:
7878
await self.async_fetch_translations()
79-
return await self.api.async_fetch_schedule()
79+
return await self.api.async_fetch_schedules()
8080
except FileNotFoundError as err:
8181
LOGGER.exception("Cannot read file for group %s", self.group)
8282
msg = f"File not found: {err}"

custom_components/loe_outages/models.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88

99
class Interval:
10-
def __init__(self, state: str, startTime: str, endTime: str):
10+
def __init__(self, state: str, startTime: datetime, endTime: datetime):
1111
self.state = state
1212
self.startTime = startTime
1313
self.endTime = endTime
@@ -49,7 +49,12 @@ def to_dict(self) -> dict:
4949

5050
class OutageSchedule:
5151
def __init__(
52-
self, id: str, date: str, dateString: str, imageUrl: str, groups: List[Group]
52+
self,
53+
id: str,
54+
date: datetime,
55+
dateString: str,
56+
imageUrl: str,
57+
groups: List[Group],
5358
):
5459
self.id = id
5560
self.date = date

0 commit comments

Comments
 (0)