Skip Menu |

This queue is for tickets about the XML-RSS CPAN distribution.

Report information
The Basics
Id: 67241
Status: resolved
Priority: 0/
Queue: XML-RSS

People
Owner: Nobody in particular
Requestors: STUIFZAND [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in: 1.48
Fixed in: (no value)



Subject: Please add rssCloud support
Currently XML::RSS doesn't support the cloud tag, which is specified in the RSS 2.0 spec. I've attached a patch to add this support.
Subject: xml-rss-cloud.patch
Index: t/2.0-parse-cloud.t =================================================================== --- t/2.0-parse-cloud.t (revision 0) +++ t/2.0-parse-cloud.t (revision 0) @@ -0,0 +1,117 @@ +use strict; +use warnings; +use Test::More; + +use constant RSS_VERSION => "2.0"; +use constant RSS_CHANNEL_TITLE => "Example 2.0 Channel"; + +use constant RSS_DOCUMENT => qq(<?xml version="1.0"?> +<rss version="2.0"> + <channel> + <title>Example 2.0 Channel</title> + <link>http://example.com/</link> + <description>To lead by example</description> + <language>en-us</language> + <copyright>All content Public Domain, except comments which remains copyright the author</copyright> + <managingEditor>editor\@example.com</managingEditor> + <webMaster>webmaster\@example.com</webMaster> + <docs>http://backend.userland.com/rss</docs> + <category domain="http://www.dmoz.org">Reference/Libraries/Library_and_Information_Science/Technical_Services/Cataloguing/Metadata/RDF/Applications/RSS/</category> + <generator>The Superest Dooperest RSS Generator</generator> + <lastBuildDate>Mon, 02 Sep 2002 03:19:17 GMT</lastBuildDate> + <ttl>60</ttl> + <cloud domain="rpc.rsscloud.org" port="5337" path="/rsscloud/pleaseNotify" registerProcedure="" protocol="http-post" /> + + <item> + <title>News for September the Second</title> + <link>http://example.com/2002/09/02</link> + <description>other things happened today</description> + <comments>http://example.com/2002/09/02/comments.html</comments> + <author>joeuser\@example.com</author> + <pubDate>Mon, 02 Sep 2002 03:19:00 GMT</pubDate> + <guid isPermaLink="true">http://example.com/2002/09/02</guid> + </item> + + <item> + <title>News for September the First</title> + <link>http://example.com/2002/09/01</link> + <description>something happened today</description> + <comments>http://example.com/2002/09/01/comments.html</comments> + <author>joeuser\@example.com</author> + <pubDate>Sun, 01 Sep 2002 12:01:00 GMT</pubDate> + <guid isPermaLink="true">http://example.com/2002/09/02</guid> + </item> + + </channel> +</rss>); + +plan tests => 12; + +use_ok("XML::RSS"); + +my $xml = XML::RSS->new(); +isa_ok($xml,"XML::RSS"); + +eval { $xml->parse(RSS_DOCUMENT); }; +is($@,'',"Parsed RSS feed"); + +is($xml->{channel}{cloud}{domain}, 'rpc.rsscloud.org'); +is($xml->{channel}{cloud}{port}, '5337'); +is($xml->{channel}{cloud}{path}, '/rsscloud/pleaseNotify'); +is($xml->{channel}{cloud}{registerProcedure}, ''); +is($xml->{channel}{cloud}{protocol}, 'http-post'); + +cmp_ok($xml->{'_internal'}->{'version'},"eq",RSS_VERSION,"Is RSS version ".RSS_VERSION); +cmp_ok($xml->{channel}->{'title'},"eq",RSS_CHANNEL_TITLE,"Feed title is ".RSS_CHANNEL_TITLE); +cmp_ok(ref($xml->{items}),"eq","ARRAY","\$xml->{items} is an ARRAY ref"); + +my $ok = 1; + +foreach my $item (@{$xml->{items}}) { + + my $min = 0; + foreach my $el ("title","description") { + if (exists $item->{$el}) { + $min ||= 1; + } + } + + $ok = $min; + last if (! $ok); +} + +ok($ok,"All items have either a title or a description element"); + + +__END__ + +=head1 NAME + +2.0-parse.t - tests for parsing RSS 2.0 data with XML::RSS.pm + +=head1 SYNOPSIS + + use Test::Harness qw (runtests); + runtests (./XML-RSS/t/*.t); + +=head1 DESCRIPTION + +Tests for parsing RSS 2.0 data with XML::RSS.pm + +=head1 VERSION + +$Revision: 1.2 $ + +=head1 DATE + +$Date: 2002/11/19 23:56:53 $ + +=head1 AUTHOR + +Aaron Straup Cope + +=head1 SEE ALSO + +http://backend.userland.com/rss2 + +=cut Index: lib/XML/RSS.pm =================================================================== --- lib/XML/RSS.pm (revision 14820) +++ lib/XML/RSS.pm (working copy) @@ -993,6 +993,11 @@ elsif ($self->_start_array_element("skipDays", $el)) { # Do nothing - already done in the predicate. } + elsif ($el eq 'cloud') { + if (keys %attribs) { + $self->{channel}{cloud} = \%attribs; + } + } elsif ($el eq 'item') { # deal with trouble makers who use mod_content :)
Hi, Thanks and sorry for the late response. A modified version of your patch was applied into the Subversion repository and was uploaded as XML-RSS-1.49. Regards, -- Shlomi Fish