Bio-Das
view release on metacpan or search on metacpan
Das/HTTP/Fetch.pm view on Meta::CPAN
$fetcher->send_request();
$fetcher->read();
my $request = $fetcher->request;
my $socket = $fetcher->socket;
my $error = $fetcher->error;
my $url = $fetcher->url;
my $path = $fetcher->path;
my $outgoing_args = $fetcher->outgoing_args;
my $outgoing_headers = $fetcher->outgoing_headers;
my $auth = $fetcher->auth;
my $incoming_header = $fetcher->incoming_header;
my $method = $fetcher->method;
my $protocol = $fetcher->mode([$new_protocol]);
my $status = $fetcher->status([$new_status]);
my $debug = $fetcher->debug([$new_debug]);
my ($protocol,$host,$port,$path,$user,$pass) = $fetcher->parse_url($url);
=head1 DESCRIPTION
This is a low-level class that is used for managing multiplexed
connections to DAS HTTP servers. It is used internally by L<Bio::Das>
and it is unlikely that application programs will ever interact with
it directly. The exception is when writing custom authentication
subroutines to fetch username/password information for
password-protected servers, in which case an L<Bio::Das::HTTP::Fetch>
is passed to the authentication subroutine.
=head2 METHODS
Following is a complete list of methods implemented by
Bio::Das::HTTP::Fetch.
=over 4
=cut
BEGIN {
eval "use Errno 'EINPROGRESS','EWOULDBLOCK'";
unless (defined &EINPROGRESS) {
eval "use constant EINPROGRESS => 115; use constant EWOULDBLOCK => 11";
}
}
use strict;
use IO::Socket qw(:DEFAULT :crlf);
use Bio::Das::Util;
use Bio::Das::Request;
use MIME::Base64; # For HTTP authenication encoding
use Carp 'croak';
use vars '$VERSION';
$VERSION = '1.11';
my $ERROR = ''; # for errors that occur before we create the object
use constant READ_UNIT => 1024 * 5; # 5K read units
=item $fetcher = Bio::Das::HTTP::Request->new(@args)
Create a new fetcher object. At the time the object is created, it
will attempt to establish a non-blocking connection with the remote
server. This means that the call to new() may be returned before the
connection is established.
Arguments are as follows:
Name Description
---- -----------
-request The Bio::Das::Request to run.
-headers A hashref containing additional
headers to attach to the HTTP request.
Typically used to enable data stream compression.
-proxy An HTTP proxy to use.
-norfcwarn Disable the warning that appears when the request
contains username/password information attached to
the URL.
-debug Activate verbose debugging messages
=cut
# notes:
# -request: an object implements the following methods:
# ->url() return the url for the request
# ->method() return the method for the request ('auto' allowed)
# ->args() return the args for the request
# ->headers($hash) do something with the HTTP headers (canonicalized)
# ->start_body() the body is starting, so do initialization
# ->body($string) a piece of the body text
# ->finish_body() the body has finished, so do cleanup
# ->error() set an error message
#
# the request should return undef to abort the fetch and cause immediate cleanup
#
# -request: a Bio::Das::Request object
#
# -headers: hashref whose keys are HTTP headers and whose values are scalars or array refs
# required headers will be added
#
sub new {
my $pack = shift;
my ($request,$headers,$proxy,$norfcwarn,$debug) = rearrange(['request',
'headers',
'proxy',
'norfcwarn',
'debug',
],@_);
croak "Please provide a -request argument" unless $request;
# parse URL, return components
my $dest = $proxy || $request->url;
my ($mode,$host,$port,$path,$user,$pass) = $pack->parse_url($dest,$norfcwarn);
croak "invalid url: $dest\n" unless $host;
( run in 0.459 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )