summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2014-10-19 21:04:08 +0200
committerDaniel Friesel <derf@finalrewind.org>2014-10-19 21:04:08 +0200
commitbe21dec79365be950f9bc8cb78baa826e3e0f704 (patch)
tree30c8f245ee98cfea3f594d965e7c4d985012a562
parentc73b20e6393cb56d295bff560a4971f391f0b2d4 (diff)
json: show list of candidates in case of an error
-rw-r--r--index.pl23
1 files changed, 23 insertions, 0 deletions
diff --git a/index.pl b/index.pl
index 0ad9447..fb3b3f0 100644
--- a/index.pl
+++ b/index.pl
@@ -79,6 +79,28 @@ sub handle_request {
my @departures;
my @results = get_results_for( $backend, $station );
+ if ( not @results and $template eq 'json' ) {
+ if ( $backend eq 'iris' ) {
+ my @candidates = map { { code => $_->[0], name => $_->[1] } }
+ Travel::Status::DE::IRIS::Stations::get_station($station);
+ $self->render(
+ json => {
+ version => $VERSION,
+ error => 'ambiguous station code/name',
+ candidates => \@candidates,
+ }
+ );
+ return;
+ }
+ $self->render(
+ json => {
+ version => $VERSION,
+ error => 'unknown station code/name',
+ }
+ );
+ return;
+ }
+
if ( not @results ) {
if ( $backend eq 'iris' ) {
my @candidates = map { [ "$_->[1] ($_->[0])", $_->[0] ] }
@@ -89,6 +111,7 @@ sub handle_request {
stationlist => \@candidates,
hide_opts => 0
);
+ return;
}
}
$self->render(