From b25d3239cffb6ddc6810d3b61ada6b0e46502d44 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 22 Jul 2011 13:25:19 +0200 Subject: Add first try at CGI version --- cgi/index.pl | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 cgi/index.pl (limited to 'cgi/index.pl') diff --git a/cgi/index.pl b/cgi/index.pl new file mode 100644 index 0000000..cbc2f0b --- /dev/null +++ b/cgi/index.pl @@ -0,0 +1,58 @@ +#!/usr/bin/env perl +use Mojolicious::Lite; +use File::ShareDir qw(dist_file); +use HTML::Template; +use Travel::Status::DE::DeutscheBahn; + +get '/' => sub { + my $self = shift; + my $station = $self->param('station'); + if ( not $station ) { + return $self->render; + } + $self->redirect_to("/multi/${station}"); +} => 'index'; + +get '/multi/:station' => sub { + my $self = shift; + my $station = $self->stash('station'); + + my @params; + my $status = Travel::Status::DE::DeutscheBahn->new( station => $station ); + my $template = HTML::Template->new( + filename => dist_file( 'db-fakedisplay', 'multi-lcd.html' ), + loop_context_vars => 1, + ); + + for my $result ( $status->results ) { + push( + @params, + { + time => $result->time, + train => $result->train, + via => [ map { { stop => $_ } } $result->route_interesting(3) ], + destination => $result->destination, + platform => ( split( / /, $result->platform ) )[0], + info => $result->info, + } + ); + } + $template->param( departures => \@params ); + + $self->render( text => $template->output ); +}; + +app->start(); + +__DATA__ + +@@ index.html.ep +% title 'DB Fakedisplay'; +<% if (my $error = flash 'error' ) { %> + Error: <%= $error %>
+<% } %> +<%= form_for index => begin %> + Stop:
+ <%= text_field 'station' %>
+ <%= submit_button 'Display' %> +<% end %> -- cgit v1.2.3