diff options
author | Daniel Friesel <derf@finalrewind.org> | 2021-07-01 19:44:09 +0200 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2021-07-01 19:44:09 +0200 |
commit | 7b01cae7d5b76db82799a8a1618dbb20cfd7dec1 (patch) | |
tree | 448af7d6e20b538fc42f6e94c77c826753ee64e9 /lib | |
parent | 255d0610f1b5b62b7dd409eeba6c63da3fac4092 (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.pm | 26 | ||||
-rw-r--r-- | lib/Travelynx/Model/Traewelling.pm | 5 |
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 |