Source code for pyhafas.profile.base.requests.location
from typing import List
from pyhafas.profile import ProfileInterface
from pyhafas.profile.interfaces import LocationRequestInterface
from pyhafas.types.fptf import Station
from pyhafas.types.hafas_response import HafasResponse
[docs]class BaseLocationRequest(LocationRequestInterface):
[docs] def format_location_request(self: ProfileInterface, term: str, rtype: str = 'S'):
"""
Creates the HaFAS request body for a location search request.
:param term: Search term
:param type: Result types. One of ['S' for stations, 'ALL' for addresses and stations]
:return: Request body for HaFAS
"""
return {
"req": {
"input": {
"field": "S",
"loc": {
"name": term,
"type": rtype
}
}
},
"meth": "LocMatch"
}
[docs] def parse_location_request(
self: ProfileInterface,
data: HafasResponse) -> List[Station]:
"""
Parses the HaFAS response for a location request
:param data: Formatted HaFAS response
:return: List of Station objects
"""
stations = []
for stn in data.res['match']['locL']:
try:
latitude: float = stn['crd']['y'] / 1000000
longitude: float = stn['crd']['x'] / 1000000
except KeyError:
latitude: float = 0
longitude: float = 0
stations.append(
self.parse_lid_to_station(
stn['lid'],
stn['name'],
latitude,
longitude))
return stations