3 # Copyright (c) 2012 ISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
4 # This program is covered by the GNU General Public License 2
6 package Mubot4FB::Atom;
13 use POSIX qw/strftime/;
16 my ($proto, $cfg) = @_;
17 my $class = ref $proto || $proto;
18 my $self = {cfg => $cfg, feed => XML::Atom::Feed->new( Version => '1.0' )};
28 $me->{feed}->title($me->{cfg}->{atom}->{title} ? $me->{cfg}->{atom}->{title} : 'unknown');
29 $me->{feed}->id($me->{cfg}->{atom}->{id_base});
30 $me->{feed}->updated(strftime("%Y-%m-%dT%H:%M:%SZ", gmtime));
31 $me->{feed}->author($me->{cfg}->{atom}->{author} ? $me->{cfg}->{atom}->{author} : 'unknown');
33 my $html_link = XML::Atom::Link->new;
34 $html_link->type('text/html');
35 $html_link->rel('alternate');
36 $html_link->href($me->{cfg}->{fb_page_url});
37 $me->{feed}->add_link($html_link);
39 my $self_link = XML::Atom::Link->new;
40 $self_link->type('application/atom+xml');
41 $self_link->rel('self');
42 $self_link->href($me->{cfg}->{atom}->{url});
43 $me->{feed}->add_link($self_link);
45 my $hub_link = XML::Atom::Link->new;
46 $hub_link->rel('hub');
47 $hub_link->href($me->{cfg}->{hub});
48 $me->{feed}->add_link($hub_link);
56 my $entry = XML::Atom::Entry->new;
57 foreach my $i ('id', 'title', 'content', 'published', 'summary', 'updated', 'auther', 'issued') {
58 $entry->$i($data->{$i}) if (defined $data->{$i});
60 if (defined $data->{link}) {
61 my $links = ref $data->{link} eq 'ARRAY' ? $data->{link} : [$data->{link}];
62 foreach my $l (@$links) {
63 my $link = XML::Atom::Link->new;
65 $entry->add_link($link);
69 $me->{feed}->add_entry($entry);
75 return $me->{feed}->as_xml;
82 print $fh $me->{feed}->as_xml;
84 print $me->{feed}->as_xml;