さりげなく aggregator.parse フェーズの結果が customfeed.handle に伝わってなかった、正確には aggregator.parse フェーズで feed が作られようが作られまいが aggregate メソッドが真を返していたのでそれを修正。
=== lib/Plagger/Plugin/Aggregator/Simple.pm ================================================================== --- lib/Plagger/Plugin/Aggregator/Simple.pm (revision 52) +++ lib/Plagger/Plugin/Aggregator/Simple.pm (local) @@ -15,7 +15,7 @@ my($self, $context) = @_; $context->register_hook( $self, - 'customfeed.handle' => \&aggregate, + 'customfeed.handle' => $self->can('aggregate'), ); } @@ -38,7 +38,7 @@ $res = $self->fetch_content($feed_url) or return; $self->handle_feed($feed_url, \$res->content, $args->{feed}); } else { - return; + return if ( ! $self->handle_content($url, $res, $args->{feed}) ); } return 1; @@ -215,6 +215,19 @@ $str; } +sub handle_content { + my ($self, $url, $res, $feed) = @\_; + + my $context = Plagger->context; + my $args = { + url => $url, + response => $res, + feed => $feed, + }; + + return $context->run_hook_once('aggregator.parse', $args); +\} + 1; __END__
ちなみに aggregtor.parse フェーズの挙動としては、
- データソースを aggregator.filter.'formatName'で修正
データソースをパース
成功した場合 Plagger::Feed を生成$context->update->add( $feed )して真を返す
- 失敗した場合 戻り値として偽を返す
こんな感じ。