Class: FeedzirraRedis::Feed

Inherits:
Object
  • Object
show all
Includes:
DataMapper::Resource
Defined in:
lib/feedzirra-redis.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.fetch_and_parse(urls, options = {}) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/feedzirra-redis.rb', line 43

def self.fetch_and_parse(urls, options = {})
  if urls.is_a?(String)
    feed = Feedjira::Feed.fetch_and_parse(urls, options)
    update_redis_from feed
  elsif urls.is_a?(Array)
    feeds = Feedjira::Feed.fetch_and_parse(urls, options)
    redis_feeds = {}
    feeds.map do |feed|
      redis_feed = update_redis_from feed
      redis_feeds.merge!(redis_feed.feed_url => redis_feed)
    end
  else
    raise "Unexpected urls class #{urls.class}"
  end
end

.update(feeds, options = {}) ⇒ Object

Delegate for compatibility



60
61
62
63
# File 'lib/feedzirra-redis.rb', line 60

def self.update(feeds, options = {})
  feeds.is_a?(Array) ? urls = feeds.map { |f| f.feed_url } : urls = feeds.feed_url
  self.fetch_and_parse(urls, options)
end

Instance Method Details

#add_entries(entries) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/feedzirra-redis.rb', line 30

def add_entries(entries)
  entries.each do |entry|
    unique_id = entry.id || entry.url
    redis_entry = Entry.first_or_create( {:guid => unique_id}, {
      :title        => entry.title,
      :summary      => entry.summary,
      :url          => entry.url,
      :published    => entry.published,
      :feed         => self
    })
  end
end