use strict;

use Data::Dumper;

#sub POE::Kernel::TRACE_DEFAULT () { 1 }
#sub POE::Kernel::ASSERT_DEFAULT () { 1 }
#sub POE::Kernel::TRACE_DEFAULT () { 1 }
BEGIN {
	require 'HTTP.pm';
	POE::Component::Server::HTTP->import();
}
#use HTTP::Status;




use POE;

#use Carp qw(confess);

#$SIG{INT} = sub { confess };

POE::Component::Server::HTTP->new(
				  Port => 8000, 
				  ContentHandler =>
				  {
				      '/' => \&callback,
				      '/arthur/' => \&artur,
				  },
				  #TransHandler => [\&uri],
				  #PostHandler => {
				  #    '/' => [\&post],
				  #},
				  #StreamHandler => \&stream,
				  Headers => { Foo => "bar" });



sub stream {
    my ($request, $response) = @_;
    $response->send(qq!<script language="JavaScript">alert("hi");</script>!);
    $response->close();
}

sub uri {
#	my ($request,$response) = @_;
#	$response->next();
#	return RC_WAIT;
}

sub artur {
    my $request = shift;
    my $response = shift;
    my $connection = shift;
    $response->code('200');
    $response->content("Welcome to " . $request->uri);
    return $response;
}

sub callback {
    my $request = shift;
    my $response = shift;
    my $connection = $request->connection;
    #my $cookie = CGI::Cookie->new(-name => "FOO", -value => "bar");

    $response->code('200');
    $response->push_header("Content-type", "text/html");
    #$response->push_header('Set-Cookie' => $cookie->as_string);
    $response->content("Welcome ".$connection->remote_ip);
#    $response->streaming(1);
    return $response;
}
$poe_kernel->run();