Skip to content
Snippets Groups Projects
Commit ce21810e authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

(sort of) support station names containing slashes

parent 37aba10e
No related branches found
No related tags found
No related merge requests found
...@@ -306,7 +306,7 @@ helper 'json_route_diff' => sub { ...@@ -306,7 +306,7 @@ helper 'json_route_diff' => sub {
sub handle_request { sub handle_request {
my $self = shift; my $self = shift;
my $station = $self->stash('station'); my $station = $self->stash('station');
my $via = $self->stash('via'); my $via = $self->stash('via') // $self->param('via');
my @platforms = split( /,/, $self->param('platforms') // q{} ); my @platforms = split( /,/, $self->param('platforms') // q{} );
my @lines = split( /,/, $self->param('lines') // q{} ); my @lines = split( /,/, $self->param('lines') // q{} );
...@@ -365,6 +365,18 @@ sub handle_request { ...@@ -365,6 +365,18 @@ sub handle_request {
return; return;
} }
# foo/bar used to mean "departures for foo via bar", and this is still the
# default. However, there are also stations named "foo/bar". So, if
# "foo" is not a valid station, try "foo/bar" instead
if ( not @results and $self->stash('via')) {
$station = "$station/$via";
$via = undef;
$data = get_results_for( $backend, $station, %opt );
$results_ref = $data->{results};
$errstr = $data->{errstr};
@results = @{$results_ref};
}
if ( not @results ) { if ( not @results ) {
$self->handle_no_results( $backend, $station, $errstr ); $self->handle_no_results( $backend, $station, $errstr );
return; return;
...@@ -847,13 +859,11 @@ sub handle_request { ...@@ -847,13 +859,11 @@ sub handle_request {
get '/_redirect' => sub { get '/_redirect' => sub {
my $self = shift; my $self = shift;
my $station = $self->param('station'); my $station = $self->param('station');
my $via = $self->param('via');
my $params = $self->req->params; my $params = $self->req->params;
$params->remove('station'); $params->remove('station');
$params->remove('via');
for my $param (qw(platforms backend mode admode)) { for my $param (qw(platforms backend mode admode via)) {
if ( if (
not $params->param($param) not $params->param($param)
or ( exists $default{$param} or ( exists $default{$param}
...@@ -866,12 +876,7 @@ get '/_redirect' => sub { ...@@ -866,12 +876,7 @@ get '/_redirect' => sub {
$params = $params->to_string; $params = $params->to_string;
if ($via) { $self->redirect_to("/${station}?${params}");
$self->redirect_to("/${station}/${via}?${params}");
}
else {
$self->redirect_to("/${station}?${params}");
}
}; };
get '/_auto' => sub { get '/_auto' => sub {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment