rsscache 0.2.2 → 0.2.3

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
- SHA1:
3
- metadata.gz: 13d621b5f6fada69a9b0d44f228f5a109114ae5b
4
- data.tar.gz: 2f3b4b9553374db248914d72b8f6e2e612559c9b
2
+ SHA256:
3
+ metadata.gz: fa5b1293b303475b5b3ec84c1f5c0d0f99209a8e00ae6b03ff27d84f11ed7da9
4
+ data.tar.gz: 298d687c80dc04d790ec63076b02868e10177ac35e8aef1b7c6981905ca5d5ea
5
5
  SHA512:
6
- metadata.gz: a38232230077fb48b0eb518883f90e23d48410e0603c4af46db6401558f73c9093239100525f3812733f1cdd19fcba1be9a3892fbf25b48fe92f90c79ee381f9
7
- data.tar.gz: 54febc9ada04ee92d908fb02110187b8bd70053b4aa0a7e96e8b190d54a0c487d7a8934fe5ad28fe83721eb63e8a5f64bd832773ea9be22fef5e15b384783322
6
+ metadata.gz: bce3194dd3df0f6957769e9a4ac6df20f7420007a586a28372869096e638d2a0e1c504fa0391b89e857e470ad982d85e6a324e083f9ae2d5252077e017dd88d7
7
+ data.tar.gz: 7d38801562845a26c39085a7a1e8ea991af7ec02e0ad014d997bf7c21e39a830a14e04981a11baeb0989ae227823274b085065e43b328e53b95c826f98e68d62
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/rsscache.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- #
2
+
3
3
  # file: rsscache.rb
4
4
 
5
5
  require 'dynarex'
@@ -10,29 +10,29 @@ require 'timeout'
10
10
 
11
11
 
12
12
  class RSScache
13
-
13
+
14
14
  attr_reader :err_report, :dx
15
15
 
16
- def initialize(rsslist=nil, filepath: '.', debug: true)
16
+ def initialize(rsslist=nil, filepath: '.', debug: false)
17
17
 
18
18
  rsslist ||= File.join(filepath, 'rsscache.xml')
19
19
  @dx = open_dynarex(rsslist)
20
20
  @filepath = filepath
21
21
  @cache_filepath = File.join(filepath, 'rsscache')
22
22
  FileUtils.mkdir_p @cache_filepath
23
-
23
+
24
24
  @err_report = []
25
25
  @debug = debug
26
26
 
27
27
  end
28
-
29
- # Import a list of URLs into the Dynarex document.
28
+
29
+ # Import a list of URLs into the Dynarex document.
30
30
  # URLs which already exist are ignored.
31
31
  #
32
32
  def import(raw_s)
33
-
33
+
34
34
  s, _ = RXFHelper.read(raw_s)
35
-
35
+
36
36
  s.strip.lines.each do |raw_url|
37
37
 
38
38
  url = raw_url.chomp
@@ -45,24 +45,24 @@ class RSScache
45
45
  puts 'new URL found' if @debug
46
46
  @dx.create url: url
47
47
  end
48
-
49
- end
50
-
48
+
49
+ end
50
+
51
51
  save()
52
52
  end
53
53
 
54
54
  # refresh each RSS feed
55
55
  #
56
56
  def refresh
57
-
57
+
58
58
  @err_report = []
59
59
 
60
60
  puts '@dx.to_xml' + @dx.to_xml(pretty: true) if @debug
61
-
61
+
62
62
  @dx.all.each do |feed|
63
-
63
+
64
64
  puts 'feed:' + feed.inspect if @debug
65
-
65
+
66
66
  if feed.next_refresh.empty? or \
67
67
  Time.now >= Time.parse(feed.next_refresh) then
68
68
 
@@ -70,7 +70,7 @@ class RSScache
70
70
 
71
71
  feed.refresh_rate = if feed.refresh_rate.empty? then
72
72
 
73
- 10
73
+ 10
74
74
 
75
75
  else
76
76
 
@@ -91,7 +91,7 @@ class RSScache
91
91
 
92
92
  end
93
93
  end
94
-
94
+
95
95
  puts '@dx: ' + @dx.to_xml(pretty: true) if @debug
96
96
  save()
97
97
 
@@ -106,14 +106,14 @@ class RSScache
106
106
 
107
107
  end
108
108
 
109
-
109
+
110
110
  private
111
-
111
+
112
112
  def raw_doc(s)
113
-
114
- heading = '<?dynarex schema="rsscache[title]/feed(uid, title, ' +
113
+
114
+ heading = '<?dynarex schema="rsscache[title]/feed(uid, title, ' +
115
115
  'url, refresh_rate, next_refresh, filename)"?>'
116
-
116
+
117
117
  raw_dx=<<EOF
118
118
  #{heading}
119
119
  title: RSS Feeds to be cached
@@ -122,32 +122,32 @@ title: RSS Feeds to be cached
122
122
 
123
123
  #{s.strip.lines.map {|x| 'url: ' + x }.join }
124
124
  EOF
125
-
125
+
126
126
  end
127
-
127
+
128
128
  def fetch(url, timeout: 2)
129
129
 
130
130
  puts 'inside fetch: url: ' + url.inspect if @debug
131
-
131
+
132
132
  begin
133
133
  Timeout::timeout(timeout){
134
134
 
135
- buffer = open(url).read.force_encoding("utf-8")
135
+ buffer = URI.open(url).read.force_encoding("utf-8")
136
136
  return [buffer, 200]
137
137
  }
138
138
  rescue Timeout::Error => e
139
139
  ['connection timed out', 408]
140
140
  rescue OpenURI::HTTPError => e
141
141
  ['400 bad request', 400]
142
- end
143
-
142
+ end
143
+
144
144
  end
145
-
145
+
146
146
  def open_dynarex(raw_s)
147
147
 
148
148
  s, _ = RXFHelper.read(raw_s)
149
149
  puts 'inside open_dynarex s: ' + s.inspect if @debug
150
-
150
+
151
151
  case s
152
152
  when /^<?dynarex/
153
153
  Dynarex.new.import s
@@ -156,19 +156,19 @@ EOF
156
156
  else
157
157
  Dynarex.new.import raw_doc(s)
158
158
  end
159
-
159
+
160
160
  end
161
161
 
162
- # checks for any updates and save the
162
+ # checks for any updates and save the
163
163
  # latest RSS file to the cache if there are updates
164
- #
164
+ #
165
165
  def updates?(feed)
166
166
 
167
167
  if @debug then
168
- puts 'inside updates?'
168
+ puts 'inside updates?'
169
169
  puts 'feed: ' + feed.inspect
170
170
  end
171
-
171
+
172
172
  # fetch the feeds from the web
173
173
  begin
174
174
  buffer, code = fetch(feed.url)
@@ -192,13 +192,13 @@ EOF
192
192
  end
193
193
 
194
194
  if feed.filename.empty? then
195
-
195
+
196
196
  filename = feed.url[6..-1].gsub(/\W+/,'').\
197
197
  reverse.slice(0,40).reverse.downcase + '.xml'
198
198
  feed.filename = filename
199
199
 
200
200
  end
201
-
201
+
202
202
  rssfile = File.join(@cache_filepath, feed.filename)
203
203
 
204
204
  if File.exists? rssfile then
@@ -207,24 +207,24 @@ EOF
207
207
  rss_cache = SimpleRSS.parse File.read(rssfile)
208
208
  rescue
209
209
  puts 'RSScache::updates?: err: 200 SimpleRSS warning for feed ' \
210
- + feed.url + ' ' + ($!).inspect
210
+ + feed.url + ' ' + ($!).inspect
211
211
  FileUtils.rm rssfile
212
- return false
212
+ return false
213
213
  end
214
214
  new_rss_items = rss.items - rss_cache.items
215
215
  (File.write rssfile, rss.source; return true) if new_rss_items.any?
216
-
216
+
217
217
  else
218
218
 
219
219
  File.write rssfile, rss.source
220
220
  feed.title = rss.title if feed.title.empty?
221
221
 
222
222
  return true
223
-
223
+
224
224
  end
225
-
225
+
226
226
  return false
227
- end
228
-
229
-
227
+ end
228
+
229
+
230
230
  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.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,27 +10,32 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwMjA0MTUwMTQ0WhcN
15
- MTkwMjA0MTUwMTQ0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCc92mR
17
- T6m1I0JF3lENRDv6liYXqJiStrmml5LWAEzI1kDXEXIeNziO9Jlo74rHwtrZxeJ0
18
- vuPBwXwDsoLEz1uz94hq1cfgRXXrj6K9A5YA8fQAvsFyKqxaS3Dtg5heQbgv5DUl
19
- p2dzrc057LaES5E5bdBmH2DVHoaHGyya17u4T2sz42gKkv3CURgRopj05JF3a0AZ
20
- WFE/N1xbD7ioffsKuPbGds6eL1eYk0qajutC0KIaRUqiTgzaTmntS1mDdz7nJMRM
21
- 7bVGP3cI1XfAGj/IqqfnapgYsVurPw9pzYGgBgH3XT/lKZW+xWfxpzkZH/ydpaF9
22
- XU61J04M6xm9pPMFAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
- HQYDVR0OBBYEFCTDqdNBDLPNgRVZx02eHi9sOV7vMCYGA1UdEQQfMB2BG2dlbW1h
24
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTAmBgNVHRIEHzAdgRtnZW1tYXN0ZXJAamFt
25
- ZXNyb2JlcnRzb24uZXUwDQYJKoZIhvcNAQEFBQADggEBABRCQKjdYT2lYH/XVGjB
26
- XabbdBuro3lsCqzm95wtF2qTyw60gNpXuP+FBbQbnf4YMrYe4N8+lDXdY6xs8KMP
27
- F8CoEBQSS0FqX1p4PT+5IDFEq/5Mmu46P9ZTS3bC5jlClr+IyclMdWl8yElWfer8
28
- 1KXDv1bwr1yjhc0vgAmnnUzk+V9fgDHQf58sTPlDa1k0T396x+BJ3i0xnLTOi2iU
29
- 0sAYj5+mVEGRx284sLHwgieDyxrLQMdPhDBnx5pPgJaQCw8xMS1S8DSX4gQAj+PK
30
- 5tiFhikiYyE9RjMYlZVwdfKc9yEGPhxY2J3V8RufP3HE6GHrV2lk5d9yFVcEqq+q
31
- T1k=
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjExMTE4MTk1NDM3WhcN
15
+ MjIxMTE4MTk1NDM3WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDl/WSn
17
+ rif0WGHmqi3lDo4hCKqsnTvQJFFBoYyGPd8nQPrXd1D6+o0B8qbihDaayk0itqVF
18
+ MAZpErc/X7G49/DsFHsCIggXezeu52Pjwos99kGla6qJoPUwP9uC4SMbUXrbfDOD
19
+ ONtkhEscM1vjZWfQketPUXxEpoQjQAgvEWP6JJ1wHIKf8zuxGgnOqXeyeMmI92sm
20
+ 8zOo/Tph2scpEePy8LMxj1t7WY2IKnHAjVI2bwv0t4iqzoBTGArsoKFa9CJvlEPn
21
+ KC+XCfbOyPHDYZ9rMp1VjuzE73FNvLaZyemytRITy/xZcnCRJuQJ1M5lmG1k7VGo
22
+ h12tG5hepRnU+y5eYbc7locMlm+BA0zJO6h76O16ssTXdPGmWIx0bqvH+tnE3Y1p
23
+ ge/EpMmSPaY4DwpCrUOVB2lXkWEvCTxaEUfigbro+tNnGrlolMLzYunGh/rIPwf6
24
+ JlPQofTjBLEZZ4HnvsZrcpDbKg1UAJ8DRKuGMO8vW3+SIluXMoDfkDSornsCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUMZkI563V
26
+ qEbcdqMHGxFBtvTHazwwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAGq7ekyOf3MP2SWidstI5qt1pOcyY0IsjJbU9KWiS
29
+ K9mCa3DxPks6EFHswXTEBb91S/523He3iHw3XIx0wNgDycH6/hxXoylhG37He/RG
30
+ UZVIYjs7TaVqHpslQkGcO0/tGXzQ35mooF8XiB88l08sBiEunZU3quCwG0ja6A0V
31
+ VOZ/0X3SqdOgrhagTMsjDnz7ssiP/H6hIAoFBhF7D3X+Vavo6wMhSwGMoeFmQh67
32
+ CUipnJc6MBLlq8AxZcTYhulLOxTjefUxpbPxLV+pubf9xyG4rjkpv7lMap6wENLS
33
+ KzCP36ihBrIbQ6QFi1stEPDDXMNiIYbT4liyv1Ij0VUfnhZ8XtdlTrDzTeTQ2JjA
34
+ RAxFbgUVr0H2AyzRphwLN5UUUGYhsZOS4G+ObMbXYFHTDBlJBj0GIYi7yt48E6FE
35
+ G9akldSLDKgsN9vmwihdlnktMrNa8HUDxodpx5FFzXDsza/qaExLHJA4hPkbgeiC
36
+ 4DQl3q4AK/bNTpTtJNtNQxts
32
37
  -----END CERTIFICATE-----
33
- date: 2018-02-04 00:00:00.000000000 Z
38
+ date: 2021-11-18 00:00:00.000000000 Z
34
39
  dependencies:
35
40
  - !ruby/object:Gem::Dependency
36
41
  name: dynarex
@@ -38,20 +43,20 @@ dependencies:
38
43
  requirements:
39
44
  - - "~>"
40
45
  - !ruby/object:Gem::Version
41
- version: '1.2'
46
+ version: '1.8'
42
47
  - - ">="
43
48
  - !ruby/object:Gem::Version
44
- version: 1.2.90
49
+ version: 1.8.27
45
50
  type: :runtime
46
51
  prerelease: false
47
52
  version_requirements: !ruby/object:Gem::Requirement
48
53
  requirements:
49
54
  - - "~>"
50
55
  - !ruby/object:Gem::Version
51
- version: '1.2'
56
+ version: '1.8'
52
57
  - - ">="
53
58
  - !ruby/object:Gem::Version
54
- version: 1.2.90
59
+ version: 1.8.27
55
60
  - !ruby/object:Gem::Dependency
56
61
  name: simple-rss
57
62
  requirement: !ruby/object:Gem::Requirement
@@ -61,7 +66,7 @@ dependencies:
61
66
  version: '1.3'
62
67
  - - ">="
63
68
  - !ruby/object:Gem::Version
64
- version: 1.3.1
69
+ version: 1.3.3
65
70
  type: :runtime
66
71
  prerelease: false
67
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -71,9 +76,9 @@ dependencies:
71
76
  version: '1.3'
72
77
  - - ">="
73
78
  - !ruby/object:Gem::Version
74
- version: 1.3.1
79
+ version: 1.3.3
75
80
  description:
76
- email: james@jamesrobertson.eu
81
+ email: digital.robertson@gmail.com
77
82
  executables: []
78
83
  extensions: []
79
84
  extra_rdoc_files: []
@@ -99,9 +104,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
104
  version: '0'
100
105
  requirements: []
101
106
  rubyforge_project:
102
- rubygems_version: 2.6.13
107
+ rubygems_version: 2.7.10
103
108
  signing_key:
104
109
  specification_version: 4
105
- summary: This gem helps reduce unnessecary requests to webservers by caching RSS feeds
110
+ summary: This gem helps reduce unnecessary requests to webservers by caching RSS feeds
106
111
  where the RSS feeds are updated infrequently
107
112
  test_files: []
metadata.gz.sig CHANGED
Binary file