Selaa lähdekoodia

Adjust `url` values for Feedjira 3.1.0

Akinori MUSHA 5 vuotta sitten
vanhempi
commit
a7d44ab090

+ 1 - 1
app/models/agents/rss_agent.rb

@@ -275,7 +275,7 @@ module Agents
       {
         id: entry.id,
         url: entry.url,
-        urls: entry.links.map(&:href),
+        urls: Array(entry.url) | entry.links.map(&:href),
         links: entry.links,
         title: entry.title,
         description: clean_fragment(entry.summary),

+ 13 - 5
lib/feedjira_extension.rb

@@ -191,8 +191,20 @@ module FeedjiraExtension
           else
             alias_method :_links, :rss_links
           end
-        else
+
+          prepend(
+            Module.new {
+              def url
+                super || (alternate_link || links.first).try!(:href)
+              end
+            }
+          )
+        when /Atom/
           elements :link, class: AtomLink, as: :_links
+
+          def url
+            (alternate_link || links.first).try!(:href)
+          end
         end
 
         def links
@@ -206,10 +218,6 @@ module FeedjiraExtension
               (link.type == 'text/html'|| link.type.nil?)
           }
         end
-
-        def url
-          @url ||= (alternate_link || links.first).try!(:href)
-        end
       end
     end
   end

+ 8 - 8
spec/models/agents/rss_agent_spec.rb

@@ -385,8 +385,8 @@ describe Agents::RssAgent do
           {
             "feed" => feed_info,
             "id" => "http://example.com/podcasts/archive/aae20140601.mp3",
-            "url" => nil,
-            "urls" => [],
+            "url" => "http://example.com/podcasts/archive/aae20140601.mp3",
+            "urls" => ["http://example.com/podcasts/archive/aae20140601.mp3"],
             "links" => [],
             "title" => "Red,Whine, & Blue",
             "description" => nil,
@@ -410,8 +410,8 @@ describe Agents::RssAgent do
           {
             "feed" => feed_info,
             "id" => "http://example.com/podcasts/archive/aae20140697.m4v",
-            "url" => nil,
-            "urls" => [],
+            "url" => "http://example.com/podcasts/archive/aae20140697.m4v",
+            "urls" => ["http://example.com/podcasts/archive/aae20140697.m4v"],
             "links" => [],
             "title" => "The Best Chili",
             "description" => nil,
@@ -436,8 +436,8 @@ describe Agents::RssAgent do
           {
             "feed" => feed_info,
             "id" => "http://example.com/podcasts/archive/aae20140608.mp4",
-            "url" => nil,
-            "urls" => [],
+            "url" => "http://example.com/podcasts/archive/aae20140608.mp4",
+            "urls" => ["http://example.com/podcasts/archive/aae20140608.mp4"],
             "links" => [],
             "title" => "Socket Wrench Shootout",
             "description" => nil,
@@ -461,8 +461,8 @@ describe Agents::RssAgent do
           {
             "feed" => feed_info,
             "id" => "http://example.com/podcasts/archive/aae20140615.m4a",
-            "url" => nil,
-            "urls" => [],
+            "url" => "http://example.com/podcasts/archive/aae20140615.m4a",
+            "urls" => ["http://example.com/podcasts/archive/aae20140615.m4a"],
             "links" => [],
             "title" => "Shake Shake Shake Your Spices",
             "description" => nil,