Class: Feed

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
HTTParty
Defined in:
app/models/feed.rb

Overview

Schema Information

Table name: feeds

id                         :integer(4)      not null, primary key
uri                        :string(2083)
display_uri                :string(2083)
title                      :string(1000)
short_title                :string(100)
description                :text
tag_filter                 :string(1000)
top_tags                   :text
priority                   :integer(4)      default(10)
status                     :integer(4)      default(1)
last_requested_at          :datetime
last_harvested_at          :datetime
harvest_interval           :integer(4)      default(86400)
failed_requests            :integer(4)      default(0)
error_message              :text
service_id                 :integer(4)      default(0)
login                      :string(255)
password                   :string(255)
created_at                 :datetime
updated_at                 :datetime
entries_changed_at         :datetime
harvested_from_display_uri :string(2083)
harvested_from_title       :string(1000)
harvested_from_short_title :string(100)
entries_count              :integer(4)
default_language_id        :integer(4)      default(0)
default_grain_size         :string(255)     default("unknown")
contributor_id             :integer(4)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.discover_feeds(uri) ⇒ Object

Looks for feeds from a given url



102
103
104
# File 'app/models/feed.rb', line 102

def self.discover_feeds(uri)
  Feedbag.find(uri)
end

.gather_information(uri) ⇒ Object

Gathers all available feed uris from the given uri and parses them into feed objects



84
85
86
87
88
89
90
91
# File 'app/models/feed.rb', line 84

def self.gather_information(uri)
  feeds = []
  @available_feeds = discover_feeds(uri)
  @available_feeds.each do |feed|
    feeds << make_feed(Feedzirra::Feed.fetch_and_parse(feed.url))
  end
  feeds
end

.make_feed(feed) ⇒ Object

Turns a feed from feedzirra into a muck feed



94
95
96
97
98
99
# File 'app/models/feed.rb', line 94

def self.make_feed(feed)
  Feed.new(:short_title => feed.title,
           :title => feed.title,
           :display_uri => feed.url,
           :uri => feed.feed_url)
end

Instance Method Details

#after_createObject

named_scope :ready_to_harvest, lambda { |*args| { :conditions => [ “feeds.last_harvested_at < ?”, args.first || 1.day.ago.end_of_day ] } }



56
57
58
59
60
# File 'app/models/feed.rb', line 56

def after_create
  if GlobalConfig.inform_admin_of_global_feed && self.feed_parents.empty?
    RakerMailer.deliver_notification_feed_added(self) # Global feed.  Email the admin to let them know a feed has been added
  end    
end

#refresh_interval_hoursObject

harvest_interval is stored in seconds



63
64
65
66
67
68
69
70
71
# File 'app/models/feed.rb', line 63

def refresh_interval_hours
  if self.harvest_interval
    self.harvest_interval/3600
  else
    168 # Once a week
    # Looks like 168 = 24 * 7 (1 week) 
    # harvest_interval is currently stored in seconds. I'm guessing it used to be stored in hours and this is a relic
  end
end

#refresh_interval_hours=(interval) ⇒ Object



73
74
75
# File 'app/models/feed.rb', line 73

def refresh_interval_hours=(interval)
  self.harvest_interval = interval + ":00:00"
end