diff options
author | Florent Villard <warly@mandriva.com> | 2006-10-16 11:30:28 +0000 |
---|---|---|
committer | Florent Villard <warly@mandriva.com> | 2006-10-16 11:30:28 +0000 |
commit | d166be551245de6b8ec1dcdce4e521bb05186213 (patch) | |
tree | 59bc70d183bdfc6d26721257d1cc8f0fbb7c7be6 /lib/Youri/Upload/Action/RSS.pm | |
parent | 87d00fb9cd409c97b79740a487a9af683e7a9be1 (diff) | |
download | mga-youri-core-d166be551245de6b8ec1dcdce4e521bb05186213.tar mga-youri-core-d166be551245de6b8ec1dcdce4e521bb05186213.tar.gz mga-youri-core-d166be551245de6b8ec1dcdce4e521bb05186213.tar.bz2 mga-youri-core-d166be551245de6b8ec1dcdce4e521bb05186213.tar.xz mga-youri-core-d166be551245de6b8ec1dcdce4e521bb05186213.zip |
add new youri subsections (from upstream)
Diffstat (limited to 'lib/Youri/Upload/Action/RSS.pm')
-rw-r--r-- | lib/Youri/Upload/Action/RSS.pm | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/lib/Youri/Upload/Action/RSS.pm b/lib/Youri/Upload/Action/RSS.pm deleted file mode 100644 index b1f484f..0000000 --- a/lib/Youri/Upload/Action/RSS.pm +++ /dev/null @@ -1,102 +0,0 @@ -# $Id$ -package Youri::Upload::Action::RSS; - -=head1 NAME - -Youri::Upload::Action::RSS - RSS notification - -=head1 DESCRIPTION - -This action plugin ensures RSS notification of new package revisions. - -=cut - -use warnings; -use strict; -use XML::RSS; -use Encode qw/from_to/; -use Carp; -use base qw/Youri::Upload::Action/; - -sub _init { - my $self = shift; - my %options = ( - file => '', - title => '', - link => '', - description => '', - charset => 'iso-8859-1', - max_items => 10, - @_ - ); - - croak "undefined rss file" unless $options{file}; - croak "invalid charset $options{charset}" - unless Encode::resolve_alias($options{charset}); - - $self->{_file} = $options{file}; - $self->{_title} = $options{title}; - $self->{_link} = $options{link}; - $self->{_description} = $options{description}; - $self->{_charset} = $options{charset}; - $self->{_max_items} = $options{max_items}; -} - -sub run { - my ($self, $package, $repository, $target, $define) = @_; - croak "Not a class method" unless ref $self; - - return unless $package->is_source(); - - my $subject = $package->get_revision_name(); - my $content = $package->get_information(); - - $content =~ s/$/<br\/>/mg; - - # ensure proper codeset conversion - # for informations coming from package - my $charset = $repository->get_package_charset(); - from_to($content, $charset, $self->{_charset}); - from_to($subject, $charset, $self->{_charset}); - - my $rss = XML::RSS->new( - encoding => $self->{_charset}, - encode_output => 1 - ); - - my $file = $self->{_file}; - if (-e $file) { - $rss->parsefile($file); - splice(@{$rss->{items}}, $self->{_max_items}) - if @{$rss->{items}} >= $self->{_max_items}; - } else { - $rss->channel( - title => $self->{_title}, - link => $self->{_link}, - description => $self->{_description}, - language => 'en' - ); - } - - $rss->add_item( - title => $subject, - description => $content, - mode => 'insert' - ); - - if ($self->{_test}) { - print $rss->as_string(); - } else { - $rss->save($file); - } -} - -=head1 COPYRIGHT AND LICENSE - -Copyright (C) 2002-2006, YOURI project - -This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - -=cut - -1; |