summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2014-12-05 00:00:36 +0100
committerDaniel Friesel <derf@finalrewind.org>2014-12-05 00:00:36 +0100
commit38c853a1c1fdb168667ff6a3fd523deac0b15a2e (patch)
treeadc158ecd31b8c7975e79e92b92ae572984d11c1
parentaf3e174aaf9d2560fcc49ebc6f6ea5e24545fbac (diff)
Fix a crash when a train has unscheduled additional stops starting at the selected station
-rwxr-xr-xbin/db-iris1
-rw-r--r--lib/Travel/Status/DE/IRIS.pm12
-rw-r--r--lib/Travel/Status/DE/IRIS/Result.pm16
3 files changed, 23 insertions, 6 deletions
diff --git a/bin/db-iris b/bin/db-iris
index 30a3c28..e30dc9b 100755
--- a/bin/db-iris
+++ b/bin/db-iris
@@ -8,6 +8,7 @@ no if $] >= 5.018, warnings => 'experimental::smartmatch';
our $VERSION = '0.06';
+use Carp;
use DateTime;
use DateTime::Format::Strptime;
use Encode qw(decode);
diff --git a/lib/Travel/Status/DE/IRIS.pm b/lib/Travel/Status/DE/IRIS.pm
index 5a3c34e..f326195 100644
--- a/lib/Travel/Status/DE/IRIS.pm
+++ b/lib/Travel/Status/DE/IRIS.pm
@@ -254,6 +254,7 @@ sub get_realtime {
if ($e_ar) {
$result->add_ar(
arrival_ts => $e_ar->getAttribute('ct'),
+ plan_arrivaL_ts => $e_ar->getAttribute('pt'),
platform => $e_ar->getAttribute('cp'),
route_pre => $e_ar->getAttribute('cpth'),
sched_route_pre => $e_ar->getAttribute('ppth'),
@@ -262,11 +263,12 @@ sub get_realtime {
}
if ($e_dp) {
$result->add_dp(
- departure_ts => $e_dp->getAttribute('ct'),
- platform => $e_dp->getAttribute('cp'),
- route_post => $e_dp->getAttribute('cpth'),
- sched_route_post => $e_dp->getAttribute('ppth'),
- status => $e_dp->getAttribute('cs'),
+ departure_ts => $e_dp->getAttribute('ct'),
+ plan_departure_ts => $e_dp->getAttribute('pt'),
+ platform => $e_dp->getAttribute('cp'),
+ route_post => $e_dp->getAttribute('cpth'),
+ sched_route_post => $e_dp->getAttribute('ppth'),
+ status => $e_dp->getAttribute('cs'),
);
}
diff --git a/lib/Travel/Status/DE/IRIS/Result.pm b/lib/Travel/Status/DE/IRIS/Result.pm
index d4d994e..e1cb513 100644
--- a/lib/Travel/Status/DE/IRIS/Result.pm
+++ b/lib/Travel/Status/DE/IRIS/Result.pm
@@ -102,6 +102,13 @@ sub add_ar {
time_zone => 'Europe/Berlin',
);
+ # unscheduled arrivals may not appear in the plan, but we do need to
+ # know their planned arrival time
+ if ( $attrib{plan_arrival_ts} ) {
+ $self->{sched_arrival}
+ = $strp->parse_datetime( $attrib{plan_arrival_ts} );
+ }
+
if ( $attrib{arrival_ts} ) {
$self->{arrival} = $strp->parse_datetime( $attrib{arrival_ts} );
$self->{delay}
@@ -139,6 +146,13 @@ sub add_dp {
time_zone => 'Europe/Berlin',
);
+ # unscheduled arrivals may not appear in the plan, but we do need to
+ # know their planned arrival time
+ if ( $attrib{plan_departure_ts} ) {
+ $self->{sched_departure}
+ = $strp->parse_datetime( $attrib{plan_departure_ts} );
+ }
+
if ( $attrib{departure_ts} ) {
$self->{departure} = $strp->parse_datetime( $attrib{departure_ts} );
$self->{delay}
@@ -535,7 +549,7 @@ sub translate_msg {
64 => 'Weichenstörung',
55 => 'Technische Störung an einem anderen Zug', # ?
57 => 'Zusätzlicher Halt', # ?
- 58 => 'Umleitung', # ?
+ 58 => 'Umleitung', # ?
61 => 'Türstörung',
62 => 'Behobene technische Störung am Zug',
63 => 'Technische Untersuchung am Zug',