Skip to content

Commit

Permalink
bug fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
felix-zenk committed Sep 2, 2022
1 parent 4e1cd1b commit 0495f1f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 19 deletions.
2 changes: 1 addition & 1 deletion onboardapis/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

__project_name__ = 'onboardapis'
__description__ = 'A pure Python wrapper for the on-board APIs of many different transportation providers'
__version__ = '1.0.0'
__version__ = '1.1.0'
__author__ = 'Felix Zenk'
__email__ = '[email protected]'
__license__ = 'MIT'
Expand Down
38 changes: 20 additions & 18 deletions onboardapis/trains/germany/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
InternetStatus = Literal["NO_INFO", "NO_INTERNET", "UNSTABLE", "WEAK", "MIDDLE", "HIGH"]


class _IceportalStaticConnector(StaticDataConnector, JSONDataConnector):
class _ICEPortalStaticConnector(StaticDataConnector, JSONDataConnector):
__slots__ = []

def __init__(self):
Expand All @@ -25,7 +25,7 @@ def refresh(self):
self.store("bap", self._get("/bap/api/bap-service-status"))


class _IceportalDynamicConnector(DynamicDataConnector, JSONDataConnector):
class _ICEPortalDynamicConnector(DynamicDataConnector, JSONDataConnector):
__slots__ = ["_connections"]

def __init__(self):
Expand Down Expand Up @@ -84,12 +84,12 @@ class ICEPortal(Train):

def __init__(self):
super().__init__()
self._static_data = _IceportalStaticConnector()
self._dynamic_data = _IceportalDynamicConnector()
self._static_data = _ICEPortalStaticConnector()
self._dynamic_data = _ICEPortalDynamicConnector()

def now(self) -> datetime.datetime:
return datetime.datetime.fromtimestamp(
some_or_default(self._dynamic_data.load("status", {}).get('serverTime', None), default=0)
int(some_or_default(self._dynamic_data.load("status", {}).get('serverTime', None), default=0)) / 1000
)

@property
Expand Down Expand Up @@ -118,19 +118,19 @@ def stations(self) -> Dict[str, Station]:
),
arrival=ScheduledEvent(
scheduled=datetime.datetime.fromtimestamp(
some_or_default(stop.get('timetable', {}).get('scheduledArrivalTime'), default=0)
),
int(some_or_default(stop.get('timetable', {}).get('scheduledArrivalTime'), default=0)) / 1000
) if some_or_default(stop.get('timetable', {}).get('scheduledArrivalTime')) is not None else None,
actual=datetime.datetime.fromtimestamp(
some_or_default(stop.get('timetable', {}).get('actualArrivalTime'), default=0)
),
(some_or_default(stop.get('timetable', {}).get('actualArrivalTime'), default=0)) / 1000
) if some_or_default(stop.get('timetable', {}).get('actualArrivalTime')) is not None else None,
),
departure=ScheduledEvent(
scheduled=datetime.datetime.fromtimestamp(
some_or_default(stop.get('timetable', {}).get('scheduledDepartureTime'), default=0)
),
int(some_or_default(stop.get('timetable', {}).get('scheduledDepartureTime'), default=0)) / 1000
) if some_or_default(stop.get('timetable', {}).get('scheduledDepartureTime')) is not None else None,
actual=datetime.datetime.fromtimestamp(
some_or_default(stop.get('timetable', {}).get('actualDepartureTime'), default=0)
),
int(some_or_default(stop.get('timetable', {}).get('actualDepartureTime'), default=0)) / 1000
) if some_or_default(stop.get('timetable', {}).get('actualDepartureTime')) is not None else None,
),
position=(
stop.get('station', {}).get('geocoordinates', {}).get('latitude'),
Expand Down Expand Up @@ -181,24 +181,26 @@ def position(self) -> Tuple[float, float]:
def delay(self) -> float:
return super(ICEPortal, self).delay

def all_delay_reasons(self) -> Dict[str, Optional[str]]:
def all_delay_reasons(self) -> Dict[str, Optional[List[str]]]:
"""
Get all delay reasons for the current trip
:return: A dictionary of delay reasons
:rtype: Dict[str, Optional[str]]
:rtype: Dict[str, Optional[List[str]]]
"""
return {
stop.get('station', {}).get('evaNr', None): some_or_default(stop.get('delayReason', {}).get('text', None))
stop.get('station', {}).get('evaNr', None): list([
some_or_default(reason.get('text', None)) for reason in stop.get('delayReasons', [])
])
for stop in self._dynamic_data.load("trip", {}).get('trip', {}).get('stops', [])
}

def delay_reason(self) -> Optional[str]:
def delay_reasons(self) -> Optional[List[str]]:
"""
Get the delay reason for the current station
:return: The delay reason
:rtype: str
:rtype: Optional[List[str]]
"""
return self.all_delay_reasons().get(self.current_station.id, None)

Expand Down

0 comments on commit 0495f1f

Please sign in to comment.