summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cgi/index.pl58
1 files changed, 58 insertions, 0 deletions
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 %><br/>
+<% } %>
+<%= form_for index => begin %>
+ Stop:<br/>
+ <%= text_field 'station' %><br/>
+ <%= submit_button 'Display' %>
+<% end %>