require 'feed-normalizer' require 'open-uri' require 'xmlsimple' require 'descriptive_feed_item.rb' class Feed < ActiveRecord::Base belongs_to :user def to_links return @links unless @links.nil? Filter::current_filters.each_filter(:feed_before_grab_items) do |f| extend(f) run_filter end @links = grab_items Filter::current_filters.each_filter(:feed_after_grab_items) do |f| extend(f) run_filter end @links = @links.map{|i| i.extend(DescriptiveFeedItem)} end private def grab_items unless @normalized_feed = $cache.get(url) @normalized_feed = FeedNormalizer::FeedNormalizer.parse(open(url)) $cache.put(url, @normalized_feed) end @normalized_feed.entries.map{|e| sanitize e} end def sanitize(entry) entry.title ||= '#' entry.title = entry.title.sub(/\342\200\223/, "-") entry end end