Module: Feedjira::FeedUtilities

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

UPDATABLE_ATTRIBUTES =
%w(title feed_url url last_modified etag).freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#etagObject

Returns the value of attribute etag.



8
9
10
# File 'lib/feedjira/feed_utilities.rb', line 8

def etag
  @etag
end

#last_modifiedObject



43
44
45
46
47
48
49
# File 'lib/feedjira/feed_utilities.rb', line 43

def last_modified
  @last_modified ||= begin
    published = entries.reject { |e| e.published.nil? }
    entry = published.sort_by { |e| e.published if e.published }.last
    entry ? entry.published : nil
  end
end

#new_entriesObject



55
56
57
# File 'lib/feedjira/feed_utilities.rb', line 55

def new_entries
  @new_entries ||= []
end

#updated=(value) ⇒ Object (writeonly)

Sets the attribute updated

Parameters:

  • value

    the value to set the attribute updated to.



7
8
9
# File 'lib/feedjira/feed_utilities.rb', line 7

def updated=(value)
  @updated = value
end

Class Method Details

.included(base) ⇒ Object



10
11
12
# File 'lib/feedjira/feed_utilities.rb', line 10

def self.included(base)
  base.extend ClassMethods
end

Instance Method Details

#new_entries?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/feedjira/feed_utilities.rb', line 59

def new_entries?
  !new_entries.empty?
end

#sanitize_entries!Object



86
87
88
# File 'lib/feedjira/feed_utilities.rb', line 86

def sanitize_entries!
  entries.each(&:sanitize!)
end

#update_attribute(feed, name) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
# File 'lib/feedjira/feed_utilities.rb', line 74

def update_attribute(feed, name)
  old_value = send(name)
  new_value = feed.send(name)

  if old_value != new_value
    send("#{name}=", new_value)
    true
  else
    false
  end
end

#update_from_feed(feed) ⇒ Object



63
64
65
66
67
68
69
70
71
72
# File 'lib/feedjira/feed_utilities.rb', line 63

def update_from_feed(feed)
  self.new_entries += find_new_entries_for(feed)
  entries.unshift(*self.new_entries)

  @updated = false

  UPDATABLE_ATTRIBUTES.each do |name|
    @updated ||= update_attribute(feed, name)
  end
end

#updated?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/feedjira/feed_utilities.rb', line 51

def updated?
  @updated || false
end