AnyEvent-HTTP-Message
view release on metacpan or search on metacpan
lib/AnyEvent/HTTP/Request.pm view on Meta::CPAN
sub to_http_message {
my ($self) = @_;
require HTTP::Request;
my $res = HTTP::Request->new(
$self->method,
$self->uri,
[ %{ $self->headers } ],
$self->body
);
return $res;
}
1;
__END__
=pod
=encoding utf-8
=for :stopwords Randy Stauner ACKNOWLEDGEMENTS TODO featureful http uri cb params
=head1 NAME
AnyEvent::HTTP::Request - HTTP Request object for AnyEvent::HTTP
=head1 VERSION
version 0.302
=head1 SYNOPSIS
# parses the same argument list as AnyEvent::HTTP::http_request
my $req = AnyEvent::HTTP::Request->new(
POST => $uri,
body => $body,
headers => \%headers,
%params,
sub { ... }
);
# provides introspection
print $req->header('user-agent');
print $req->uri;
# can be upgraded to an HTTP::Request object
my $http_req = $req->to_http_message;
# or submitted via AnyEvent::HTTP::http_request
$req->send();
=head1 DESCRIPTION
This class creates a lightweight object
to represent an HTTP request as used by L<AnyEvent::HTTP>.
It was created to provide simple, clear test code
for parsing the parameters passed to L<AnyEvent::HTTP/http_request>.
Instead of code that looks something like this:
is $args[0], 'POST', 'request method';
is $args[1], 'http://some/where', 'request uri';
is ref($args[-1]), 'CODE', 'http_request callback';
is_deeply { @args[ 2 .. $#args - 1 ] }->{headers},
\%expected_headers, 'request headers';
You can write clearer, simpler code like this:
my $req = AnyEvent::HTTP::Request->new(@args);
is $req->method, 'POST', 'request method';
is $req->uri, 'http://some/where', 'request uri';
is ref($req->cb), 'CODE', 'http_request callback';
is_deeply $req->headers, \%expected_headers, 'request headers';
It's a little less weird, and easier to maintain (and do again).
This class also allows you to build an object by passing a hashref
of named parameters in case you'd prefer that.
You can then call L</send> to actually make the request
(via L<AnyEvent::HTTP/http_request>),
or L</args> to get the list of arguments the object would pass.
It can also be converted L<from|/from_http_message> or L<to|/to_http_message>
the more featureful
L<HTTP::Request>.
=head1 CLASS METHODS
=head2 new
Accepts the same argument list as
L<AnyEvent::HTTP/http_request>
(see L</parse_args>):
AnyEvent::HTTP::Request->new(
$method => $uri,
body => $body,
headers => \%headers,
%params,
sub { ... }
);
Alternatively accepts an instance of
L<HTTP::Request>
with an optional hashref of extra attributes
(see L</from_http_message>):
AnyEvent::HTTP::Request->new(
HTTP::Request->new( $method, $uri, $headers, $body ),
{
cb => sub { ... },
params => \%params,
}
);
Also accepts a single hashref of named attributes
(see L</ATTRIBUTES>):
( run in 1.189 second using v1.01-cache-2.11-cpan-5623c5533a1 )