all repos — kokyo @ 9547bc3cdaf7c4d51c589d191c664af4c34bcfdf

Chatbot and CLI tool for Swiss public transports

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});