diff options
author | Daniel Friesel <derf@finalrewind.org> | 2022-10-30 17:14:21 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2022-10-30 17:14:21 +0100 |
commit | 4dbbedaf6bd953e5d57023eefc3acf742e91f511 (patch) | |
tree | 17161670d4758b096840ee77c77b1378ce595d1d /lib/DBInfoscreen/Helper/Marudor.pm | |
parent | 6b5d0f8bcc7ea7c76093803cbf8d52d8a0b0a377 (diff) |
Move EFA code to separate helper class
Diffstat (limited to 'lib/DBInfoscreen/Helper/Marudor.pm')
-rw-r--r-- | lib/DBInfoscreen/Helper/Marudor.pm | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/lib/DBInfoscreen/Helper/Marudor.pm b/lib/DBInfoscreen/Helper/Marudor.pm deleted file mode 100644 index 352829b..0000000 --- a/lib/DBInfoscreen/Helper/Marudor.pm +++ /dev/null @@ -1,119 +0,0 @@ -package DBInfoscreen::Helper::Marudor; - -# Copyright (C) 2020 Daniel Friesel -# -# SPDX-License-Identifier: AGPL-3.0-or-later - -use strict; -use warnings; -use 5.020; - -use DateTime; -use Encode qw(decode encode); -use Mojo::JSON qw(decode_json); -use Mojo::Promise; -use Mojo::Util qw(url_escape); -use XML::LibXML; - -sub new { - my ( $class, %opt ) = @_; - - my $version = $opt{version}; - - $opt{header} - = { 'User-Agent' => -"dbf/${version} on $opt{root_url} +https://finalrewind.org/projects/db-fakedisplay" - }; - - return bless( \%opt, $class ); - -} - -sub get_json_p { - my ( $self, $cache, $url ) = @_; - - my $promise = Mojo::Promise->new; - - if ( my $content = $cache->thaw($url) ) { - $self->{log}->debug("marudor->get_json_p($url): cached"); - if ( $content->{error} ) { - return $promise->reject( $content->{error} ); - } - return $promise->resolve($content); - } - - $self->{user_agent}->request_timeout(5)->get_p( $url => $self->{header} ) - ->then( - sub { - my ($tx) = @_; - - if ( my $err = $tx->error ) { - $self->{log}->debug( -"marudor->get_json_p($url): HTTP $err->{code} $err->{message}" - ); - $cache->freeze( $url, { error => $err->{message} } ); - $promise->reject( - "GET $url returned HTTP $err->{code} $err->{message}"); - return; - } - - my $res = $tx->res->json; - - if ( not $res ) { - $self->{log} - ->debug("marudor->get_json_p($url): empty response"); - $promise->reject("GET $url returned empty response"); - return; - } - - $cache->freeze( $url, $res ); - - $promise->resolve($res); - - return; - } - )->catch( - sub { - my ($err) = @_; - $self->{log}->debug("marudor->get_json_p($url): $err"); - $cache->freeze( $url, { error => $err } ); - $promise->reject($err); - return; - } - )->wait; - - return $promise; -} - -sub get_efa_occupancy { - my ( $self, %opt ) = @_; - - my $eva = $opt{eva}; - my $train_no = $opt{train_no}; - my $promise = Mojo::Promise->new; - - $self->get_json_p( $self->{realtime_cache}, - "https://vrrf.finalrewind.org/_eva/occupancy-by-eva/${eva}.json" ) - ->then( - sub { - my ($utilization_json) = @_; - - if ( $utilization_json->{train}{$train_no}{occupancy} ) { - $promise->resolve( - $utilization_json->{train}{$train_no}{occupancy} ); - return; - } - $promise->reject; - return; - } - )->catch( - sub { - $promise->reject; - return; - } - )->wait; - - return $promise; -} - -1; |