#!/usr/bin/perl -T

use warnings;
use strict;
use lib qw(lib);

BEGIN {
  $ENV{'DOCUMENT_ROOT'} = './htdocs';
}

use ClearPress::util;
use ClearPress::controller;

use GrandKids::view::family;
use GrandKids::model::family;
use GrandKids::view::child;
use GrandKids::model::child;

our $VERSION = do { my ($r) = q$LastChangedRevision: 161 $ =~ /(\d+)/mx; $r; };

GrandKids::sa->new->run();

0;

package GrandKids::sa;
use base qw(HTTP::Server::Simple::CGI);
use strict;
use warnings;
use Data::Dumper;
use Carp;
use English qw(-no_match_vars);

sub handle_request {
  my ($self, $cgi) = @_;

#  print {*STDERR} Dumper($cgi);
#  print {*STDERR} Dumper(%ENV);
  my $EXTN = {
	      'css'  => 'text/css',
	      'xml'  => 'text/xml',
	      'gif'  => 'image/gif',
	      'png'  => 'image/png',
	      'jpg'  => 'image/jpeg',
	      'txt'  => 'text/plain',
	      'html' => 'text/html',
	     };

  my $util = ClearPress::util->new({
				    'cgi' => $cgi,
				   });
  print "HTTP/1.0 200 OK\n";

  my ($fn) = "htdocs$ENV{'REQUEST_URI'}" =~ m|([a-z\d_/\.%]+)|mix;
  $fn      =~ s|\.\./||mxg;

  if(-f $fn) {
    my ($ext) = $fn =~ /\.([^\.]+)$/mx;

    my $type  = $EXTN->{lc $ext} || 'application/octet-stream';
    print qq(Content-type: $type\n\n);
    carp qq(Serving static file $fn as $ext / $type);
    open my $fh, $fn or croak "Opening $fn: $ERRNO";
    while(<$fh>) {
      print;
    }
    close $fh or croak "Closing $fn: $ERRNO";
  } else {
    ClearPress::controller->handler($util);
  }

  return;
}

sub print_banner {
  my $self = shift;
  print q(ClearPress development server up and running at http://localhost:).$self->port()."/\n";
  return;
}
 
1;
 
