#!/usr/bin/perl -w
#
#

use strict;
use utf8;
require LWP::UserAgent;
my $ua = LWP::UserAgent->new(env_proxy => 1,
                              keep_alive => 1,
                              timeout => 30,
                             );
use HTTP::Cookies;
use LWP;
$ua->cookie_jar({});

###############
$sensor::url_refresh = "http://slug.realraum.at/cgi-bin/sensor-movement.cgi";
$sensor::url_image = "http://slug.realraum.at/movement.png";
$sensor::localpath = "/tmp/movement.png";
$sensor::mintime = 0.0015;
###############

sub output_saved_image
{
  return 0 if ( not -e $sensor::localpath);
  my $fh;  
  print STDOUT "Content-type: image/png\n\n";
  open($fh,"<$sensor::localpath") or exit;
  while (<$fh>) {print $_};
  close($fh);
  return 1;
}

sub output_remote_image_and_save
{
  my $response;
  $response = $ua->get($sensor::url_refresh);
  return 0 unless (defined $response);
  $response = $ua->get($sensor::url_image);
  if (defined $response and $response->content =~ /^\x89PNG/)
  {
    my $fh;
    open($fh,">$sensor::localpath");
    print $fh $response->content;
    close($fh);
    print STDOUT "Content-type: image/png\n\n";
    print $response->content;
    $response->clear;
    return 1;
  }
  return 0;
}

sub output_error
{
  print STDOUT "Status: 404 Not Found\n";
  print STDOUT "Content-type: text/html\n\n";
  print STDOUT "<html><body><h1>Sorry</h1><h2>The picture you requested could not be found</h2></body></html>\n"; 
  return 1;
}

if (-e $sensor::localpath and -M $sensor::localpath < $sensor::mintime)
{
  exit if (&output_saved_image);
}
else
{
  exit if (&output_remote_image_and_save);
  exit if (&output_saved_image);
}
&output_error;
