Permalink
Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
53 lines (45 sloc) 1.14 KB
use strict;
use warnings;
use URI;
use HTTP::Request;
use POE;
use POE::Filter::HTTP::Parser;
use Test::POE::Client::TCP;
$|=1;
my $link = shift;
die "You must provide a url to fetch\n" unless $link;
my $uri = URI->new($link);
die "Can't handle that scheme sorry\n" unless $uri->scheme eq 'http';
POE::Session->create(
package_states => [
main => [qw(_start webc_connected webc_input)],
],
);
$poe_kernel->run();
exit 0;
sub _start {
my ($kernel,$heap) = @_[KERNEL,HEAP];
$heap->{webc} = Test::POE::Client::TCP->spawn(
address => $uri->host,
port => $uri->port,
autoconnect => 1,
prefix => 'webc',
filter => POE::Filter::HTTP::Parser->new( debug => 1 ),
);
return;
}
sub webc_connected {
my ($kernel,$heap) = @_[KERNEL,HEAP];
my $req = HTTP::Request->new( GET => ( $uri->path || '/' ) );
$req->header( 'Host', $uri->host_port );
$req->protocol( 'HTTP/1.1' );
$heap->{webc}->send_to_server( $req );
return;
}
sub webc_input {
my ($heap,$input) = @_[HEAP,ARG0];
print $input->as_string;
$heap->{webc}->shutdown();
delete $heap->{webc};
return;
}