all repos — kokyo @ 9547bc3cdaf7c4d51c589d191c664af4c34bcfdf

Chatbot and CLI tool for Swiss public transports

🐛 Fix bug with single match location
Tim Izzo tim@5ika.ch
Fri, 16 Aug 2024 14:50:43 +0200
commit

9547bc3cdaf7c4d51c589d191c664af4c34bcfdf

parent

96b7285acbac64583de6ddb0612a88f3d65dd885

1 files changed, 14 insertions(+), 9 deletions(-)

jump to
M api/locationInformationRequest.tsapi/locationInformationRequest.ts

@@ -3,16 +3,21 @@ import { getLocationInformationRequest } from "./api.ts";

export const findStopByName = async (textInput: string): Promise<Stop[]> => { const { result } = await getLocationInformationRequest(textInput); - const placeResult = get<object[]>( + const placeResult = get<object[] | { Place: object }>( result, "OJP.OJPResponse.siri:ServiceDelivery.OJPLocationInformationDelivery.PlaceResult" ); - return placeResult.map(item => ({ - name: get(item, "Place.StopPlace.StopPlaceName.Text.#text"), - stopRef: get(item, "Place.StopPlace.StopPlaceRef"), - geoPosition: { - latitude: get(item, "Place.GeoPosition.siri:Latitude"), - longitude: get(item, "Place.GeoPosition.siri:Longitude"), - }, - })); + if (!placeResult) return []; + else if (Array.isArray(placeResult)) return placeResult.map(formatPlace); + else if (placeResult.Place) return [formatPlace(placeResult)]; + else return []; }; + +const formatPlace = (item: object): Stop => ({ + name: get(item, "Place.StopPlace.StopPlaceName.Text.#text"), + stopRef: get(item, "Place.StopPlace.StopPlaceRef"), + geoPosition: { + latitude: get(item, "Place.GeoPosition.siri:Latitude"), + longitude: get(item, "Place.GeoPosition.siri:Longitude"), + }, +});