Added support for two new raw methods

This commit is contained in:
Profitroll 2022-10-04 11:15:34 +02:00
parent 67699352da
commit 013326d32a
2 changed files with 118 additions and 7 deletions

View File

@ -1,5 +1,6 @@
from datetime import datetime
from requests import get from requests import get
from typing import List, Union from typing import Union
from xmltodict import parse as xmlparse from xmltodict import parse as xmlparse
try: try:
@ -9,8 +10,44 @@ except ImportError:
# 2.26. Journey Detail (journeyDetail) # 2.26. Journey Detail (journeyDetail)
def journey_detail(accessId: str, def journey_detail(accessId: str,
json: bool = True id: str,
json: bool = True,
date: Union[str, datetime] = None, # type: ignore
poly: bool = False,
polyEnc: Literal["DLT", "GPA", "N"] = "N",
showPassingPoints: bool = False,
rtMode: Literal["FULL", "INFOS", "OFF", "REALTIME", "SERVER_DEFAULT"] = None, # type: ignore
fromId: str = None, # type: ignore
fromIdx: str = None, # type: ignore
toId: str = None, # type: ignore
toIdx: str = None, # type: ignore
baim: bool = False
) -> dict: ) -> dict:
"""The journey_detail method will deliver information about the complete route of a vehicle. The journey
identifier is part of a trip or departureBoard response. It contains a list of all stops/stations of this journey
including all departure and arrival times (with real-time data if available) and additional information like
specific attributes about facilities and other texts.
Read more about this in section 2.26. "Journey Detail (journeyDetail)" of HAFAS ReST Documentation.
### Args:
* accessId (str): Access ID for identifying the requesting client. Get your key on [RMV website](https://opendata.rmv.de/site/start.html).
* id (str): Specifies the internal journey id of the journey shall be retrieved. Maximum length 512.
* json (bool, optional): Whether response should be retrieved as JSON. XML is returned if False. Defaults to True.
* date (Union[str, datetime], optional): Day of operation. Represented in the format `YYYY-MM-DD`. By default the current server date is used. Defaults to None.
* poly (bool, optional): Enables/disables the calculation of the polyline for each leg of the trip except any GIS route. Defaults to False.
* polyEnc (Literal["DLT", "GPA", "N"], optional): Defines encoding of the returned polyline. Possible values are "N" (no encoding / compression), "DLT" (delta to the previous coordinate), "GPA" (Google encoded polyline format). Defaults to "N".
* showPassingPoints (bool, optional): Enables/disables the return of stops having no alighting and no boarding in its passlist for each leg of the trip. Defaults to False.
* rtMode (Literal["FULL", "INFOS", "OFF", "REALTIME", "SERVER_DEFAULT"], optional): Set the realtime mode to be used. Read more about this in HAFAS ReST Documentation. Defaults to None.
* fromId (str, optional): Specifies the station/stop ID the partial itinerary shall start from. Defaults to None.
* fromIdx (str, optional): Specifies the station/stop index the partial itinerary shall start from. Defaults to None.
* toId (str, optional): Specifies the station/stop ID the partial itinerary shall end at. Defaults to None.
* toIdx (str, optional): Specifies the station/stop index the partial itinerary shall end at. Defaults to None.
* baim (bool, optional): Enables/disables BAIM search and response. Defaults to False.
### Returns:
* dict: Output from RMV. Dict will contain "errorCode" and "errorText" if exception occurs.
"""
if json: if json:
headers = {"Accept": "application/json"} headers = {"Accept": "application/json"}

View File

@ -1,9 +1,8 @@
from datetime import datetime
from requests import get from requests import get
from typing import List, Union from typing import Union
from xmltodict import parse as xmlparse from xmltodict import parse as xmlparse
from pyrmv.utility.find_exception import find_exception
try: try:
from typing import Literal from typing import Literal
except ImportError: except ImportError:
@ -11,8 +10,77 @@ except ImportError:
# 2.17. Reconstruction (recon) # 2.17. Reconstruction (recon)
def trip_recon(accessId: str, def trip_recon(accessId: str,
json: bool = True ctx: str,
json: bool = True,
poly: bool = False,
polyEnc: Literal["DLT", "GPA", "N"] = "N",
date: Union[str, datetime] = None, # type: ignore
useCombinedComparison: bool = None, # type: ignore
acceptGaps: bool = None, # type: ignore
allowDummySections: bool = None, # type: ignore
flagAllNonReachable: bool = None, # type: ignore
matchCatStrict: bool = None, # type: ignore
matchIdNonBlank: bool = None, # type: ignore
matchIdStrict: bool = None, # type: ignore
matchNumStrict: bool = None, # type: ignore
matchRtType: bool = None, # type: ignore
enableRtFullSearch: bool = None, # type: ignore
enableReplacements: bool = None, # type: ignore
arrL: int = None, # type: ignore
arrU: int = None, # type: ignore
depL: int = None, # type: ignore
depU: int = None, # type: ignore
passlist: bool = False,
showPassingPoints: bool = False,
rtMode: Literal["FULL", "INFOS", "OFF", "REALTIME", "SERVER_DEFAULT"] = None, # type: ignore
eco: bool = False,
ecoCmp: bool = False,
ecoParams: str = None, # type: ignore
tariff: bool = None, # type: ignore
trafficMessages: bool = None, # type: ignore
travellerProfileData: str = None # type: ignore
) -> dict: ) -> dict:
"""Reconstructing a trip can be achieved using the resconstruction context provided by any trip result in the
ctxRecon attribute of Trip element. The result will be a true copy of the original trip search result given
that the underlying data did not change.
Read more about this in section 2.17. "Reconstruction (recon)" of HAFAS ReST Documentation.
### Args:
* accessId (str): Access ID for identifying the requesting client. Get your key on [RMV website](https://opendata.rmv.de/site/start.html).
* ctx (str): Specifies the reconstruction context.
* json (bool, optional): Whether response should be retrieved as JSON. XML is returned if False. Defaults to True.
* poly (bool, optional): Enables/disables the calculation of the polyline for each leg of the trip except any GIS route. Defaults to False.
* polyEnc (Literal["DLT", "GPA", "N"], optional): Defines encoding of the returned polyline. Possible values are "N" (no encoding / compression), "DLT" (delta to the previous coordinate), "GPA" (Google encoded polyline format). Defaults to "N".
* date (Union[str, datetime], optional): Sets the start date for which the departures shall be retrieved. Represented in the format `YYYY-MM-DD`. This parameter will force the ser-vice to reconstruct the trip on that specific date. If the trip is not available on that date, because it does not operate, the error code SVC_NO_RESULT will be returned. Defaults to None.
* useCombinedComparison (bool, optional): Compare based on combined output name - `False`: Compare parameters (category, line, train number) individually. Defaults to None.
* acceptGaps (bool, optional): Accept an incomplete description of the connection (with gaps) i.e. missing walks/transfers. Defaults to None.
* allowDummySections (bool, optional): Allow a partial reconstruction that will not lead to a reconstruction failure if sections are not reconstructable. Instead, for theses inconstructable sections, dummy sections will be created in the result. Defaults to None.
* flagAllNonReachable (bool, optional): Should all non-reachable journeys be flagged (`True`), or only the first one encountered? Defaults to None.
* matchCatStrict (bool, optional): Should the category (Gattung) match exactly? Only applicable if `useCombinedComparison` is `False`. Defaults to None.
* matchIdNonBlank (bool, optional): Should the train identifier (Zugbezeichner) without whitespace match? Defaults to None.
* matchIdStrict (bool, optional): Should the train identifier (Zugbezeichner) match exactly? Defaults to None.
* matchNumStrict (bool, optional): Should the train number (Zugnummer) match exactly? Only applicable if `useCombinedComparison` is `False`. Defaults to None.
* matchRtType (bool, optional): Should the realtime type that journeys are based on (e.g. SOLL, IST, additional, deviation, ) be considered? Defaults to None.
* enableRtFullSearch (bool, optional): By default, the reconstruction request makes one attempt for each journey within the scheduled data. However, the scheduled data may not necessarily reflect basic realtime properties of the journeys therein. In such a case, one may enable a two-step approach which we call "full search", i.e. search for matching journeys in the scheduled data in a first step. If this fails, then search for matching journeys in the realtime data. Defaults to None.
* enableReplacements (bool, optional): If set to true replaces cancelled journeys with their replacement journeys if possible. Defaults to None.
* arrL (int, optional): Lower deviation in minutes within interval [0, 720] indicating "how much earlier than original arrival". Defaults to None.
* arrU (int, optional): Upper deviation in minutes within interval [0, 720] indicating "how much later than original arrival". Defaults to None.
* depL (int, optional): Lower deviation in minutes within interval [0, 720] indicating "how much earlier than original departure". Defaults to None.
* depU (int, optional): Upper deviation in minutes within interval [0, 720] indicating "how much later than original departure". Defaults to None.
* passlist (bool, optional): Enables/disables the return of the passlist for each leg of the trip. Defaults to False.
* showPassingPoints (bool, optional): Enables/disables the return of stops having no alighting and boarding in its passlist for each leg of the trip. Needs passlist parameter enabled. Defaults to False.
* rtMode (Literal["FULL", "INFOS", "OFF", "REALTIME", "SERVER_DEFAULT"], optional): Set the realtime mode to be used. Read more about this in HAFAS ReST Documentation. Defaults to None.
* eco (bool, optional): Enables/disables eco value calculation. Defaults to False.
* ecoCmp (bool, optional): Enables/disables eco comparison. Defaults to False.
* ecoParams (str, optional): Provide additional eco parameters. Values vary. Defaults to None.
* tariff (bool, optional): Enables/disables the output of tariff data. The default is configurable via provisioning. Defaults to None.
* trafficMessages (bool, optional): Enables/disables the output of traffic messages. The default is configurable via provisioning. Defaults to None.
* travellerProfileData (str, optional): Traveller profile data. Structure depends on set up. Defaults to None.
### Returns:
* dict: Output from RMV. Dict will contain "errorCode" and "errorText" if exception occurs.
"""
if json: if json:
headers = {"Accept": "application/json"} headers = {"Accept": "application/json"}
@ -22,7 +90,13 @@ def trip_recon(accessId: str,
payload = {} payload = {}
for var, val in locals().items(): for var, val in locals().items():
if str(var) not in ["json", "headers", "payload"]: if str(var) == "date":
if val != None:
if isinstance(val, datetime):
payload[str(var)] = val.strftime("%Y-%m-%d")
else:
payload[str(var)] = val
elif str(var) not in ["json", "headers", "payload"]:
if val != None: if val != None:
payload[str(var)] = val payload[str(var)] = val