Agent-TCLI-Package-Net
view release on metacpan or search on metacpan
lib/Agent/TCLI/Package/Net/HTTP.pm view on Meta::CPAN
usage: tget tget url=http:\example.com\request resp=404
---
Agent::TCLI::Command:
call_style: session
command: tcli_http
contexts:
http: cget
handler: get
help: makes a requests and returns response code
manual: >
Cget makes an http request for the supplied url and returns the
response code that is returned by the http server. This is useful in
checking what responses a server may be sending back.
name: cget
parameters:
url:
retry_interval:
retry_count:
required:
url:
topic: net
usage: http cget url=http:\example.com\request
...
}
sub _start {
my ($kernel, $self, $session) =
@_[KERNEL, OBJECT, SESSION];
$self->Verbose("_start: tcli http starting");
# are we up before OIO has finished initializing object?
if (!defined( $self->name ))
{
$kernel->yield('_start');
return;
}
# There is only one command object per TCLI
$kernel->alias_set($self->name);
# Keep the cm session so we can shut it down
$self->set(\@poco_cm , POE::Component::Client::Keepalive->new(
max_per_host => 4, # defaults to 4
max_open => 128, # defaults to 128
keep_alive => 15, # defaults to 15
timeout => 120, # defaults to 120
));
$self->set(\@poco_http , POE::Component::Client::HTTP->spawn(
Agent => $self->user_agents,
Alias => 'http-client', # defaults to 'weeble'
ConnectionManager => $poco_cm[$$self],
# From => 'spiffster@perl.org', # defaults to undef (no header)
# CookieJar => $cookie_jar,
# Protocol => 'HTTP/1.1', # defaults to 'HTTP/1.1'
# Timeout => 180, # defaults to 180 seconds
# MaxSize => 16384, # defaults to entire response
# Streaming => 4096, # defaults to 0 (off)
# FollowRedirects => 2 # defaults to 0 (off)
# Proxy => "http://localhost:80", # defaults to HTTP_PROXY env. variable
# NoProxy => [ "localhost", "127.0.0.1" ], # defs to NO_PROXY env. variable
));
$self->Verbose(" Dump ".$self->dump(1),3 );
}
sub _stop {
my ($kernel, $self,) =
@_[KERNEL, OBJECT,];
$self->Verbose("_stop: ".$self->name." stopping",2);
$poco_cm[$$self]->shutdown;
$self->set(\@poco_cm, undef);
}
sub get {
my ($kernel, $self, $session, $request, ) =
@_[KERNEL, OBJECT, SESSION, ARG0, ];
my $txt = '';
my $param;
my $command = $request->command->[0];
my $cmd = $self->commands->{$command};
return unless ( $param = $cmd->Validate($kernel, $request, $self) );
$self->Verbose("get: url(".$param->{'url'}.") ");
$self->Verbose("get: $command params",3,$param);
$param->{'try_count'} = 1;
$param->{'completed'} = 0;
$param->{'start_time'} = time();
$self->requests->{$request->id}{'request'} = $request;
$self->requests->{$request->id}{'param'} = $param;
# execution
$kernel->post( 'http-client' => 'request' => 'ProcessResponse' =>
GET($param->{'url'},
Connection => "Keep-Alive",
),
$request->id, #tag
'ResponseProgress', #progress callback
'', #proxy override
);
$request->Respond($kernel, 'Trying '.$param->{'url'},100)
if ( $param->{'http_verbose'} );
return;
}
sub ProcessResponse {
my ($kernel, $self, $request_packet, $response_packet) =
@_[KERNEL, OBJECT, ARG0, ARG1 ];
$self->Verbose("ProcessResponse: \tEntering ".$self->name." ",3 );
my $http_request = $request_packet->[0];
my $http_response = $response_packet->[0];
my $id = $request_packet->[1];
( run in 0.416 second using v1.01-cache-2.11-cpan-71847e10f99 )