diff options
Diffstat (limited to 'lib/DBInfoscreen/Helper')
| -rw-r--r-- | lib/DBInfoscreen/Helper/HAFAS.pm | 12 | ||||
| -rw-r--r-- | lib/DBInfoscreen/Helper/Wagonorder.pm | 69 | 
2 files changed, 78 insertions, 3 deletions
| diff --git a/lib/DBInfoscreen/Helper/HAFAS.pm b/lib/DBInfoscreen/Helper/HAFAS.pm index 18a3eda..c9a2ba2 100644 --- a/lib/DBInfoscreen/Helper/HAFAS.pm +++ b/lib/DBInfoscreen/Helper/HAFAS.pm @@ -29,9 +29,11 @@ sub hafas_rest_req {  		return $content;  	} -	my $res = eval { $self->{user_agent}->get($url)->result; }; +	my $res +	  = eval { $self->{user_agent}->get( $url => $self->{header} )->result; };  	if ($@) { +		$self->{log}->debug("hafas_rest_req($url): $@");  		return;  	}  	if ( $res->is_error ) { @@ -52,9 +54,11 @@ sub hafas_json_req {  		return $content;  	} -	my $res = eval { $self->{user_agent}->get($url)->result }; +	my $res +	  = eval { $self->{user_agent}->get( $url => $self->{header} )->result };  	if ($@) { +		$self->{log}->debug("hafas_json_req($url): $@");  		return;  	}  	if ( $res->is_error ) { @@ -82,9 +86,11 @@ sub hafas_xml_req {  		return $content;  	} -	my $res = eval { $self->{user_agent}->get($url)->result }; +	my $res +	  = eval { $self->{user_agent}->get( $url => $self->{header} )->result };  	if ($@) { +		$self->{log}->debug("hafas_xml_req($url): $@");  		return;  	}  	if ( $res->is_error ) { diff --git a/lib/DBInfoscreen/Helper/Wagonorder.pm b/lib/DBInfoscreen/Helper/Wagonorder.pm new file mode 100644 index 0000000..98c22ca --- /dev/null +++ b/lib/DBInfoscreen/Helper/Wagonorder.pm @@ -0,0 +1,69 @@ +package DBInfoscreen::Helper::Wagonorder; + +use strict; +use warnings; +use 5.020; + +use DateTime; +use Encode qw(decode encode); +use Mojo::JSON qw(decode_json); +use XML::LibXML; + +sub new { +	my ( $class, %opt ) = @_; + +	my $version = $opt{version}; + +	$opt{header} +	  = { 'User-Agent' => +		  "dbf/${version} +https://finalrewind.org/projects/db-fakedisplay" }; + +	return bless( \%opt, $class ); + +} + +sub is_available { +	my ( $self, $train, $wr_link ) = @_; + +	if ( $self->check_wagonorder( $train->train_no, $wr_link ) ) { +		return 1; +	} +	elsif ( $train->is_wing ) { +		my $wing = $train->wing_of; +		if ( $self->check_wagonorder( $wing->train_no, $wr_link ) ) { +			return 1; +		} +	} +	return; +} + +sub check_wagonorder { +	my ( $self, $train_no, $wr_link ) = @_; + +	my $url +	  = "https://lib.finalrewind.org/dbdb/has_wagonorder/${train_no}/${wr_link}"; +	my $cache = $self->{cache}; + +	if ( my $content = $self->{cache}->get($url) ) { +		return $content eq 'y' ? 1 : undef; +	} + +	my $ua = $self->{user_agent}->request_timeout(2); + +	my $res = eval { $ua->head( $url => $self->{header} )->result }; + +	if ($@) { +		$self->{log}->debug("check_wagonorder($url): $@"); +		return; +	} +	if ( $res->is_error ) { +		$cache->set( $url, 'n' ); +		return; +	} +	else { +		$cache->set( $url, 'y' ); +		return 1; +	} +} + +1; | 
