36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
from typing import Any, List, Mapping, Union
|
|
|
|
from pyrmv.classes.message import Message
|
|
from pyrmv.classes.stop import Stop
|
|
from pyrmv.utility import ref_upgrade
|
|
|
|
|
|
class Journey:
|
|
"""Journey object."""
|
|
|
|
def __init__(self, data: Mapping[str, Any]):
|
|
self.stops: List[Stop] = []
|
|
|
|
# Upgrade is temporarily used due to RMV API mismatch
|
|
# self.ref = data["ref"]
|
|
self.ref: str = ref_upgrade(data["ref"])
|
|
|
|
self.direction: Union[str, None] = (
|
|
data["Directions"]["Direction"][0].get("value")
|
|
if data["Directions"]["Direction"]
|
|
else None
|
|
)
|
|
self.direction_flag: Union[str, None] = (
|
|
data["Directions"]["Direction"][0].get("flag")
|
|
if data["Directions"]["Direction"]
|
|
else None
|
|
)
|
|
self.stops.extend(Stop(stop) for stop in data["Stops"]["Stop"])
|
|
self.messages: List[Message] = []
|
|
|
|
if "Messages" in data:
|
|
self.messages.extend(Message(message) for message in data["Messages"]["Message"])
|
|
|
|
def __str__(self) -> str:
|
|
return f"Journey with total of {len(self.stops)} stops and {len(self.messages)} messages heading {self.direction} ({self.direction_flag})"
|