File Coverage

blib/lib/Kwiki/Podcast.pm
Criterion Covered Total %
statement 1 3 33.3
branch n/a
condition n/a
subroutine 1 1 100.0
pod n/a
total 2 4 50.0


line stmt bran cond sub pod time code
1             package Kwiki::Podcast;
2 1     1   1286 use Kwiki::Plugin -Base;
  0            
  0            
3             use mixin 'Kwiki::Installer';
4             use XML::RSS;
5             use URI;
6             our $VERSION = '0.01';
7              
8             const class_id => 'podcast';
9             const class_title => 'Podcast';
10             const config_file => 'podcast.yaml';
11              
12             sub register {
13             my $registry = shift;
14             $registry->add(action => 'podcast');
15             $registry->add(toolbar => 'podcast_button',
16             template => 'podcast_button.html',
17             );
18             }
19              
20             sub podcast {
21             my @pods;
22             for($self->hub->pages->all){
23             if($_->content =~ m/(https?:.+?\.mp3)/i) {
24             push @pods, { uri => $1 , page => $_ };
25             }
26             }
27             $self->hub->headers->content_type('text/xml');
28             return $self->mkrss($self->hub->config->podcast_title,
29             $self->hub->config->podcast_publisher,
30             $self->hub->config->podcast_description,
31             @pods);
32             }
33              
34             sub mkrss {
35             my ($title,$creator,$description,@pods) = @_;
36             my $rss = XML::RSS->new( version => '2.0', encoding=> 'utf-8' );
37              
38             $rss->channel(title => $title,
39             publisher => $creator,
40             description => $description );
41              
42             for (@pods) {
43             my $uri = URI->new($_->{uri});
44             my ($sec,$min,$hour,$mday,$mon,$year,,,) = localtime($_->{page}->io->ctime);
45             $rss->add_item( title => $_->{page}->title,
46             link => $uri,
47             enclosure => { url => $uri, type => 'audio/mpeg' },
48             description => '{page}->content . ']]>',
49             category => "Podcast",
50             pubDate => ($year+1900)."-$mon-$mday"."T"."$hour:$min:$sec",
51             author => $_->{page}->metadata->edit_by
52             );
53             }
54             return $rss->as_string;
55             }
56              
57             __DATA__