Unverified Commit 8f18ff2c authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

EFA: implement geolocation lookup

parent bce1139b
Loading
Loading
Loading
Loading
+49 −4
Original line number Diff line number Diff line
@@ -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 );
+0 −2
Original line number Diff line number Diff line
@@ -26,8 +26,6 @@ sub new {
sub get_service {
	my ( $self, $service ) = @_;

	say "get_service $service";

	return Travel::Status::DE::EFA::get_service($service);
}