NAME
IO::Lambda::HTTP - http requests lambda style
DESCRIPTION
The module exports a single predicate http_request
that accepts a HTTP::Request
object and set of options as parameters. Returns either a HTTP::Response
on success, or an error string otherwise.
SYNOPSIS
use HTTP::Request;
use IO::Lambda qw(:all);
use IO::Lambda::HTTP qw(http_request);
lambda {
context shift;
http_request {
my $result = shift;
if ( ref($result)) {
print "good: ", length($result-> content), " bytes\n";
} else {
print "bad: $result\n";
}
}
}-> wait(
HTTP::Request-> new( GET => "http://www.perl.com/")
);
API
- http_request $HTTP::Request
-
http_request
is a lambda predicate that acceptsHTTP::Request
object in the context. Returns either aHTTP::Response
object on success, or error string otherwise. - new $HTTP::Request
-
Stores
HTTP::Request
object and returns a new lambda that will finish when the associated request completes. The lambda will return either aHTTP::Response
object on success, or an error string otherwise.
OPTIONS
- async_dns BOOLEAN
-
If set, hostname will be resolved with IO::Lambda::DNS using asynchronous Net::DNS. Note that this method won't be able to account for non-DNS (/etc/hosts, NIS) host names.
If unset (default), hostnames will be resolved in a blocking manner.
- auth $AUTH
-
Normally, a request is sent without any authentication. The authentication is only tried after a 401 error is returned. To avoid this first stage, knowing in advance the type of authentication that shall be accepted by the remote, option
auth
can be used.username => 'user', password => 'pass', auth => 'Basic',
- conn_cache $LWP::ConnCache = undef
-
The requestor can optionally use a
LWP::ConnCache
object to reuse connections on per-host per-port basis. Desired for HTTP/1.1. Required for NTLM authentication. See LWP::ConnCache for details. - deadline SECONDS = undef
-
Aborts a request and returns
'timeout'
string if it is not finished by the given deadline (in epoch seconds). If undef, no timeouts occur. - keep_alive BOOLEAN
-
If set, all incoming requests are silently converted to use HTTP/1.1, and connections are reused. Same as a combination of the following:
$req-> protocol('HTTP/1.1'); $req-> headers-> header( Host => $req-> uri-> host); new( $req, conn_cache => LWP::ConnCache-> new);
- max_redirect NUM = 7
-
Maximum allowed redirects. If 0, no redirection attemps are made.
- preferred_auth $AUTH|%AUTH
-
List of preferred authentication methods, used to choose the authentication method where there are more than one supported by the server. When the value is a string, the given method is tried first, and then all available methods. When it is a hash, its values are treated as weight factors, - the method with the greatest weight is tried first. Negative values prevent the corresponding methods from being tried.
# try basic and whatever else preferred_auth => 'Basic', # try basic and never ntlm preferred_auth => { Basic => 1, NTLM => -1, },
Note that the current implementation doesn't provide re-trying of authentication if either a method or username/password combination fails. When at least one method was declared by the remote as supported, and was tried and failed, no further retries are made.
- proxy HOSTNAME | [ HOSTNAME, PORT ]
-
If set, HOSTNAME (or HOSTNAME and PORT tuple) is used as HTTP proxy settings.
- timeout SECONDS = undef
-
Maximum allowed time the request can take. If undef, no timeouts occur.
BUGS
Non-blocking connects, and hence the module, don't work on win32 on perl5.8.X due to under-implementation in ext/IO.xs . They do work on 5.10 however.
SEE ALSO
IO::Lambda, HTTP::Request, HTTP::Response
AUTHOR
Dmitry Karasik, <dmitry@karasik.eu.org>.