summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2020-01-04 23:28:47 +0100
committerDaniel Friesel <derf@finalrewind.org>2020-01-04 23:28:47 +0100
commit45f4e39216d05217de9341bd991860d1cc95a3d5 (patch)
tree083d055f5a9878d0002a5756fb0ae46229965305
parent3d22c00120518f8c5207fe1049a00506091cd43c (diff)
cache transport.rest requests
-rw-r--r--lib/DBInfoscreen/Controller/Map.pm15
-rw-r--r--lib/DBInfoscreen/Controller/Stationboard.pm13
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 {