rsscache 0.1.1 → 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.
- 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
|