diff options
| -rwxr-xr-x | lib/Travelynx.pm | 40 | 
1 files changed, 38 insertions, 2 deletions
| diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 3bb33ea..51fe12f 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -1813,6 +1813,37 @@ sub startup {  	);  	$self->helper( +		'has_wagonorder_p' => sub { +			my ( $self, $ts, $train_no ) = @_; +			my $api_ts = $ts->strftime('%Y%m%d%H%M'); +			my $url +			  = "https://lib.finalrewind.org/dbdb/has_wagonorder/${train_no}/${api_ts}"; +			my $cache   = $self->app->cache_iris_main; +			my $promise = Mojo::Promise->new; + +			if ( my $content = $cache->get($url) ) { +				if ( $content eq 'n' ) { +					$promise->reject; +					return $promise; +				} +			} + +			$self->ua->request_timeout(5)->head_p($url)->then( +				sub { +					$cache->set( $url, 'y' ); +					$promise->resolve; +				} +			)->catch( +				sub { +					$cache->set( $url, 'n' ); +					$promise->reject; +				} +			)->wait; +			return $promise; +		} +	); + +	$self->helper(  		'get_wagonorder_p' => sub {  			my ( $self, $ts, $train_no ) = @_;  			my $api_ts = $ts->strftime('%Y%m%d%H%M'); @@ -2104,10 +2135,15 @@ sub startup {  				}  			)->wait; -			if ( $train->type =~ m{[EI]C} and $train->sched_departure ) { -				$self->get_wagonorder_p( $train->sched_departure, +			if ( $train->sched_departure ) { +				$self->has_wagonorder_p( $train->sched_departure,  					$train->train_no )->then(  					sub { +						return $self->get_wagonorder_p( $train->sched_departure, +							$train->train_no ); +					} +				)->then( +					sub {  						my ($wagonorder) = @_;  						my $res = $db->select( 'in_transit', ['data'], | 
