First cut at enclosures
[catagits/XML-Feed.git] / lib / XML / Feed / Format / RSS.pm
index 7c04616..55a51f7 100644 (file)
@@ -34,7 +34,7 @@ sub init_string {
     my($str) = @_;
     $feed->init_empty;
     if ($str) {
-        $feed->{rss}->parse($$str);
+        $feed->{rss}->parse($$str, { hashrefs_instead_of_strings => 1 } );
     }
     $feed;
 }
@@ -142,6 +142,7 @@ sub entries {
     my @entries;
     for my $item (@{ $rss->{items} }) {
         push @entries, XML::Feed::Entry::Format::RSS->wrap($item);
+               $entries[-1]->{_version} = $rss->{'version'};           
     }
     @entries;
 }
@@ -158,6 +159,8 @@ sub as_xml { $_[0]->{rss}->as_string }
 package XML::Feed::Entry::Format::RSS;
 use strict;
 
+sub format { 'RSS ' . $_[0]->{'_version'} }
+
 use XML::Feed::Content;
 
 use base qw( XML::Feed::Entry );
@@ -306,20 +309,34 @@ sub modified {
 sub lat {
     my $item = shift->{entry};
     if (@_) {
-   $item->{geo}{lat} = $_[0];
+        $item->{geo}{lat} = $_[0];
     } else {
-   return $item->{geo}{lat};
+        return $item->{geo}{lat};
     }
 }
 
 sub long {
     my $item = shift->{entry};
     if (@_) {
-   $item->{geo}{long} = $_[0];
+        $item->{geo}{long} = $_[0];
     } else {
-   return $item->{geo}{long};
+         return $item->{geo}{long};
     }
 }
 
+sub enclosure {
+    my $entry  = shift;
+
+    if (@_) {
+        my $enclosure = shift;
+        $entry->{entry}->{enclosure} = {
+                 url    => $enclosure->{url},
+                 type   => $enclosure->{type},
+                 length => $enclosure->{length}
+            };
+    } else {
+        return XML::Feed::Enclosure->new($entry->{entry}->{enclosure});
+    }
+}
 
 1;