polyrex-feed-reader 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/polyrex-feed-reader.rb +35 -23
  2. metadata +2 -2
@@ -31,7 +31,7 @@ class PolyrexFeedReader
31
31
  if File.exists? @file_path then
32
32
  @feeds = Polyrex.new @file_path
33
33
  else
34
- schema = 'feeds/column[id]/feed[rss_url,title,important,occurrence,recent,url, xhtml, xhtml_mobile, last_modified]/item[title,link,description]'
34
+ schema = 'feeds/column[id]/feed[rss_url,title,important,occurrence,recent,url, xhtml, xhtml_mobile, last_modified, last_accessed]/item[title,link,description]'
35
35
  @feeds = Polyrex.new schema
36
36
  @feeds.save @file_path
37
37
  end
@@ -44,27 +44,7 @@ class PolyrexFeedReader
44
44
  def read()
45
45
  @feeds.records.each do |col|
46
46
  col.records.each do |feed|
47
-
48
- if scheduled? feed.occurrence and recency(feed.last_modified) != 'hot' then
49
-
50
- rss_doc = Document.new(open(feed.rss_url, 'UserAgent' => 'PolyrexFeedReader').read)
51
- rss_items = XPath.match(rss_doc.root, '//item')[0..2]
52
-
53
- if feed.records.length <= 0 then
54
- # create the items
55
- k = 3 - feed.records.length
56
- k.times {|x| feed.create.item}
57
-
58
- fetch_items(rss_items, feed)
59
-
60
- else
61
- if REXML::Text::unnormalize(feed.item[0].title) != rss_items[0].text('title').to_s then
62
- fetch_items(rss_items, feed)
63
- else
64
- feed.recent = recency(feed.last_modified)
65
- end
66
- end
67
- end
47
+ fetch_feed(item)
68
48
  end
69
49
  col.records.sort_by!{|x| -Time.parse(x.text('summary/last_modified').to_s).to_i}
70
50
 
@@ -109,8 +89,39 @@ class PolyrexFeedReader
109
89
 
110
90
  buffer
111
91
  end
92
+
93
+ def read_feed(feed_name)
94
+ feed = @feeds.find_by_feed_title(feed_name)
95
+ fetch_feed(feed)
96
+ @feeds.save @file_path
97
+ end
98
+
99
+ private
100
+
101
+ def fetch_feed(feed)
102
+ if scheduled? feed.occurrence and recency(feed.last_accessed) != 'hot' then
112
103
 
113
- private
104
+ rss_doc = Document.new(open(feed.rss_url, 'UserAgent' => 'PolyrexFeedReader').read)
105
+ rss_items = XPath.match(rss_doc.root, '//item')[0..2]
106
+
107
+ if feed.records.length <= 0 then
108
+ # create the items
109
+ k = 3 - feed.records.length
110
+ k.times {|x| feed.create.item}
111
+
112
+ fetch_items(rss_items, feed)
113
+
114
+ else
115
+
116
+ if REXML::Text::unnormalize(feed.item[0].title) != rss_items[0].text('title').to_s then
117
+
118
+ fetch_items(rss_items, feed)
119
+ else
120
+ feed.recent = recency(feed.last_modified)
121
+ end
122
+ end
123
+ end
124
+ end
114
125
 
115
126
  def recency(time)
116
127
  case (Time.now - Time.parse(time))
@@ -157,3 +168,4 @@ class PolyrexFeedReader
157
168
  end
158
169
 
159
170
  end
171
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polyrex-feed-reader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors: []
7
7
 
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-06-14 00:00:00 +01:00
12
+ date: 2010-06-15 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency