diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2023-11-01 18:44:00 +0100 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2023-11-01 18:44:00 +0100 |
commit | 6364751eb13ed18111e69a06185657d64bdea5ac (patch) | |
tree | 74fc90ed2515996cb7f5db062a078836b72542c9 | |
parent | 0b1de4136647190003b2362fdd6a89fec53eb9e4 (diff) |
HAFAS: Use locationSearch rather than similar_stops_p
locationSearch uses mgate.exe, just like the regular departure board.
similar_stops_p relies on ajax-getstop.exe which may become unavailable sooner
rather than later.
-rwxr-xr-x | lib/Travelynx/Controller/Traveling.pm | 17 | ||||
-rw-r--r-- | lib/Travelynx/Helper/HAFAS.pm | 11 |
2 files changed, 18 insertions, 10 deletions
diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index 0a035b0..08e7fa4 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -1105,23 +1105,20 @@ sub station { } elsif ( $use_hafas and $status and $status->errcode eq 'LOCATION' ) { - $status->similar_stops_p->then( + $self->hafas->search_location_p( query => $station )->then( sub { - my @suggestions = @_; + my ($hafas2) = @_; + my @suggestions = $hafas2->results; if ( @suggestions == 1 ) { $self->redirect_to( - '/s/' . $suggestions[0]->{id} . '?hafas=1' ); + '/s/' . $suggestions[0]->eva . '?hafas=1' ); } else { $self->render( 'disambiguation', suggestions => [ - map { - { - name => $_->{name}, - eva => $_->{id} - } - } @suggestions + map { { name => $_->name, eva => $_->eva } } + @suggestions ], status => 300, ); @@ -1133,7 +1130,7 @@ sub station { $self->render( 'exception', exception => - "StopFinder threw '$err2' when handling '$err'", +"locationSearch threw '$err2' when handling '$err'", status => 502 ); } diff --git a/lib/Travelynx/Helper/HAFAS.pm b/lib/Travelynx/Helper/HAFAS.pm index 1c36925..6a759b0 100644 --- a/lib/Travelynx/Helper/HAFAS.pm +++ b/lib/Travelynx/Helper/HAFAS.pm @@ -98,6 +98,17 @@ sub get_departures_p { ); } +sub search_location_p { + my ( $self, %opt ) = @_; + + return Travel::Status::DE::HAFAS->new_p( + locationSearch => $opt{query}, + cache => $self->{realtime_cache}, + promise => 'Mojo::Promise', + user_agent => $self->{user_agent}->request_timeout(5), + ); +} + sub get_journey_p { my ( $self, %opt ) = @_; |