rsscache 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/rsscache.rb +40 -5
- data.tar.gz.sig +0 -0
- metadata +1 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b838408f4d649f230f22d35461504cfcf79eaa7
|
4
|
+
data.tar.gz: 84d46f51886170671fd00322b07a7fd407636fc2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5264cf9eddfab278f6d2bf28b6d08881dfaff5f73502f0965d1c5ae0112e19a6f962f09fdbebd088c492ef16cdb1af589b275a0bc9d2842f27321dd221fad712
|
7
|
+
data.tar.gz: e14f1de3d4ce568916366d1896cd0425a34037a51990db64c758d27b10a752fef69c3ed318fea8a91ec264bcd719883938f51572926f1f5d494feb4fbaf2731f
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/rsscache.rb
CHANGED
@@ -1,24 +1,31 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
#
|
3
3
|
# file: rsscache.rb
|
4
4
|
|
5
5
|
require 'dynarex'
|
6
6
|
require 'open-uri'
|
7
7
|
require 'simple-rss'
|
8
8
|
require 'fileutils'
|
9
|
+
require 'timeout'
|
9
10
|
|
10
11
|
|
11
12
|
class RSScache
|
13
|
+
|
14
|
+
attr_reader :err_report
|
12
15
|
|
13
16
|
def initialize(rsslist, feedsfilepath=Dir.pwd)
|
14
17
|
|
15
18
|
@dx = open_dynarex(rsslist)
|
16
19
|
@rsslist, @feedsfilepath = rsslist, feedsfilepath
|
17
20
|
FileUtils.mkdir_p feedsfilepath
|
21
|
+
|
22
|
+
@err_report = []
|
18
23
|
|
19
24
|
end
|
20
25
|
|
21
26
|
def refresh
|
27
|
+
|
28
|
+
@err_report = []
|
22
29
|
|
23
30
|
@dx.all.each do |feed|
|
24
31
|
|
@@ -90,16 +97,25 @@ class RSScache
|
|
90
97
|
def updates?(feed)
|
91
98
|
|
92
99
|
# fetch the feeds from the web
|
93
|
-
|
100
|
+
buffer, code = fetch(feed.url)
|
94
101
|
|
95
|
-
|
96
|
-
|
102
|
+
if code == 200 then
|
103
|
+
rss = SimpleRSS.parse(buffer)
|
104
|
+
else
|
105
|
+
@err_report << [feed.url, code]
|
106
|
+
return false
|
107
|
+
end
|
108
|
+
|
109
|
+
if feed.filename.empty? then
|
110
|
+
|
97
111
|
filename = feed.url[6..-1].gsub(/\W+/,'').\
|
98
112
|
reverse.slice(0,40).reverse.downcase + '.xml'
|
99
113
|
feed.filename = filename
|
100
|
-
|
114
|
+
|
101
115
|
end
|
102
116
|
|
117
|
+
rssfile = File.join(@feedsfilepath, feed.filename)
|
118
|
+
|
103
119
|
if File.exists? rssfile then
|
104
120
|
|
105
121
|
rss_cache = SimpleRSS.parse File.read(rssfile)
|
@@ -117,4 +133,23 @@ class RSScache
|
|
117
133
|
|
118
134
|
return false
|
119
135
|
end
|
136
|
+
|
137
|
+
private
|
138
|
+
|
139
|
+
def fetch(url, timeout: 2)
|
140
|
+
|
141
|
+
begin
|
142
|
+
Timeout::timeout(timeout){
|
143
|
+
|
144
|
+
buffer = open(url).read
|
145
|
+
return [buffer, 200]
|
146
|
+
}
|
147
|
+
rescue Timeout::Error => e
|
148
|
+
['connection timed out', 408]
|
149
|
+
rescue OpenURI::HTTPError => e
|
150
|
+
['400 bad request', 400]
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
|
120
155
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|