summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGianni Ceccarelli <gianni.ceccarelli@net-a-porter.com>2012-12-14 14:09:57 +0000
committerGianni Ceccarelli <gianni.ceccarelli@net-a-porter.com>2012-12-14 14:09:57 +0000
commita4aa216c9076a89fe0f26d323b6da72b2ed984bc (patch)
tree8aee10c91fb9923eaf1705d05aad71d25ff05478 /lib
parentdedupe schema & trace update (diff)
downloadfeeder-a4aa216c9076a89fe0f26d323b6da72b2ed984bc.tar.gz
feeder-a4aa216c9076a89fe0f26d323b6da72b2ed984bc.tar.bz2
feeder-a4aa216c9076a89fe0f26d323b6da72b2ed984bc.zip
custom user agent
Diffstat (limited to 'lib')
-rw-r--r--lib/Feed.pm47
1 files changed, 45 insertions, 2 deletions
diff --git a/lib/Feed.pm b/lib/Feed.pm
index 3159176..26cc26e 100644
--- a/lib/Feed.pm
+++ b/lib/Feed.pm
@@ -3,9 +3,12 @@ use Moose;
use namespace::autoclean;
use 5.012;
use MooseX::Types::URI 'Uri';
+use Moose::Util::TypeConstraints;
with 'MooseX::Traits';
use XML::Feed;
use Log::Log4perl;
+use LWP::UserAgent;
+use URI::Fetch;
sub log {
my ($self) = @_;
@@ -23,6 +26,17 @@ has uri => (
required => 1,
);
+duck_type 'UA' => [ 'get' ];
+coerce 'UA', from 'Str', via { __PACKAGE__->build_user_agent($_) };
+
+has user_agent => (
+ is => 'ro',
+ isa => 'UA',
+ coerce => 1,
+ lazy_build => 1,
+ builder => 'build_user_agent',
+);
+
has feed => (
is => 'ro',
isa => 'XML::Feed',
@@ -55,6 +69,28 @@ has _entries => (
},
);
+sub build_user_agent {
+ my ($self,$agent_id) = @_;
+
+ $agent_id //= 'curl/7.26.0';
+
+ require IO::Socket::SSL;
+
+ return LWP::UserAgent->new(
+ agent => $agent_id,
+ ssl_opts => {
+ verify_hostname => 0,
+ SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE(),
+ },
+ timeout => 30,
+ cookie_jar => {},
+ protocols_allowed => [ 'http', 'https'],
+ default_headers => HTTP::Request->new(
+ Accept => '*/*',
+ ),
+ );
+}
+
sub process {
my ($self) = @_;
@@ -72,9 +108,16 @@ sub process {
sub get_feed {
my ($self) = @_;
- $self->log->trace('get_feed');
+ $self->log->trace('get_feed ' . $self->uri);
+
+ my $response = $self->user_agent->get($self->uri);
+
+ die sprintf('Got code "%s" processing feed %s',$response->status_line,$self->uri)
+ unless $response->is_success;
+
+ my $content = $response->content;
- return XML::Feed->parse($self->uri)
+ return XML::Feed->parse(\$content)
or die XML::Feed->errstr;
}