Aggregator::Simpleにaggregator.parseフェーズを実装するパッチ 修正版

読了まで:約0分


さりげなく 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 フェーズの挙動としては、

  1. データソースを aggregator.filter.'formatName'で修正
  2. データソースをパース
  • 成功した場合 Plagger::Feed を生成$context->update->add( $feed )して真を返す
  • 失敗した場合 戻り値として偽を返す

こんな感じ。

#FIXME

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。