summaryrefslogtreecommitdiff
path: root/lib/DBInfoscreen/Helper/Marudor.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/DBInfoscreen/Helper/Marudor.pm')
-rw-r--r--lib/DBInfoscreen/Helper/Marudor.pm120
1 files changed, 0 insertions, 120 deletions
diff --git a/lib/DBInfoscreen/Helper/Marudor.pm b/lib/DBInfoscreen/Helper/Marudor.pm
deleted file mode 100644
index 21083a7..0000000
--- a/lib/DBInfoscreen/Helper/Marudor.pm
+++ /dev/null
@@ -1,120 +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 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) ) {
- return $promise->resolve($content);
- }
-
- $self->{log}->debug("get_json_p($url)");
-
- $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}"
- );
- $promise->reject(
- "GET $url returned HTTP $err->{code} $err->{message}");
- return;
- }
-
- my $res = $tx->res->json;
-
- $cache->freeze( $url, $res );
-
- $promise->resolve($res);
-
- return;
- }
- )->catch(
- sub {
- my ($err) = @_;
- $self->{log}->debug("marudor->get_json_p($url): $err");
- $promise->reject($err);
- return;
- }
- )->wait;
-
- return $promise;
-}
-
-sub get_train_utilization {
- my ( $self, %opt ) = @_;
-
- my $promise = Mojo::Promise->new;
- my $train = $opt{train};
-
- if ( not $train->sched_departure ) {
- $promise->reject("train has no departure");
- return $promise;
- }
-
- my $train_no = $train->train_no;
- my $this_station = $train->station;
- my @route = $train->route_post;
- my $next_station;
- my $dep = $train->sched_departure->iso8601;
-
- if ( @route > 1 ) {
- $next_station = $route[1];
- }
- else {
- $next_station = $route[0];
- }
-
- $self->get_json_p( $self->{realtime_cache},
-"https://marudor.de/api/hafas/v2/auslastung/${this_station}/${next_station}/${train_no}/${dep}"
- )->then(
- sub {
- my ($utilization_json) = @_;
-
- $promise->resolve( $utilization_json->{first},
- $utilization_json->{second} );
- return;
- }
- )->catch(
- sub {
- $promise->reject;
- return;
- }
- )->wait;
-
- return $promise;
-}
-
-1;