diff options
| -rw-r--r-- | examples/travelynx.conf | 6 | ||||
| -rwxr-xr-x | lib/Travelynx.pm | 3 | ||||
| -rw-r--r-- | 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; | 
