diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2020-09-16 17:21:49 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2020-09-16 17:21:49 +0200 | 
| commit | 2ca4a50194108d378b961fb8ddc9a0455933d96d (patch) | |
| tree | e9e7dee370b54f473bdfcaad543f085dd16a92d4 /lib/DBInfoscreen/Controller | |
| parent | 65aab8c7f827d0c0edf1249ea30c287c5f91ace8 (diff) | |
all requests but IRIS are async now
Diffstat (limited to 'lib/DBInfoscreen/Controller')
| -rw-r--r-- | lib/DBInfoscreen/Controller/Stationboard.pm | 23 | ||||
| -rw-r--r-- | lib/DBInfoscreen/Controller/Wagenreihung.pm | 43 | 
2 files changed, 17 insertions, 49 deletions
| diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm index 3b93ac3..1ea238c 100644 --- a/lib/DBInfoscreen/Controller/Stationboard.pm +++ b/lib/DBInfoscreen/Controller/Stationboard.pm @@ -412,13 +412,6 @@ sub render_train {  		)  	]; -	if ( $departure->{wr_link} -		and -		not $self->wagonorder->is_available( $result, $departure->{wr_link} ) ) -	{ -		$departure->{wr_link} = undef; -	} -  	my $linetype = 'bahn';  	if ( $departure->{train_type} eq 'S' ) {  		$linetype = 'sbahn'; @@ -446,6 +439,22 @@ sub render_train {  	$self->render_later; +	# if wagonorder->is_available_p takes longer than get_route_timestamps_p, +	# we'll have a useless (non-working) wagonorder link. That's okay. +	if ( $departure->{wr_link} ) { +		$self->wagonorder->is_available_p( $result, $departure->{wr_link} ) +		  ->then( +			sub { +				# great! +				return; +			}, +			sub { +				$departure->{wr_link} = undef; +				return; +			} +		)->wait; +	} +  	$self->hafas->get_route_timestamps_p( train => $result )->then(  		sub {  			my ( $route_ts, $route_info, $trainsearch ) = @_; diff --git a/lib/DBInfoscreen/Controller/Wagenreihung.pm b/lib/DBInfoscreen/Controller/Wagenreihung.pm index 7b59227..ecdb129 100644 --- a/lib/DBInfoscreen/Controller/Wagenreihung.pm +++ b/lib/DBInfoscreen/Controller/Wagenreihung.pm @@ -4,53 +4,12 @@ use Mojo::Base 'Mojolicious::Controller';  # Copyright (C) 2011-2019 Daniel Friesel <derf+dbf@finalrewind.org>  # License: 2-Clause BSD -use Encode qw(decode); -use JSON; -use Mojo::Promise;  use Travel::Status::DE::DBWagenreihung;  my $dbf_version = qx{git describe --dirty} || 'experimental';  chomp $dbf_version; -sub get_wagenreihung_p { -	my ( $self, $train_no, $api_ts ) = @_; - -	my $url -	  = "https://www.apps-bahn.de/wr/wagenreihung/1.0/${train_no}/${api_ts}"; - -	my $cache = $self->app->cache_iris_rt; - -	my $promise = Mojo::Promise->new; - -	if ( my $content = $cache->thaw($url) ) { -		$promise->resolve($content); -		$self->app->log->debug("GET $url (cached)"); -		return $promise; -	} - -	$self->ua->request_timeout(10) -	  ->get_p( $url, { 'User-Agent' => "dbf.finalrewind.org/${dbf_version}" } ) -	  ->then( -		sub { -			my ($tx) = @_; -			$self->app->log->debug("GET $url (OK)"); -			my $body = decode( 'utf-8', $tx->res->body ); -			my $json = JSON->new->decode($body); - -			$cache->freeze( $url, $json ); -			$promise->resolve($json); -		} -	)->catch( -		sub { -			my ($err) = @_; -			$self->app->log->debug("GET $url (error: $err)"); -			$promise->reject($err); -		} -	)->wait; -	return $promise; -} -  sub wagenreihung {  	my ($self)    = @_;  	my $train     = $self->stash('train'); @@ -58,7 +17,7 @@ sub wagenreihung {  	$self->render_later; -	$self->get_wagenreihung_p( $train, $departure )->then( +	$self->wagonorder->get_p( $train, $departure )->then(  		sub {  			my ($json) = @_;  			my $wr; | 
