diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2025-06-14 14:32:48 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2025-06-14 14:32:48 +0200 |
commit | 8f18ff2c8f9f906a387dbe16d372e1c4b4a6f259 (patch) | |
tree | 705489b08a1381e7cc42bff019bc41f37c0fa621 | |
parent | bce1139bab9aab167cdab910fa86085529d45b80 (diff) |
EFA: implement geolocation lookup
-rwxr-xr-x | lib/Travelynx/Controller/Traveling.pm | 53 | ||||
-rw-r--r-- | lib/Travelynx/Helper/EFA.pm | 2 |
2 files changed, 49 insertions, 6 deletions
diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index d676ede..cc3e1ac 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -562,11 +562,14 @@ sub geolocation { return; } - my ( $dbris_service, $hafas_service, $motis_service ); + my ( $dbris_service, $efa_service, $hafas_service, $motis_service ); my $backend = $self->stations->get_backend( backend_id => $backend_id ); if ( $backend->{dbris} ) { $dbris_service = $backend->{name}; } + if ( $backend->{efa} ) { + $efa_service = $backend->{name}; + } elsif ( $backend->{hafas} ) { $hafas_service = $backend->{name}; } @@ -617,6 +620,50 @@ sub geolocation { )->wait; return; } + elsif ($efa_service) { + $self->render_later; + + Travel::Status::DE::EFA->new_p( + promise => 'Mojo::Promise', + user_agent => Mojo::UserAgent->new, + service => $efa_service, + coord => { + lat => $lat, + lon => $lon + } + )->then( + sub { + my ($efa) = @_; + my @results = map { + { + name => $_->full_name, + eva => $_->id_code, + distance => 0, + efa => $efa_service, + } + } $efa->results; + if ( @results > 10 ) { + @results = @results[ 0 .. 9 ]; + } + $self->render( + json => { + candidates => [@results], + } + ); + } + )->catch( + sub { + my ($err) = @_; + $self->render( + json => { + candidates => [], + warning => $err, + } + ); + } + )->wait; + return; + } elsif ($hafas_service) { $self->render_later; @@ -726,8 +773,6 @@ sub geolocation { lon => $_->[0][3], lat => $_->[0][4], distance => $_->[1], - dbris => 0, - hafas => 0, } } Travel::Status::DE::IRIS::Stations::get_station_by_location( $lon, $lat, 10 ); @@ -1310,7 +1355,7 @@ sub station { 'departures', user => $user, dbris => $dbris_service, - efa => $efa_service, + efa => $efa_service, hafas => $hafas_service, motis => $motis_service, eva => $status->{station_eva}, diff --git a/lib/Travelynx/Helper/EFA.pm b/lib/Travelynx/Helper/EFA.pm index 54c633d..847755e 100644 --- a/lib/Travelynx/Helper/EFA.pm +++ b/lib/Travelynx/Helper/EFA.pm @@ -26,8 +26,6 @@ sub new { sub get_service { my ( $self, $service ) = @_; - say "get_service $service"; - return Travel::Status::DE::EFA::get_service($service); } |