Changeset 442
- Timestamp:
- 04/01/06 01:23:33
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plagger/lib/Plagger/Plugin/Aggregator/Xango.pm
r437 r442 5 5 6 6 package Plagger::Plugin::Aggregator::Xango; 7 #sub Xango::DEBUG { 1 }; 7 8 use strict; 8 9 use base qw( Plagger::Plugin::Aggregator::Simple ); … … 26 27 $self->conf->{use_cache} : 1, 27 28 BrokerAlias => $xango_args{Alias}, 29 MaxRedirect => $self->conf->{max_redirect} || 3, 28 30 ); 29 31 Xango::Broker::Push->spawn(%xango_args); … … 40 42 my $url = $args->{feed}->url; 41 43 $context->log(info => "Fetch $url"); 42 POE::Kernel->post($self->{xango_alias}, 'enqueue_job', Xango::Job->new(uri => URI->new($url) ));44 POE::Kernel->post($self->{xango_alias}, 'enqueue_job', Xango::Job->new(uri => URI->new($url), redirect => 0)); 43 45 } 44 46 … … 64 66 PLUGIN => $args{Plugin}, USE_CACHE => $args{UseCache}, 65 67 BROKER_ALIAS => $args{BrokerAlias}, 68 MaxRedirect => $args{MaxRedirect}, 66 69 }, 67 70 package_states => [ … … 93 96 my $plugin = $_[HEAP]->{PLUGIN}; 94 97 98 my $redirect = $job->notes('redirect') + 1; 99 return if $redirect > $_[HEAP]->{MaxRedirect}; 100 95 101 my $r = $job->notes('http_response'); 96 102 my $url = $job->uri; 103 if ($r->code =~ /^30[12]$/) { 104 $_[KERNEL]->post($_[HEAP]->{BROKER_ALIAS}, 'enqueue_job', Xango::Job->new(uri => URI->new($r->header('location')), redirect => $redirect)); 105 } else { 106 return unless $r->is_success; 97 107 98 return unless $r->is_success; 99 100 my $ct = $r->content_type; 101 if ( $Feed::Find::IsFeed{$ct} ) { 102 $plugin->handle_feed($url, $r->content_ref); 103 } else { 104 my @feeds = Feed::Find->find_in_html($r->content_ref, $url); 105 if (@feeds) { 106 $url = $feeds[0]; 107 # xxx infinite loop 108 $_[KERNEL]->post($_[HEAP]->{BROKER_ALIAS}, 'enqueue_job', Xango::Job->new(uri => URI->new($url))); 108 my $ct = $r->content_type; 109 if ( $Feed::Find::IsFeed{$ct} ) { 110 $plugin->handle_feed($url, $r->content_ref); 109 111 } else { 110 return; 112 my @feeds = Feed::Find->find_in_html($r->content_ref, $url); 113 if (@feeds) { 114 $url = $feeds[0]; 115 $_[KERNEL]->post($_[HEAP]->{BROKER_ALIAS}, 'enqueue_job', Xango::Job->new(uri => URI->new($url), redirect => $redirect)); 116 } else { 117 return; 118 } 111 119 } 112 120 }
