summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2009-07-17 17:17:54 +0200
committerfranck cuny <franck@lumberjaph.net>2009-07-17 17:17:54 +0200
commitee4d87281ff498b5491e5ab06684379198ace86b (patch)
treee3503989bd7fc4eb8cf7669e6691c921f03a7448 /lib
parentupdate (c) (diff)
downloadmoosex-useragent-ee4d87281ff498b5491e5ab06684379198ace86b.tar.gz
up
Diffstat (limited to '')
-rw-r--r--lib/MooseX/UserAgent.pm21
-rw-r--r--lib/MooseX/UserAgent/Async.pm1
-rw-r--r--lib/MooseX/UserAgent/Cache.pm1
-rw-r--r--lib/MooseX/UserAgent/Config.pm21
-rw-r--r--lib/MooseX/UserAgent/Content.pm1
-rw-r--r--lib/MooseX/UserAgent/Generic.pm30
-rw-r--r--lib/MooseX/UserAgent/Paranoid.pm72
7 files changed, 103 insertions, 44 deletions
diff --git a/lib/MooseX/UserAgent.pm b/lib/MooseX/UserAgent.pm
index 58ee83f..cc589bc 100644
--- a/lib/MooseX/UserAgent.pm
+++ b/lib/MooseX/UserAgent.pm
@@ -2,35 +2,16 @@ package MooseX::UserAgent;
our $VERSION = '0.2.0';
-use URI;
-use HTTP::Request;
-use HTTP::Response;
-use LWP::UserAgent;
-
use Moose::Role;
with qw/
MooseX::UserAgent::Config
MooseX::UserAgent::Content
MooseX::UserAgent::Cache
+ MooseX::UserAgent::Generic
/;
has _LWPLIB => ( isa => 'Str', is => 'ro', default => 'LWP::UserAgent' );
-sub fetch {
- my ( $self, $url ) = @_;
-
- my $req = HTTP::Request->new( GET => URI->new($url) );
-
- $req->header( 'Accept-Encoding', 'gzip' );
- my $last_modified = $self->get_ua_cache($url);
- $req->header( 'If-Modified-Since' => $last_modified )
- if $last_modified;
-
- my $res = $self->agent->request($req);
- $self->store_ua_cache( $url, $res );
- $res;
-}
-
1;
__END__
diff --git a/lib/MooseX/UserAgent/Async.pm b/lib/MooseX/UserAgent/Async.pm
index b00cc73..8d68384 100644
--- a/lib/MooseX/UserAgent/Async.pm
+++ b/lib/MooseX/UserAgent/Async.pm
@@ -90,6 +90,7 @@ franck cuny C<< <franck.cuny@rtgi.fr> >>
Copyright (c) 2009, RTGI
All rights reserved.
+L<http://rtgi.fr/>
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L<perlartistic>.
diff --git a/lib/MooseX/UserAgent/Cache.pm b/lib/MooseX/UserAgent/Cache.pm
index b5fff18..36be242 100644
--- a/lib/MooseX/UserAgent/Cache.pm
+++ b/lib/MooseX/UserAgent/Cache.pm
@@ -62,6 +62,7 @@ franck cuny C<< <franck.cuny@rtgi.fr> >>
Copyright (c) 2009, RTGI
All rights reserved.
+L<http://rtgi.fr/>
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L<perlartistic>.
diff --git a/lib/MooseX/UserAgent/Config.pm b/lib/MooseX/UserAgent/Config.pm
index cf453b0..d31a4dd 100644
--- a/lib/MooseX/UserAgent/Config.pm
+++ b/lib/MooseX/UserAgent/Config.pm
@@ -1,23 +1,29 @@
package MooseX::UserAgent::Config;
use Moose::Role;
+use Carp qw/croak/;
has 'agent' => (
isa => 'Object',
is => 'rw',
lazy => 1,
default => sub {
- my $self = shift;
- my $ua = $self->_LWPLIB->new;
+ my $self = shift;
+ my $class = $self->_LWPLIB;
+ eval " require $class ";
+ if ($@) {
+ croak "can't load " . $self->_LWPLIB . " : " . $@;
+ }
+ my $ua = $self->_LWPLIB->new;
- if (!$self->can('useragent_conf')) {
- # TODO
+ if ( !$self->can('useragent_conf') ) {
+ croak "no useragent_conf";
}
my $conf = $self->useragent_conf;
- $ua->agent( $conf->{name} ) if $conf->{name};
- $ua->from( $conf->{mail} ) if $conf->{mail};
+ $ua->agent( $conf->{name} ) if $conf->{name};
+ $ua->from( $conf->{mail} ) if $conf->{mail};
$ua->max_size( $conf->{max_size} ) if $conf->{max_size};
- $ua->timeout( $conf->{timeout} || 180 );
+ $ua->timeout( $conf->{timeout} || 180 );
$ua;
}
);
@@ -107,6 +113,7 @@ franck cuny C<< <franck.cuny@rtgi.fr> >>
Copyright (c) 2009, RTGI
All rights reserved.
+L<http://rtgi.fr/>
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L<perlartistic>.
diff --git a/lib/MooseX/UserAgent/Content.pm b/lib/MooseX/UserAgent/Content.pm
index 653b5d9..66dfa41 100644
--- a/lib/MooseX/UserAgent/Content.pm
+++ b/lib/MooseX/UserAgent/Content.pm
@@ -44,6 +44,7 @@ franck cuny C<< <franck.cuny@rtgi.fr> >>
Copyright (c) 2009, RTGI
All rights reserved.
+L<http://rtgi.fr>
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L<perlartistic>.
diff --git a/lib/MooseX/UserAgent/Generic.pm b/lib/MooseX/UserAgent/Generic.pm
new file mode 100644
index 0000000..dd1966f
--- /dev/null
+++ b/lib/MooseX/UserAgent/Generic.pm
@@ -0,0 +1,30 @@
+package MooseX::UserAgent::Generic;
+
+our $VERSION = '0.2.0';
+
+use URI;
+use HTTP::Request;
+
+use Moose::Role;
+with qw/
+ MooseX::UserAgent::Config
+ MooseX::UserAgent::Content
+ MooseX::UserAgent::Cache
+ /;
+
+sub fetch {
+ my ( $self, $url ) = @_;
+
+ my $req = HTTP::Request->new( GET => URI->new($url) );
+
+ $req->header( 'Accept-Encoding', 'gzip' );
+ my $last_modified = $self->get_ua_cache($url);
+ $req->header( 'If-Modified-Since' => $last_modified )
+ if $last_modified;
+
+ my $res = $self->agent->request($req);
+ $self->store_ua_cache( $url, $res );
+ $res;
+}
+
+1;
diff --git a/lib/MooseX/UserAgent/Paranoid.pm b/lib/MooseX/UserAgent/Paranoid.pm
index 61dab94..b33b157 100644
--- a/lib/MooseX/UserAgent/Paranoid.pm
+++ b/lib/MooseX/UserAgent/Paranoid.pm
@@ -1,32 +1,70 @@
package MooseX::UserAgent::Paranoid;
-use URI;
-use HTTP::Request;
-use HTTP::Response;
-use LWPx::ParanoidAgent;
-
use Moose::Role;
with qw/
MooseX::UserAgent::Config
MooseX::UserAgent::Content
MooseX::UserAgent::Cache
+ MooseX::UserAgent::Generic
/;
has _LWPLIB => ( isa => 'Str', is => 'ro', default => 'LWPx::ParanoidAgent' );
-sub fetch {
- my ( $self, $url ) = @_;
+1;
- my $req = HTTP::Request->new( GET => URI->new($url) );
+__END__
- $req->header( 'Accept-Encoding', 'gzip' );
- my $last_modified = $self->get_ua_cache($url);
- $req->header( 'If-Modified-Since' => $last_modified )
- if $last_modified;
+=head1 NAME
- my $res = $self->agent->request($req);
- $self->store_ua_cache( $url, $res );
- $res;
-}
+RTGI::Role::UserAgent::Paranoid - Fetch an url using LWPx::ParanoidAgent
-1;
+=head1 SYNOPSIS
+
+ package Foo;
+
+ use Moose;
+ with qw/MooseX::UserAgent::Paranoid/;
+
+ has useragent_conf => (
+ isa => 'HashRef',
+ default => sub {
+ { name => 'myownbot', };
+ }
+ );
+
+ my $res = $self->fetch($url, $cache);
+ ...
+ my $content = $self->get_content($res);
+
+=head1 DESCRIPTION
+
+=head2 METHODS
+
+=over 4
+
+=item B<fetch>
+
+This method will fetch a given URL. This method handle only the http
+protocol.
+
+If there is a cache configuration, the url will be checked in the cache,
+and if there is a match, a 304 HTTP code will be returned.
+
+Return a HTTP::Response object.
+
+=back
+
+=head1 BUGS AND LIMITATIONS
+
+=head1 AUTHOR
+
+franck cuny C<< <franck.cuny@rtgi.fr> >>
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2009, RTGI
+All rights reserved.
+L<http://rtgi.fr/>
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.