api/locationInformationRequest.ts (view raw)
1import { get } from "../lib/func.ts";
2import { getLocationInformationRequest } from "./api.ts";
3
4export const findStopByName = async (textInput: string): Promise<Stop[]> => {
5 const { result } = await getLocationInformationRequest(textInput);
6 const placeResult = get<object[] | { Place: object }>(
7 result,
8 "OJP.OJPResponse.siri:ServiceDelivery.OJPLocationInformationDelivery.PlaceResult"
9 );
10 if (!placeResult) return [];
11 else if (Array.isArray(placeResult)) return placeResult.map(formatPlace);
12 else if (placeResult.Place) return [formatPlace(placeResult)];
13 else return [];
14};
15
16const formatPlace = (item: object): Stop => ({
17 name: get(item, "Place.StopPlace.StopPlaceName.Text.#text"),
18 stopRef: get(item, "Place.StopPlace.StopPlaceRef"),
19 geoPosition: {
20 latitude: get(item, "Place.GeoPosition.siri:Latitude"),
21 longitude: get(item, "Place.GeoPosition.siri:Longitude"),
22 },
23});