diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2020-10-17 11:03:47 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2020-10-17 11:03:47 +0200 | 
| commit | 8123797cf177f1a5ac2410d6137a69e3cd7e1f82 (patch) | |
| tree | 8d4b6ca8bbb3b22ad734f4aaf62e0cf46b06edc0 | |
| parent | e61550f751feb132aa1a51cd860837d753e9dcd7 (diff) | |
Traewelling: use the recently added login token expiry field
| -rw-r--r-- | lib/Travelynx/Helper/Traewelling.pm | 50 | 
1 files changed, 28 insertions, 22 deletions
| diff --git a/lib/Travelynx/Helper/Traewelling.pm b/lib/Travelynx/Helper/Traewelling.pm index c7d3ff6..48d0f55 100644 --- a/lib/Travelynx/Helper/Traewelling.pm +++ b/lib/Travelynx/Helper/Traewelling.pm @@ -18,10 +18,30 @@ sub new {  "travelynx/${version} on $opt{root_url} +https://finalrewind.org/projects/travelynx",  		'Accept' => 'application/json',  	}; +	$opt{strp1} = DateTime::Format::Strptime->new( +		pattern   => '%Y-%m-%dT%H:%M:%S.000000Z', +		time_zone => 'UTC', +	); +	$opt{strp2} = DateTime::Format::Strptime->new( +		pattern   => '%Y-%m-%d %H:%M:%S', +		time_zone => 'Europe/Berlin', +	); +	$opt{strp3} = DateTime::Format::Strptime->new( +		pattern   => '%Y-%m-%dT%H:%M:%S%z', +		time_zone => 'Europe/Berlin', +	);  	return bless( \%opt, $class );  } +sub parse_datetime { +	my ( $self, $dt ) = @_; + +	return $self->{strp1}->parse_datetime($dt) +	  // $self->{strp2}->parse_datetime($dt) +	  // $self->{strp3}->parse_datetime($dt); +} +  sub get_status_p {  	my ( $self, %opt ) = @_; @@ -47,29 +67,14 @@ sub get_status_p {  			}  			else {  				if ( my $status = $tx->result->json->{statuses}{data}[0] ) { -					my $strp1 = DateTime::Format::Strptime->new( -						pattern   => '%Y-%m-%dT%H:%M:%S.000000Z', -						time_zone => 'UTC', -					); -					my $strp2 = DateTime::Format::Strptime->new( -						pattern   => '%Y-%m-%d %H:%M:%S', -						time_zone => 'Europe/Berlin', -					);  					my $status_id = $status->{id};  					my $message   = $status->{body};  					my $checkin_at -					  = $strp1->parse_datetime( $status->{created_at} ) -					  // $strp2->parse_datetime( $status->{created_at} ); +					  = $self->parse_datetime( $status->{created_at} ); -					my $dep_dt -					  = $strp1->parse_datetime( -						$status->{train_checkin}{departure} ) -					  // $strp2->parse_datetime( +					my $dep_dt = $self->parse_datetime(  						$status->{train_checkin}{departure} ); -					my $arr_dt -					  = $strp1->parse_datetime( -						$status->{train_checkin}{arrival} ) -					  // $strp2->parse_datetime( +					my $arr_dt = $self->parse_datetime(  						$status->{train_checkin}{arrival} );  					my $dep_eva @@ -198,11 +203,12 @@ sub login_p {  				return;  			}  			else { -				$token = $tx->result->json->{token}; +				my $res = $tx->result->json; +				$token = $res->{token}; +				my $expiry_dt = $self->parse_datetime( $res->{expires_at} ); -               # As of 2020-10-04, Traewelling tokens expire one year after they -               # are generated -				my $expiry_dt = DateTime->now( time_zone => 'Europe/Berlin' ) +				# Fall back to one year expiry +				$expiry_dt //= DateTime->now( time_zone => 'Europe/Berlin' )  				  ->add( years => 1 );  				$self->{model}->link(  					uid     => $uid, | 
