NAME

POE::Component::SmokeBox::Recent::HTTP - an extremely minimal HTTP client

VERSION

version 1.54

SYNOPSIS

# Obtain the RECENT file from a given CPAN mirror.
 use strict;
 use warnings;
 use File::Spec;
 use POE qw(Component::SmokeBox::Recent::HTTP);
 use URI;

 my $url = shift || die "You must provide a url parameter\n";

 my $uri = URI->new( $url );

 die "Unsupported scheme\n" unless $uri->scheme and $uri->scheme eq 'http';

 $uri->path( File::Spec::Unix->catfile( $uri->path(), 'RECENT' ) );

 POE::Session->create(
    package_states => [
 	main => [qw(_start http_sockerr http_timeout http_response)],
    ]
 );

 $poe_kernel->run();
 exit 0;

 sub _start {
   POE::Component::SmokeBox::Recent::HTTP->spawn(
 	uri => $uri,
   );
   return;
 }

 sub http_sockerr {
   warn join ' ', @_[ARG0..$#_];
   return;
 }

 sub http_timeout {
   warn $_[ARG0], "\n";
   return;
 }

 sub http_response {
   my $http_response = $_[ARG0];
   print $http_response->as_string;
   return;
 }

DESCRIPTION

POE::Component::SmokeBox::Recent::HTTP is the small helper module used by POE::Component::SmokeBox::Recent to do HTTP client duties.

It only implements a simple request with no following of redirections and connection keep-alive, etc.

CONSTRUCTOR

spawn

Takes a number of parameters:

'uri', a URI object for the URL you wish to retrieve, mandatory;
'session', optional if the poco is spawned from within another session;
'prefix', specify an event prefix other than the default of 'http';
'timeout', specify a timeout in seconds, default is 60;

OUTPUT EVENTS

The component sends the following events. If you have changed the prefix option in spawn then substitute http with the event prefix that you specified.

http_sockerr

Generated if there is a problem connecting to the given HTTP host/address. ARG0 contains the name of the operation that failed. ARG1 and ARG2 hold numeric and string values for $!, respectively.

http_timeout

Triggered if we don't get a response from the HTTP server.

http_response

Emitted when the transfer has finished. ARG0 will be a HTTP::Response object. It is up to you to check the status, etc. of the response.

AUTHOR

Chris Williams <chris@bingosnet.co.uk>

COPYRIGHT AND LICENSE

This software is copyright (c) 2020 by Chris Williams.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.