summaryrefslogtreecommitdiff
path: root/lib/DBInfoscreen/Helper/Marudor.pm
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2022-10-30 17:14:21 +0100
committerDaniel Friesel <derf@finalrewind.org>2022-10-30 17:14:21 +0100
commit4dbbedaf6bd953e5d57023eefc3acf742e91f511 (patch)
tree17161670d4758b096840ee77c77b1378ce595d1d /lib/DBInfoscreen/Helper/Marudor.pm
parent6b5d0f8bcc7ea7c76093803cbf8d52d8a0b0a377 (diff)
Move EFA code to separate helper class
Diffstat (limited to 'lib/DBInfoscreen/Helper/Marudor.pm')
-rw-r--r--lib/DBInfoscreen/Helper/Marudor.pm119
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;