|
Revision 16391, 1.8 kB
(checked in by daisuke, 5 years ago)
|
|
cleanup
|
-
Property svn:keywords set to
Id
|
| Line | |
|---|
| 1 | # $Id$ |
|---|
| 2 | |
|---|
| 3 | package Data::Feed::Atom; |
|---|
| 4 | use Moose; |
|---|
| 5 | use Data::Feed::Atom::Entry; |
|---|
| 6 | use XML::Atom::Feed; |
|---|
| 7 | use XML::Atom::Person; |
|---|
| 8 | use XML::Atom::Util qw( iso2dt ); |
|---|
| 9 | use List::Util qw( first ); |
|---|
| 10 | use DateTime::Format::W3CDTF; |
|---|
| 11 | |
|---|
| 12 | with 'Data::Feed::Web::Feed'; |
|---|
| 13 | |
|---|
| 14 | no Moose; |
|---|
| 15 | |
|---|
| 16 | use constant format => 'Atom'; |
|---|
| 17 | |
|---|
| 18 | sub title { shift->feed->title(@_) } |
|---|
| 19 | sub description { shift->feed->description(@_) } |
|---|
| 20 | sub copyright { shift->feed->copyright(@_) } |
|---|
| 21 | sub language { shift->feed->language(@_) } |
|---|
| 22 | sub generator { shift->feed->generator(@_) } |
|---|
| 23 | |
|---|
| 24 | sub link { |
|---|
| 25 | my $self = shift; |
|---|
| 26 | if (@_) { |
|---|
| 27 | $self->feed->add_link({ rel => 'alternate', href => $_[0], |
|---|
| 28 | type => 'text/html', }); |
|---|
| 29 | } else { |
|---|
| 30 | my $l = first { !defined $_->rel || $_->rel eq 'alternate' } $self->feed->link; |
|---|
| 31 | $l ? $l->href : undef; |
|---|
| 32 | } |
|---|
| 33 | } |
|---|
| 34 | |
|---|
| 35 | sub author { |
|---|
| 36 | my $self = shift; |
|---|
| 37 | if (@_ && $_[0]) { |
|---|
| 38 | my $person = XML::Atom::Person->new(Version => 1.0); |
|---|
| 39 | $person->name($_[0]); |
|---|
| 40 | $self->feed->author($person); |
|---|
| 41 | } else { |
|---|
| 42 | $self->feed->author ? $self->feed->author->name : undef; |
|---|
| 43 | } |
|---|
| 44 | } |
|---|
| 45 | |
|---|
| 46 | sub modified { |
|---|
| 47 | my $self = shift; |
|---|
| 48 | if (@_) { |
|---|
| 49 | $self->feed->modified(DateTime::Format::W3CDTF->format_datetime($_[0])); |
|---|
| 50 | } else { |
|---|
| 51 | $self->feed->modified ? iso2dt($self->feed->modified) : undef; |
|---|
| 52 | } |
|---|
| 53 | } |
|---|
| 54 | |
|---|
| 55 | sub entries { |
|---|
| 56 | my $self = shift; |
|---|
| 57 | |
|---|
| 58 | my @entries; |
|---|
| 59 | for my $entry ($self->feed->entries) { |
|---|
| 60 | push @entries, Data::Feed::Atom::Entry->new(entry => $entry); |
|---|
| 61 | } |
|---|
| 62 | |
|---|
| 63 | return @entries; |
|---|
| 64 | } |
|---|
| 65 | |
|---|
| 66 | sub add_entry { |
|---|
| 67 | my ($self, $entry) = @_; |
|---|
| 68 | return $self->feed->add_entry($entry->entry); |
|---|
| 69 | } |
|---|
| 70 | |
|---|
| 71 | 1; |
|---|
| 72 | |
|---|
| 73 | __END__ |
|---|
| 74 | |
|---|
| 75 | =head1 NAME |
|---|
| 76 | |
|---|
| 77 | Data::Feed::Atom - Atom Feed |
|---|
| 78 | |
|---|
| 79 | =head2 add_entry |
|---|
| 80 | |
|---|
| 81 | =head2 author |
|---|
| 82 | |
|---|
| 83 | =head2 copyright |
|---|
| 84 | |
|---|
| 85 | =head2 description |
|---|
| 86 | |
|---|
| 87 | =head2 entries |
|---|
| 88 | |
|---|
| 89 | =head2 format |
|---|
| 90 | |
|---|
| 91 | =head2 generator |
|---|
| 92 | |
|---|
| 93 | =head2 language |
|---|
| 94 | |
|---|
| 95 | =head2 link |
|---|
| 96 | |
|---|
| 97 | =head2 modified |
|---|
| 98 | |
|---|
| 99 | =head2 title |
|---|
| 100 | |
|---|
| 101 | |
|---|
| 102 | =cut |
|---|
| 103 | |
|---|