mirror of
https://github.com/discourse/discourse.git
synced 2024-11-30 10:43:43 +08:00
5f318a5241
* 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
26 lines
543 B
Ruby
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
|