class RSSFeed
Constants
- DEFAULT_OPTIONS
Public Class Methods
feed(url)
click to toggle source
# File lib/argh_ss/rss_feed.rb, line 35 def self.feed(url) {}.tap do |result| open(url) do |rss| feed = RSS::Parser.parse(rss) raise NoMethodError, "Invalid feed" if !feed case feed.feed_type when 'rss' feed.items.each { |item| result[item.title] = item.link } when 'atom' feed.items.each { |item| result[item.title.content] = item.link.content } end end end end
options_feed(url, *args)
click to toggle source
# File lib/argh_ss/rss_feed.rb, line 5 def self.options_feed(url, *args) raise ArgumentError, "Incorrect options" unless args & DEFAULT_OPTIONS == args args = DEFAULT_OPTIONS if args.empty? [].tap do |result| open(url) do |rss| feed = RSS::Parser.parse(rss, false) raise NoMethodError, "Invalid feed" if !feed case feed.feed_type when 'rss' feed.items.each_with_object({}) do |item, hash| args.each do |content| hash[content] = item.send(rss_hash[content]) end result << hash end when 'atom' feed.entries.each_with_object({}) do |entry, hash| args.each do |content| args_array = atom_hash[content] hash[content] = entry.send(args_array[0]).send(args_array[1]) end result << hash end end end end end
Private Class Methods
atom_hash()
click to toggle source
# File lib/argh_ss/rss_feed.rb, line 61 def self.atom_hash { :title => ["title", "content"], :link => ["link", "href"], :content => ["content", "content"], :published => ["published", "content"] } end
rss_hash()
click to toggle source
# File lib/argh_ss/rss_feed.rb, line 52 def self.rss_hash { :title => "title", :link => "link", :content => "description", :published => "pubDate" } end