diff options
author | Daniel Friesel <derf@finalrewind.org> | 2021-01-11 22:09:00 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2021-01-11 22:09:00 +0100 |
commit | dcdea4247b6457202ce746814ff44d249c32d8b5 (patch) | |
tree | 3b009ca49536d257e736d714a84fee142cdbc914 /lib/DBInfoscreen/Helper/Wagonorder.pm | |
parent | d7376340ed10f412caefad198dfb2bac40448bbb (diff) |
train details: show cycle (if available)
Diffstat (limited to 'lib/DBInfoscreen/Helper/Wagonorder.pm')
-rw-r--r-- | lib/DBInfoscreen/Helper/Wagonorder.pm | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/DBInfoscreen/Helper/Wagonorder.pm b/lib/DBInfoscreen/Helper/Wagonorder.pm index e843b54..5904d86 100644 --- a/lib/DBInfoscreen/Helper/Wagonorder.pm +++ b/lib/DBInfoscreen/Helper/Wagonorder.pm @@ -1,4 +1,5 @@ package DBInfoscreen::Helper::Wagonorder; + # Copyright (C) 2011-2020 Daniel Friesel # # SPDX-License-Identifier: BSD-2-Clause @@ -56,6 +57,47 @@ sub is_available_p { return $promise; } +sub has_umlauf_p { + my ( $self, $train_no ) = @_; + + my $promise = Mojo::Promise->new; + + my $url = "https://lib.finalrewind.org/dbdb/db_umlauf/${train_no}.png"; + my $cache = $self->{main_cache}; + + if ( my $content = $cache->get($url) ) { + if ( $content eq 'y' ) { + return $promise->resolve; + } + else { + return $promise->reject; + } + } + + $self->{user_agent}->request_timeout(5)->head_p( $url => $self->{header} ) + ->then( + sub { + my ($tx) = @_; + if ( $tx->result->is_success ) { + $cache->set( $url, 'y' ); + $promise->resolve; + } + else { + $cache->set( $url, 'n' ); + $promise->reject; + } + return; + } + )->catch( + sub { + $cache->set( $url, 'n' ); + $promise->reject; + return; + } + )->wait; + return $promise; +} + sub check_wagonorder_p { my ( $self, $train_no, $wr_link ) = @_; |