discourse/lib/feed_item_accessor.rb
Kyle Zhao 5f318a5241 FEATURE: Replace SimpleRSS with Ruby RSS module (#5311)
* SPEC: PollFeedJob parsing atom feed

* add FeedItemAccessor

It is to provide a consistent interface to access a feed item's tag
content.

* add FeedElementInstaller

to install non-standard and non-namespaced feed elements

* FEATURE: replace SimpleRSS with Ruby RSS module

* get FinalDestination and download with Excon

* support namespaced element with FeedElementInstaller
2017-12-06 10:45:09 +11:00

26 lines
543 B
Ruby

class FeedItemAccessor
attr_accessor :rss_item
def initialize(rss_item)
@rss_item = rss_item
end
def element_content(element_name)
try_attribute_or_self(element(element_name), :content)
end
def link
try_attribute_or_self(element(:link), :href)
end
private
def element(element_name)
rss_item.respond_to?(element_name) ? rss_item.send(element_name) : nil
end
def try_attribute_or_self(element, attribute_name)
element.respond_to?(attribute_name) ? element.send(attribute_name) : element
end
end