diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2016-11-04 18:49:09 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2016-11-04 18:49:09 +0100 | 
| commit | ce21810e88853a12823902cdf7e7291f1516c376 (patch) | |
| tree | 3a2fcf691086d3d2d4683fff61085112438842c1 | |
| parent | 37aba10e6fd760f48bc03bb3a7bfbcdb8a45832d (diff) | |
(sort of) support station names containing slashes
| -rw-r--r-- | index.pl | 25 | 
1 files changed, 15 insertions, 10 deletions
| @@ -306,7 +306,7 @@ helper 'json_route_diff' => sub {  sub handle_request {  	my $self    = shift;  	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 @lines     = split( /,/, $self->param('lines')     // q{} ); @@ -365,6 +365,18 @@ sub handle_request {  		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 ) {  		$self->handle_no_results( $backend, $station, $errstr );  		return; @@ -847,13 +859,11 @@ sub handle_request {  get '/_redirect' => sub {  	my $self    = shift;  	my $station = $self->param('station'); -	my $via     = $self->param('via');  	my $params  = $self->req->params;  	$params->remove('station'); -	$params->remove('via'); -	for my $param (qw(platforms backend mode admode)) { +	for my $param (qw(platforms backend mode admode via)) {  		if (  			not $params->param($param)  			or ( exists $default{$param} @@ -866,12 +876,7 @@ get '/_redirect' => sub {  	$params = $params->to_string; -	if ($via) { -		$self->redirect_to("/${station}/${via}?${params}"); -	} -	else { -		$self->redirect_to("/${station}?${params}"); -	} +	$self->redirect_to("/${station}?${params}");  };  get '/_auto' => sub { | 
