さりげなく 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 )して真を返す
- 失敗した場合 戻り値として偽を返す
こんな感じ。
#FIXME