From 9731c038acf73a68352fc622cf742b5940a517ef Mon Sep 17 00:00:00 2001 From: franck cuny Date: Thu, 25 Jun 2009 11:01:13 +0200 Subject: add dep --- lib/MooseX/UserAgent/Async.pm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lib/MooseX/UserAgent/Async.pm (limited to 'lib/MooseX/UserAgent/Async.pm') diff --git a/lib/MooseX/UserAgent/Async.pm b/lib/MooseX/UserAgent/Async.pm new file mode 100644 index 0000000..4adcf9a --- /dev/null +++ b/lib/MooseX/UserAgent/Async.pm @@ -0,0 +1,34 @@ +package MooseX::UserAgent::Async; + +use Moose::Role; +with qw/MooseX::UserAgent::Config MooseX::UserAgent::Content + MooseX::UserAgent::Cache/; + +use AnyEvent::HTTP; +use HTTP::Response; + +sub fetch { + my ( $self, $url ) = @_; + my $status = AnyEvent->condvar; + + my $last_modified = $self->get_ua_cache($url); + + my $request_headers = { 'Accept-Encoding' => 'gzip', }; + $request_headers->{'If-Modified-Since'} = $last_modified + if $last_modified; + + http_request GET => $url, headers => $request_headers, sub { + my ( $data, $headers ) = @_; + my $response = HTTP::Response->new; + $response->content($data); + $response->code(delete $headers->{Status}); + foreach my $header ( keys %$headers ) { + $response->header( $header => $headers->{$header} ); + } + $self->store_ua_cache($url, $response); + $status->send($response); + }; + return $status->recv; +} + +1; -- cgit 1.4.1