From ed0054fa50da9e4a3e08ef069b8b5bbc9709934f Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sat, 30 Oct 2021 10:02:58 +0200 Subject: Allow usage of custom hafas-rest-api instances --- examples/travelynx.conf | 6 ++++++ lib/Travelynx.pm | 3 +++ lib/Travelynx/Helper/HAFAS.pm | 15 +++++++++------ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/examples/travelynx.conf b/examples/travelynx.conf index 7f15d12..0499796 100644 --- a/examples/travelynx.conf +++ b/examples/travelynx.conf @@ -5,6 +5,12 @@ # 'localhost'. { + # travelynx relies on several backend projects. You may override the + # defaults to use other (e.g. self-hosted) instances. + backend => { + hafas_rest_api => 'https://v5.db.transport.rest', + }, + # Cache directories for schedule and realtime data. Mandatory. The parent # directory ('/var/cache/travelynx' in this case) must already exist. cache => { diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 91de1c6..d7f9128 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -93,6 +93,8 @@ sub startup { $self->secrets( $self->config->{secrets} ); } + $self->config->{backend}{hafas_rest_api} //= 'https://v5.db.transport.rest'; + chomp $self->config->{version}; $self->plugin( @@ -279,6 +281,7 @@ sub startup { my ($self) = @_; state $hafas = Travelynx::Helper::HAFAS->new( log => $self->app->log, + hafas_rest_api => $self->app->config->{backend}{hafas_rest_api}, main_cache => $self->app->cache_iris_main, realtime_cache => $self->app->cache_iris_rt, root_url => $self->url_for('/')->to_abs, diff --git a/lib/Travelynx/Helper/HAFAS.pm b/lib/Travelynx/Helper/HAFAS.pm index 6fd5c71..c4bc66a 100644 --- a/lib/Travelynx/Helper/HAFAS.pm +++ b/lib/Travelynx/Helper/HAFAS.pm @@ -30,9 +30,9 @@ sub new { sub get_polyline_p { my ( $self, $train, $trip_id ) = @_; - my $line = $train->line // 0; - my $url - = "https://v5.db.transport.rest/trips/${trip_id}?lineName=${line}&polyline=true"; + my $line = $train->line // 0; + my $backend = $self->{hafas_rest_api}; + my $url = "${backend}/trips/${trip_id}?lineName=${line}&polyline=true"; my $cache = $self->{main_cache}; my $promise = Mojo::Promise->new; my $version = $self->{version}; @@ -41,6 +41,9 @@ sub get_polyline_p { return $promise->resolve($content); } + my $log_url = $url; + $log_url =~ s{://\K[^:]+:[^@]+\@}{***@}; + $self->{user_agent}->request_timeout(5)->get_p( $url => $self->{header} ) ->then( sub { @@ -48,7 +51,7 @@ sub get_polyline_p { if ( my $err = $tx->error ) { $promise->reject( -"hafas->get_polyline_p($url) returned HTTP $err->{code} $err->{message}" +"hafas->get_polyline_p($log_url) returned HTTP $err->{code} $err->{message}" ); return; } @@ -97,7 +100,7 @@ sub get_polyline_p { . ": IRIS route does not agree with HAFAS route: $iris_stations != $hafas_stations" ); $promise->reject( - "hafas->get_polyline_p($url): polyline route mismatch"); + "hafas->get_polyline_p($log_url): polyline route mismatch"); } else { $promise->resolve($ret); @@ -107,7 +110,7 @@ sub get_polyline_p { )->catch( sub { my ($err) = @_; - $promise->reject("hafas->get_polyline_p($url): $err"); + $promise->reject("hafas->get_polyline_p($log_url): $err"); return; } )->wait; -- cgit v1.2.3