diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2014-12-06 20:28:41 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2014-12-06 20:28:41 +0100 | 
| commit | c828f5b327bdbcd46a85890221ba47b91df386e0 (patch) | |
| tree | ce26385dd5d047c34f586b2f99d8de8123c7ecf9 | |
| parent | 88da26860bdbfea46b29ef83becb814edb92d10a (diff) | |
add special api for marudor's departure monitor app
| -rw-r--r-- | index.pl | 36 | 
1 files changed, 29 insertions, 7 deletions
@@ -15,7 +15,7 @@ our $VERSION = qx{git describe --dirty} || '0.05';  my $refresh_interval = 180;  sub get_results_for { -	my ( $backend, $station ) = @_; +	my ( $backend, $station, %opt ) = @_;  	my $cache = Cache::File->new(  		cache_root      => '/tmp/db-fake', @@ -45,14 +45,17 @@ sub get_results_for {  			my $status = Travel::Status::DE::IRIS->new(  				station      => $station, -				serializable => 1 +				serializable => 1, +				%opt  			);  			$results = [ $status->results ];  			$cache->freeze( $cache_str, $results );  		}  		else { -			my $status -			  = Travel::Status::DE::DeutscheBahn->new( station => $station ); +			my $status = Travel::Status::DE::DeutscheBahn->new( +				station => $station, +				%opt +			);  			$results = [ $status->results ];  			$cache->freeze( $cache_str, $results );  		} @@ -75,6 +78,7 @@ sub handle_request {  	my $backend        = $self->param('backend')       // 'ris';  	my $admode         = $self->param('admode')        // 'deparr';  	my $callback       = $self->param('callback'); +	my %opt;  	my $api_version  	  = $backend eq 'iris' @@ -85,7 +89,7 @@ sub handle_request {  	$self->stash( title      => 'db-fakedisplay' );  	$self->stash( version    => $VERSION ); -	if ( not( $template ~~ [qw[clean json multi single]] ) ) { +	if ( not( $template ~~ [qw[clean json marudor_v1 multi single]] ) ) {  		$template = 'multi';  	} @@ -98,10 +102,14 @@ sub handle_request {  		return;  	} +	if ( $template eq 'marudor_v1' and $backend eq 'iris' ) { +		$opt{lookahead} = 120; +	} +  	my @departures; -	my @results = get_results_for( $backend, $station ); +	my @results = get_results_for( $backend, $station, %opt ); -	if ( not @results and $template eq 'json' ) { +	if ( not @results and $template ~~ [qw[json marudor_v1]] ) {  		my $json;  		if ( $backend eq 'iris' ) {  			my @candidates = map { { code => $_->[0], name => $_->[1] } } @@ -348,6 +356,20 @@ sub handle_request {  			);  		}  	} +	if ( $template eq 'marudor_v1' ) { +		$callback //= 'db_fakedisplay'; +		my $json = $self->render_to_string( +			json => { +				api_version  => $api_version, +				preformatted => \@departures, +				version      => $VERSION, +			} +		); +		$self->render( +			data   => "$callback($json);", +			format => 'json' +		); +	}  	else {  		$self->render(  			$template,  | 
