diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2020-01-04 23:28:47 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2020-01-04 23:28:47 +0100 | 
| commit | 45f4e39216d05217de9341bd991860d1cc95a3d5 (patch) | |
| tree | 083d055f5a9878d0002a5756fb0ae46229965305 /lib/DBInfoscreen | |
| parent | 3d22c00120518f8c5207fe1049a00506091cd43c (diff) | |
cache transport.rest requests
Diffstat (limited to 'lib/DBInfoscreen')
| -rw-r--r-- | lib/DBInfoscreen/Controller/Map.pm | 15 | ||||
| -rw-r--r-- | lib/DBInfoscreen/Controller/Stationboard.pm | 13 | 
2 files changed, 25 insertions, 3 deletions
| diff --git a/lib/DBInfoscreen/Controller/Map.pm b/lib/DBInfoscreen/Controller/Map.pm index b22c5ea..df749bf 100644 --- a/lib/DBInfoscreen/Controller/Map.pm +++ b/lib/DBInfoscreen/Controller/Map.pm @@ -9,8 +9,16 @@ chomp $dbf_version;  sub get_hafas_polyline {  	my ( $ua, $cache, $trip_id, $line ) = @_; +	my $url +	  = "https://2.db.transport.rest/trips/${trip_id}?lineName=${line}&polyline=true"; + +	if ( my $content = $cache->thaw($url) ) { +		return $content; +	} +  	$ua->request_timeout(2); -	#say "https://2.db.transport.rest/trips/${trip_id}?lineName=${line}&polyline=true"; + +	#say $url;  	my $res  	  = $ua->get(  "https://2.db.transport.rest/trips/${trip_id}?lineName=${line}&polyline=true" @@ -32,11 +40,14 @@ sub get_hafas_polyline {  		#}  	} -	return { +	my $ret = {  		name      => $json->{line}{name} // '?',  		polyline  => [@coordinate_list],  		stopovers => $json->{stopovers},  	}; + +	$cache->freeze( $url, $ret ); +	return $ret;  }  sub route { diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm index e32e78d..d593105 100644 --- a/lib/DBInfoscreen/Controller/Stationboard.pm +++ b/lib/DBInfoscreen/Controller/Stationboard.pm @@ -22,6 +22,8 @@ no if $] >= 5.018, warnings => 'experimental::smartmatch';  my $dbf_version = qx{git describe --dirty} || 'experimental'; +chomp $dbf_version; +  my %default = (  	backend => 'iris',  	mode    => 'app', @@ -129,11 +131,18 @@ sub get_hafas_trip_id {  		$dep_ts = $train->sched_arrival->epoch;  	} +	my $url +	  = "https://2.db.transport.rest/stations/${eva}/departures?duration=5&when=$dep_ts"; + +	if ( my $content = $cache->get($url) ) { +		return $content; +	} +  	$ua->request_timeout(2);  	my $res  	  = $ua->get(  "https://2.db.transport.rest/stations/${eva}/departures?duration=5&when=$dep_ts" -	)->result; +		  => { 'User-Agent' => "dbf.finalrewind.org/${dbf_version}" } )->result;  	if ( $res->is_error ) {  		return;  	} @@ -144,10 +153,12 @@ sub get_hafas_trip_id {  	for my $result ( @{$json} ) {  		my $trip_id = $result->{tripId};  		my $fahrt   = $result->{line}{fahrtNr}; +  		#say "checking $fahrt";  		if ( $result->{line} and $result->{line}{fahrtNr} == $train->train_no )  		{  			#say "Trip ID is $trip_id"; +			$cache->set( $url, $trip_id );  			return $trip_id;  		}  		else { | 
