root/trunk/plagger/lib/Plagger/Plugin/Filter/MessageID.pm

Revision 2039 (checked in by tokuhirom, 7 months ago)

Plugin::Filter::MessageID: fixed pod bug.

Line 
1 package Plagger::Plugin::Filter::MessageID;
2 use strict;
3 use base qw( Plagger::Plugin );
4
5 use Plagger::Util;
6
7 sub register {
8     my ($self, $context) = @_;
9     $context->register_hook(
10         $self,
11         'update.feed.fixup'  => \&feed,
12         'plugin.init'        => \&initialize,
13     );
14 }
15
16 sub 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
27 sub 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
47 1;
48 __END__
49
50 =head1 NAME
51
52 Plagger::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
62 This plugin generate Message-ID from id and digest of all Entries in Feed.
63 You can use it in $args->{feed}->{meta}->{messageid}.
64
65 =head1 CONFIG
66
67 =over 4
68
69 =item domain
70
71 set domain part of Message-ID. (optional)
72 see RFC 2822 "3.6.4. Identification fields".
73
74 =back
75
76 =head1 AUTHOR
77
78 Masafumi Otsune
79
80 =head1 SEE ALSO
81
82 L<Plagger>, L<http://www.ietf.org/rfc/rfc2822.txt>
83
84 =cut
Note: See TracBrowser for help on using the browser.