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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 84fa149159bb76649987604cc50dd3757ad3f486
4
- data.tar.gz: fa60fefe08b19db3c7d85ce0acc7c8ba2d554175
3
+ metadata.gz: 5b838408f4d649f230f22d35461504cfcf79eaa7
4
+ data.tar.gz: 84d46f51886170671fd00322b07a7fd407636fc2
5
5
  SHA512:
6
- metadata.gz: 680703919349df43fac9486865c203f18befddb981c48fafe9205579e34c17c0dcdfa618c4f79a324248a99a91a7c4cc944202543c1fc480820b96f07266a7e5
7
- data.tar.gz: 1913b72ca2e1c593e6dcf2a647e5a61299845f8efa691d60edd75e34e483dddb74ece6b99badcbb27f83886355c7b56d060f5568c2fca0b9f53200cd7c1e21a0
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
- rss = SimpleRSS.parse(open(feed.url))
100
+ buffer, code = fetch(feed.url)
94
101
 
95
-
96
- rssfile = if feed.filename.empty? then
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
- File.join(@feedsfilepath, filename)
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
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsscache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
metadata.gz.sig CHANGED
Binary file