diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2021-01-04 21:22:51 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2021-01-04 21:22:51 +0100 | 
| commit | 00264d55f4230e793df193c1e0ef29bc318e5f85 (patch) | |
| tree | 120fdb947229135e414418e4fd7231a0fbf33b05 | |
| parent | aa1a5ed571f6a87f512f8afa706160d1dd9800f8 (diff) | |
move handle_no_results from helpers to Stationboard controller
| -rw-r--r-- | lib/DBInfoscreen.pm | 108 | ||||
| -rw-r--r-- | lib/DBInfoscreen/Controller/Stationboard.pm | 102 | 
2 files changed, 102 insertions, 108 deletions
| diff --git a/lib/DBInfoscreen.pm b/lib/DBInfoscreen.pm index 94b4d5b..bfd8aa2 100644 --- a/lib/DBInfoscreen.pm +++ b/lib/DBInfoscreen.pm @@ -229,114 +229,6 @@ sub startup {  	);  	$self->helper( -		'handle_no_results' => sub { -			my ( $self, $backend, $station, $errstr ) = @_; - -			if ( $backend eq 'ris' ) { -				my $db_service = Travel::Status::DE::HAFAS::get_service('DB'); -				my $sf         = Travel::Status::DE::HAFAS::StopFinder->new( -					url   => $db_service->{stopfinder}, -					input => $station, -				); -				my @candidates -				  = map { [ $_->{name}, $_->{id} ] } $sf->results; -				if ( @candidates > 1 -					or ( @candidates == 1 and $candidates[0][1] ne $station ) ) -				{ -					$self->render( -						'landingpage', -						stationlist => \@candidates, -						hide_opts   => 0, -						status      => 300, -					); -					return; -				} -			} -			if ( $backend eq 'iris' ) { -				my @candidates = map { [ $_->[1], $_->[0] ] } -				  Travel::Status::DE::IRIS::Stations::get_station($station); -				if ( @candidates > 1 -					or ( @candidates == 1 and $candidates[0][1] ne $station ) ) -				{ -					$self->render( -						'landingpage', -						stationlist => \@candidates, -						hide_opts   => 0, -						status      => 300, -					); -					return; -				} -			} -			$self->render( -				'landingpage', -				error     => ( $errstr // "Got no results for '$station'" ), -				hide_opts => 0 -			); -			return; -		} -	); - -	$self->helper( -		'handle_no_results_json' => sub { -			my ( $self, $backend, $station, $errstr, $api_version ) = @_; - -			my $callback = $self->param('callback'); - -			$self->res->headers->access_control_allow_origin(q{*}); -			my $json; -			if ($errstr) { -				$json = $self->render_to_string( -					json => { -						api_version => $api_version, -						version     => $self->config->{version}, -						error       => $errstr, -					} -				); -			} -			else { -				my @candidates = map { { code => $_->[0], name => $_->[1] } } -				  Travel::Status::DE::IRIS::Stations::get_station($station); -				if ( @candidates > 1 -					or -					( @candidates == 1 and $candidates[0]{code} ne $station ) ) -				{ -					$json = $self->render_to_string( -						json => { -							api_version => $api_version, -							version     => $self->config->{version}, -							error       => 'ambiguous station code/name', -							candidates  => \@candidates, -						} -					); -				} -				else { -					$json = $self->render_to_string( -						json => { -							api_version => $api_version, -							version     => $self->config->{version}, -							error => -							  ( $errstr // "Got no results for '$station'" ) -						} -					); -				} -			} -			if ($callback) { -				$self->render( -					data   => "$callback($json);", -					format => 'json' -				); -			} -			else { -				$self->render( -					data   => $json, -					format => 'json' -				); -			} -			return; -		} -	); - -	$self->helper(  		'is_important' => sub {  			my ( $self, $stop ) = @_; diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm index b591208..9bb09b1 100644 --- a/lib/DBInfoscreen/Controller/Stationboard.pm +++ b/lib/DBInfoscreen/Controller/Stationboard.pm @@ -29,6 +29,108 @@ my %default = (  	admode  => 'deparr',  ); +sub handle_no_results { +	my ( $self, $backend, $station, $errstr ) = @_; + +	if ( $backend eq 'ris' ) { +		my $db_service = Travel::Status::DE::HAFAS::get_service('DB'); +		my $sf         = Travel::Status::DE::HAFAS::StopFinder->new( +			url   => $db_service->{stopfinder}, +			input => $station, +		); +		my @candidates +		  = map { [ $_->{name}, $_->{id} ] } $sf->results; +		if ( @candidates > 1 +			or ( @candidates == 1 and $candidates[0][1] ne $station ) ) +		{ +			$self->render( +				'landingpage', +				stationlist => \@candidates, +				hide_opts   => 0, +				status      => 300, +			); +			return; +		} +	} +	if ( $backend eq 'iris' ) { +		my @candidates = map { [ $_->[1], $_->[0] ] } +		  Travel::Status::DE::IRIS::Stations::get_station($station); +		if ( @candidates > 1 +			or ( @candidates == 1 and $candidates[0][1] ne $station ) ) +		{ +			$self->render( +				'landingpage', +				stationlist => \@candidates, +				hide_opts   => 0, +				status      => 300, +			); +			return; +		} +	} +	$self->render( +		'landingpage', +		error     => ( $errstr // "Got no results for '$station'" ), +		hide_opts => 0 +	); +	return; +} + +sub handle_no_results_json { +	my ( $self, $backend, $station, $errstr, $api_version ) = @_; + +	my $callback = $self->param('callback'); + +	$self->res->headers->access_control_allow_origin(q{*}); +	my $json; +	if ($errstr) { +		$json = $self->render_to_string( +			json => { +				api_version => $api_version, +				version     => $self->config->{version}, +				error       => $errstr, +			} +		); +	} +	else { +		my @candidates = map { { code => $_->[0], name => $_->[1] } } +		  Travel::Status::DE::IRIS::Stations::get_station($station); +		if ( @candidates > 1 +			or ( @candidates == 1 and $candidates[0]{code} ne $station ) ) +		{ +			$json = $self->render_to_string( +				json => { +					api_version => $api_version, +					version     => $self->config->{version}, +					error       => 'ambiguous station code/name', +					candidates  => \@candidates, +				} +			); +		} +		else { +			$json = $self->render_to_string( +				json => { +					api_version => $api_version, +					version     => $self->config->{version}, +					error => ( $errstr // "Got no results for '$station'" ) +				} +			); +		} +	} +	if ($callback) { +		$self->render( +			data   => "$callback($json);", +			format => 'json' +		); +	} +	else { +		$self->render( +			data   => $json, +			format => 'json' +		); +	} +	return; +} +  sub result_is_train {  	my ( $result, $train ) = @_; | 
