root/lang/perl/plagger/lib/Plagger/Plugin/Filter/MessageID.pm

Revision 600, 1.6 kB (checked in by otsune, 12 months ago)

websites/ustreamer/channel2json.cgi: refactoring regexp
websites/ustreamer/channel2json.cgi: fix regexp of $scraper{irc}
lang/perl/plagger/lib/Plagger/Plugin/Filter/MessageID.pm ,
lang/perl/plagger/t/plugins/Filter-MessageID ,
lang/perl/plagger/t/plugins/Filter-MessageID/base.t :
Add Filter::MessageID plugin
lang/perl/plagger/lib/Plagger/Plugin/Filter/MessageID.pm ,
lang/perl/plagger/t/plugins/Filter-MessageID/base.t :
fix bracket

Line 
1package Plagger::Plugin::Filter::MessageID;
2use strict;
3use base qw( Plagger::Plugin );
4
5use Plagger::Util;
6
7sub register {
8    my ($self, $context) = @_;
9    $context->register_hook(
10        $self,
11        'update.feed.fixup'  => \&feed,
12        'plugin.init'        => \&initialize,
13    );
14}
15
16sub initialize {
17    my($self, $context, $args) = @_;
18
19    unless ($self->conf->{domain}) {
20        $self->conf->{domain} = do {
21            require Net::Domain;
22            Net::Domain::hostfqdn();
23        };
24    }
25}
26
27sub feed {
28    my($self, $context, $args) = @_;
29
30    my $feed = $args->{feed};
31    my $mes_id;
32    my @id_digest;
33    my $domain = $self->conf->{domain};
34
35    for my $entry ($feed->entries) {
36        my $entry_id_digest = ($entry->id .':'. $entry->digest);
37        push @id_digest, $entry_id_digest;
38        $context->log(debug => "MessageID seed: $entry_id_digest");
39    }
40
41    $mes_id = '<' . $feed->id_safe .'_'
42        . Plagger::Util::safe_id( join(' ', @id_digest) ) .'@'. $domain .'>';
43    $feed->{meta}->{messageid} = $mes_id;
44    $context->log(info => 'set '. $feed->link ." MessageID: $mes_id");
45}
46
471;
48__END__
49
50=head1 NAME
51
52Plagger::Plugin::Filter::MessageID - set Message-ID at Feed
53
54=head1 SYNOPSIS
55
56  - module: Filter::MessageID
57    config:
58      domain: plagger.example.com
59
60=head1 DESCRIPTION
61
62This plugin generate Message-ID from id and digest of all Entries in Feed.
63You can use it in $args->{feed}->{meta}->{messageid}.
64
65=head1 CONFIG
66
67=over 4
68
69=item domain
70
71set domain part of Message-ID. (optional)
72see RFC 2822 "3.6.4. Identification fields".
73
74=head1 AUTHOR
75
76Masafumi Otsune
77
78=head1 SEE ALSO
79
80L<Plagger>, L<http://www.ietf.org/rfc/rfc2822.txt>
81
82=cut
Note: See TracBrowser for help on using the browser.