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 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