Loading lib/DBInfoscreen/Controller/Stationboard.pm +45 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ use Mojo::JSON qw(decode_json); use Mojo::Promise; use Mojo::UserAgent; use Travel::Status::DE::HAFAS; use Travel::Status::DE::HAFAS::StopFinder; use Travel::Status::DE::IRIS; use Travel::Status::DE::IRIS::Stations; use XML::LibXML; Loading @@ -30,10 +31,47 @@ my %default = ( ); sub handle_no_results { my ( $self, $station, $data ) = @_; my ( $self, $station, $data, $hafas ) = @_; my $errstr = $data->{errstr}; if ($hafas) { $self->render_later; Travel::Status::DE::HAFAS::StopFinder->new_p( url => 'https://reiseauskunft.bahn.de/bin/ajax-getstop.exe', input => $station, promise => 'Mojo::Promise', user_agent => $self->ua, )->then( sub { my (@candidates) = @_; @candidates = map { [ $_->{name}, $_->{id} ] } @candidates; for my $candidate (@candidates) { $candidate->[0] =~ s{[&]#x0028;}{(}g; $candidate->[0] =~ s{[&]#x0029;}{)}g; } $self->render( 'landingpage', stationlist => \@candidates, hide_opts => 0, status => 300, ); return; } )->catch( sub { my ($err) = @_; $self->render( 'landingpage', error => ( $err // "Keine Abfahrten an '$station'" ), hide_opts => 0 ); return; } )->wait; return; } my @candidates = map { [ $_->[1], $_->[0] ] } Travel::Status::DE::IRIS::Stations::get_station($station); if ( Loading Loading @@ -263,7 +301,7 @@ sub json_route_diff { } sub get_results_p { my ( $station, %opt ) = @_; my ( $self, $station, %opt ) = @_; my $data; if ( $opt{hafas} ) { Loading @@ -275,7 +313,7 @@ sub get_results_p { agent => 'dbf.finalrewind.org/2' }, promise => 'Mojo::Promise', user_agent => Mojo::UserAgent->new, user_agent => $self->ua, ); } Loading Loading @@ -405,7 +443,7 @@ sub handle_request { $self->render_later; get_results_p( $station, %opt )->then( $self->get_results_p( $station, %opt )->then( sub { my ($status) = @_; my $data = { Loading @@ -421,7 +459,7 @@ sub handle_request { return; } if ( not @{ $data->{results} } ) { $self->handle_no_results( $station, $data ); $self->handle_no_results( $station, $data, $hafas ); return; } $self->handle_result($data); Loading @@ -434,7 +472,7 @@ sub handle_request { $api_version ); return; } $self->handle_no_results( $station, { errstr => $err } ); $self->handle_no_results( $station, { errstr => $err }, $hafas ); return; } )->wait; Loading Loading @@ -924,7 +962,7 @@ sub station_train_details { $self->render_later; get_results_p( $station, %opt )->then( $self->get_results_p( $station, %opt )->then( sub { my ($status) = @_; my ($result) Loading Loading
lib/DBInfoscreen/Controller/Stationboard.pm +45 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ use Mojo::JSON qw(decode_json); use Mojo::Promise; use Mojo::UserAgent; use Travel::Status::DE::HAFAS; use Travel::Status::DE::HAFAS::StopFinder; use Travel::Status::DE::IRIS; use Travel::Status::DE::IRIS::Stations; use XML::LibXML; Loading @@ -30,10 +31,47 @@ my %default = ( ); sub handle_no_results { my ( $self, $station, $data ) = @_; my ( $self, $station, $data, $hafas ) = @_; my $errstr = $data->{errstr}; if ($hafas) { $self->render_later; Travel::Status::DE::HAFAS::StopFinder->new_p( url => 'https://reiseauskunft.bahn.de/bin/ajax-getstop.exe', input => $station, promise => 'Mojo::Promise', user_agent => $self->ua, )->then( sub { my (@candidates) = @_; @candidates = map { [ $_->{name}, $_->{id} ] } @candidates; for my $candidate (@candidates) { $candidate->[0] =~ s{[&]#x0028;}{(}g; $candidate->[0] =~ s{[&]#x0029;}{)}g; } $self->render( 'landingpage', stationlist => \@candidates, hide_opts => 0, status => 300, ); return; } )->catch( sub { my ($err) = @_; $self->render( 'landingpage', error => ( $err // "Keine Abfahrten an '$station'" ), hide_opts => 0 ); return; } )->wait; return; } my @candidates = map { [ $_->[1], $_->[0] ] } Travel::Status::DE::IRIS::Stations::get_station($station); if ( Loading Loading @@ -263,7 +301,7 @@ sub json_route_diff { } sub get_results_p { my ( $station, %opt ) = @_; my ( $self, $station, %opt ) = @_; my $data; if ( $opt{hafas} ) { Loading @@ -275,7 +313,7 @@ sub get_results_p { agent => 'dbf.finalrewind.org/2' }, promise => 'Mojo::Promise', user_agent => Mojo::UserAgent->new, user_agent => $self->ua, ); } Loading Loading @@ -405,7 +443,7 @@ sub handle_request { $self->render_later; get_results_p( $station, %opt )->then( $self->get_results_p( $station, %opt )->then( sub { my ($status) = @_; my $data = { Loading @@ -421,7 +459,7 @@ sub handle_request { return; } if ( not @{ $data->{results} } ) { $self->handle_no_results( $station, $data ); $self->handle_no_results( $station, $data, $hafas ); return; } $self->handle_result($data); Loading @@ -434,7 +472,7 @@ sub handle_request { $api_version ); return; } $self->handle_no_results( $station, { errstr => $err } ); $self->handle_no_results( $station, { errstr => $err }, $hafas ); return; } )->wait; Loading Loading @@ -924,7 +962,7 @@ sub station_train_details { $self->render_later; get_results_p( $station, %opt )->then( $self->get_results_p( $station, %opt )->then( sub { my ($status) = @_; my ($result) Loading