Changeset 267
- Timestamp:
- 03/04/06 11:40:25
- Files:
-
- trunk/plagger/Makefile.PL (modified) (1 diff)
- trunk/plagger/lib/Plagger/Plugin/Aggregator/Simple.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Plugin/Aggregator/Xango.pm (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plagger/Makefile.PL
r265 r267 45 45 -default => 0, 46 46 recommends('POE'), 47 recommends('Xango' ),47 recommends('Xango', 1.02), # avoid prep_request bug 48 48 recommends('XML::Feed', 0.08), 49 49 recommends('Cache::FastMmap'), trunk/plagger/lib/Plagger/Plugin/Aggregator/Simple.pm
r256 r267 45 45 46 46 unless ($remote) { 47 $context->log(error => "Parsing $url failed. " . XML::Feed->errstr);47 $context->log(error => "Parsing $url failed. " . ($@ || XML::Feed->errstr)); 48 48 next; 49 49 } trunk/plagger/lib/Plagger/Plugin/Aggregator/Xango.pm
r165 r267 22 22 Plagger::Plugin::Aggregator::Xango::Crawler->spawn( 23 23 Plugin => $self, 24 UseCache => exists $self->conf->{use_cache} ? 25 $self->conf->{use_cache} : 1, 24 26 ); 25 27 Xango::Broker::Push->spawn(%xango_args); … … 47 49 use strict; 48 50 use POE; 51 use Storable qw(freeze thaw); 49 52 use XML::Feed; 50 53 … … 55 58 56 59 POE::Session->create( 57 heap => { PLUGIN => $args{Plugin} },60 heap => { PLUGIN => $args{Plugin}, USE_CACHE => $args{UseCache} }, 58 61 package_states => [ 59 $class => [ qw(_start _stop apply_policy handle_response) ]62 $class => [ qw(_start _stop apply_policy prep_request handle_response) ] 60 63 ] 61 64 ); … … 64 67 sub _start { $_[KERNEL]->alias_set('xghandler') } 65 68 sub _stop { } 69 sub prep_request { 70 return unless $_[HEAP]->{USE_CACHE}; 71 72 my $job = $_[ARG0]; 73 my $req = $_[ARG1]; 74 my $plugin = $_[HEAP]->{PLUGIN}; 75 76 my $ref = $plugin->cache->get($job->uri); 77 if ($ref) { 78 $req->if_modified_since($ref->{LastModified}) 79 if $ref->{LastModified}; 80 $req->header('If-None-Match', $ref->{ETag}) 81 if $ref->{ETag}; 82 } 83 } 84 66 85 sub handle_response { 67 86 my $job = $_[ARG0]; … … 71 90 my $url = $job->uri; 72 91 92 return unless $r->is_success; 73 93 $plugin->handle_feed($url, $r->content_ref); 94 if ($_[HEAP]->{USE_CACHE}) { 95 $plugin->cache->set( 96 $job->uri, 97 {ETag => $r->header('ETag'), 98 LastModified => $r->header('Last-Modified')} 99 ); 100 } 74 101 } 75 102
