summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2021-07-01 19:44:09 +0200
committerDaniel Friesel <derf@finalrewind.org>2021-07-01 19:44:09 +0200
commit7b01cae7d5b76db82799a8a1618dbb20cfd7dec1 (patch)
tree448af7d6e20b538fc42f6e94c77c826753ee64e9 /lib
parent255d0610f1b5b62b7dd409eeba6c63da3fac4092 (diff)
Pass scheduled arrival and departure times to Traewelling API1.20.2
This ensures unambiguous checkins for ring lines. See https://github.com/Traewelling/traewelling/commit/eaf975a3337a151c4759428747342ce49eadea47
Diffstat (limited to 'lib')
-rw-r--r--lib/Travelynx/Helper/Traewelling.pm26
-rw-r--r--lib/Travelynx/Model/Traewelling.pm5
2 files changed, 30 insertions, 1 deletions
diff --git a/lib/Travelynx/Helper/Traewelling.pm b/lib/Travelynx/Helper/Traewelling.pm
index 7bac88a..88b91a0 100644
--- a/lib/Travelynx/Helper/Traewelling.pm
+++ b/lib/Travelynx/Helper/Traewelling.pm
@@ -38,6 +38,20 @@ sub new {
return bless( \%opt, $class );
}
+sub epoch_to_dt_or_undef {
+ my ($epoch) = @_;
+
+ if ( not $epoch ) {
+ return undef;
+ }
+
+ return DateTime->from_epoch(
+ epoch => $epoch,
+ time_zone => 'Europe/Berlin',
+ locale => 'de-DE',
+ );
+}
+
sub parse_datetime {
my ( $self, $dt ) = @_;
@@ -309,12 +323,24 @@ sub checkin {
'Authorization' => "Bearer $opt{token}",
};
+ my $departure_ts = epoch_to_dt_or_undef( $opt{dep_ts} );
+ my $arrival_ts = epoch_to_dt_or_undef( $opt{arr_ts} );
+
+ if ($departure_ts) {
+ $departure_ts = $departure_ts->rfc3339;
+ }
+ if ($arrival_ts) {
+ $arrival_ts = $arrival_ts->rfc3339;
+ }
+
my $request = {
tripID => $opt{trip_id},
lineName => $opt{train_type} . ' '
. ( $opt{train_line} // $opt{train_no} ),
start => q{} . $opt{dep_eva},
destination => q{} . $opt{arr_eva},
+ departure => $departure_ts,
+ arrival => $arrival_ts,
toot => $opt{data}{toot} ? \1 : \0,
tweet => $opt{data}{tweet} ? \1 : \0,
};
diff --git a/lib/Travelynx/Model/Traewelling.pm b/lib/Travelynx/Model/Traewelling.pm
index 492a483..a334c1d 100644
--- a/lib/Travelynx/Model/Traewelling.pm
+++ b/lib/Travelynx/Model/Traewelling.pm
@@ -1,4 +1,5 @@
package Travelynx::Model::Traewelling;
+
# Copyright (C) 2020 Daniel Friesel
#
# SPDX-License-Identifier: AGPL-3.0-or-later
@@ -213,7 +214,9 @@ sub get_pushable_accounts {
i.checkin_station_id as dep_eva, i.checkout_station_id as arr_eva,
i.data as journey_data, i.train_type as train_type,
i.train_line as train_line, i.train_no as train_no,
- extract(epoch from i.checkin_time) as checkin_ts
+ extract(epoch from i.checkin_time) as checkin_ts,
+ extract(epoch from i.sched_departure) as dep_ts,
+ extract(epoch from i.sched_arrival) as arr_ts
from traewelling as t
join in_transit as i on t.user_id = i.user_id
where t.push_sync = True