rss2mail 0.4.3 → 0.4.4

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: 19c5eb6339d4ffc691faac4c7b350fd85439f00b
4
- data.tar.gz: 973e021b179b3c2ab6d58ac6d31388e5279ea628
3
+ metadata.gz: ef8bedfd16d99cdc944139b587acb2cc62b1967f
4
+ data.tar.gz: 62fd84a1410ea0601a9c978e00c52f49007c1e16
5
5
  SHA512:
6
- metadata.gz: 2dc5517ca3bfa91ae4b4c1755fb9006ffab3f310b7d84a6769c48c866d6af10d109459aa04df9efbf794cf34abd856f5ed9d3d34811bee143b7064ab24757d50
7
- data.tar.gz: e2485e05eff43f7d0b18d4a1d2861b929f52018e9fd96036d5cd85dad87dc6e1817176679d363d018184844587a14037d47c2d12390524f49d724603a5ec769b
6
+ metadata.gz: c82d6b18e1909fcbdb57418279a36da537676172400f1ffb036c4aefeba23028dfc58e04272f471cf90abf10ce767c1d7201995db5e13155d02d9b64c30622b6
7
+ data.tar.gz: 3e4215196b5e62655f360cbbf72aea4f22156a459fd8e96205abd284b99f33f2f87096e34a4825ae5d0459d3bee52e74470fa0b538e9fb33b6602ef3638f4d07
data/README CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  == VERSION
4
4
 
5
- This documentation refers to rss2mail version 0.4.3
5
+ This documentation refers to rss2mail version 0.4.4
6
6
 
7
7
 
8
8
  == DESCRIPTION
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- require File.expand_path(%q{../lib/rss2mail/version}, __FILE__)
1
+ require_relative 'lib/rss2mail/version'
2
2
 
3
3
  begin
4
4
  require 'hen'
@@ -14,9 +14,9 @@ begin
14
14
  homepage: :blackwinter,
15
15
  extra_files: FileList['templates/*'].to_a,
16
16
  dependencies: %w[
17
- cyclops nokogiri nuggets safe_yaml
17
+ cyclops nokogiri nuggets
18
18
  simple-rss sinatra unidecoder
19
- ],
19
+ ] << ['safe_yaml-store', '~> 0.0'],
20
20
 
21
21
  required_ruby_version: '>= 1.9.3'
22
22
  }
data/lib/rss2mail/app.rb CHANGED
@@ -78,20 +78,27 @@ end
78
78
  def prepare
79
79
  user = request.env['REMOTE_USER'] or error(400)
80
80
 
81
- @feeds_file = File.join(settings.root, 'feeds.d', "#{user}.yaml")
82
- @feeds = RSS2Mail::Util.load_feeds(@feeds_file) || {}
83
- @targets = @feeds.keys.sort_by { |t, _| t.to_s }
81
+ @feeds = RSS2Mail::Util.load_feeds(
82
+ File.join(settings.root, 'feeds.d', "#{user}.yaml"))
83
+
84
+ @tos = []
85
+
86
+ @feeds.transaction(true) {
87
+ @targets = @feeds.roots.sort_by(&:to_s).each { |target|
88
+ @feeds[target].each { |feed| @tos.concat(Array(feed[:to])) } } }
89
+
90
+ @tos.uniq!
84
91
  end
85
92
 
86
93
  def update(create = false)
87
- feeds = @feeds[@target]
94
+ feeds = @feeds.get(@target)
88
95
 
89
96
  feed = feeds.find { |f| f[:url] == @feed_url }
90
97
  error(404) unless feed || create
91
98
 
92
99
  yield feeds, feed
93
100
 
94
- RSS2Mail::Util.dump_feeds(@feeds_file, @feeds)
101
+ RSS2Mail::Util.dump_feeds(@feeds, @target, feeds)
95
102
  @title, @to = feed.values_at(:title, :to) unless create
96
103
  end
97
104
 
@@ -157,7 +164,7 @@ __END__
157
164
  <br />
158
165
  <input type="text" id="to" name="to" value="<%=h @to %>" size="54" list="tos" />
159
166
  <datalist id="tos">
160
- <% for to in @feeds.values.map { |feeds| feeds.map { |feed| feed[:to] } }.flatten.uniq.sort %>
167
+ <% for to in @tos.sort %>
161
168
  <option value="<%=h to %>" />
162
169
  <% end %>
163
170
  </datalist>
@@ -176,12 +183,12 @@ __END__
176
183
  <h2>subscriptions</h2>
177
184
 
178
185
  <ul>
179
- <% for target in @targets %>
186
+ <% for target in @targets; feeds = @feeds.get(target) %>
180
187
  <li>
181
- <strong><%=h target %></strong> (<%= @feeds[target].size %>)
188
+ <strong><%=h target %></strong> (<%= feeds.size %>)
182
189
 
183
190
  <ul>
184
- <% for feed in @feeds[target].sort_by { |f| f[:title].downcase } %>
191
+ <% for feed in feeds.sort_by { |f| f[:title].downcase } %>
185
192
  <li>
186
193
  <form method="post">
187
194
  <input type="hidden" name="target" value="<%=h target %>" />
data/lib/rss2mail/cli.rb CHANGED
@@ -68,12 +68,14 @@ module RSS2Mail
68
68
  }
69
69
 
70
70
  (options.delete(:files) || default_files).each { |feeds_file|
71
- feeds = RSS2Mail::Util.load_feeds(feeds_file) or begin
71
+ unless File.readable?(feeds_file)
72
72
  warn "Feeds file not found: #{feeds_file}"
73
73
  next
74
74
  end
75
75
 
76
- unless target_feeds = feeds[target]
76
+ feeds = Util.load_feeds(feeds_file)
77
+
78
+ unless target_feeds = feeds.get(target)
77
79
  warn "Feeds target not found in #{feeds_file}: #{target}"
78
80
  next
79
81
  end
@@ -82,7 +84,7 @@ module RSS2Mail
82
84
  Feed.new(feed, options).deliver(templates) unless feed[:skip]
83
85
  }
84
86
 
85
- RSS2Mail::Util.dump_feeds(feeds_file, feeds) unless options[:debug]
87
+ Util.dump_feeds(feeds, target, target_feeds) unless options[:debug]
86
88
  }
87
89
  end
88
90
 
data/lib/rss2mail/feed.rb CHANGED
@@ -130,7 +130,7 @@ module RSS2Mail
130
130
  end
131
131
  end
132
132
 
133
- def get(reload = reload)
133
+ def get(reload = reload())
134
134
  conditions = {}
135
135
 
136
136
  if reload
@@ -180,7 +180,7 @@ module RSS2Mail
180
180
  content
181
181
  end
182
182
 
183
- def parse(reload = reload)
183
+ def parse(reload = reload())
184
184
  @rss = nil if reload
185
185
 
186
186
  if content
@@ -230,7 +230,7 @@ module RSS2Mail
230
230
  error err, 'while sending mail', transport
231
231
  end
232
232
 
233
- def log(msg, verbose = verbose)
233
+ def log(msg, verbose = verbose())
234
234
  warn "[#{feed[:title]}] #{msg}" if verbose
235
235
  end
236
236
 
data/lib/rss2mail/util.rb CHANGED
@@ -24,9 +24,9 @@
24
24
  ###############################################################################
25
25
  #++
26
26
 
27
+ require 'safe_yaml/store'
27
28
  require 'open-uri'
28
29
  require 'nokogiri'
29
- require 'safe_yaml/load'
30
30
 
31
31
  require 'rss2mail/version'
32
32
 
@@ -70,13 +70,14 @@ module RSS2Mail
70
70
  open(url, options.merge('User-Agent' => USER_AGENT), &block)
71
71
  end
72
72
 
73
- def load_feeds(feeds_file)
74
- return unless File.readable?(feeds_file)
75
- SafeYAML.load_file(feeds_file, deserialize_symbols: true)
73
+ def load_feeds(feeds_file, options = { deserialize_symbols: true })
74
+ SafeYAML::Store.new(feeds_file, {}, options).tap { |store|
75
+ def store.get(key); transaction(true) { self[key] }; end
76
+ }
76
77
  end
77
78
 
78
- def dump_feeds(feeds_file, feeds)
79
- File.open(feeds_file, 'w') { |file| YAML.dump(feeds, file) }
79
+ def dump_feeds(store, key, value)
80
+ store.transaction { store[key] = value }
80
81
  end
81
82
 
82
83
  end
@@ -4,7 +4,7 @@ module RSS2Mail
4
4
 
5
5
  MAJOR = 0
6
6
  MINOR = 4
7
- TINY = 3
7
+ TINY = 4
8
8
 
9
9
  class << self
10
10
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rss2mail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jens Wille
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-27 00:00:00.000000000 Z
11
+ date: 2014-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cyclops
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: safe_yaml
56
+ name: simple-rss
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: simple-rss
70
+ name: sinatra
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: sinatra
84
+ name: unidecoder
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,33 +95,39 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: unidecoder
98
+ name: safe_yaml-store
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: '0.0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: '0.0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: hen
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.8'
115
118
  - - ">="
116
119
  - !ruby/object:Gem::Version
117
- version: '0'
120
+ version: 0.8.0
118
121
  type: :development
119
122
  prerelease: false
120
123
  version_requirements: !ruby/object:Gem::Requirement
121
124
  requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: '0.8'
122
128
  - - ">="
123
129
  - !ruby/object:Gem::Version
124
- version: '0'
130
+ version: 0.8.0
125
131
  - !ruby/object:Gem::Dependency
126
132
  name: rake
127
133
  requirement: !ruby/object:Gem::Requirement
@@ -170,7 +176,7 @@ metadata: {}
170
176
  post_install_message:
171
177
  rdoc_options:
172
178
  - "--title"
173
- - rss2mail Application documentation (v0.4.3)
179
+ - rss2mail Application documentation (v0.4.4)
174
180
  - "--charset"
175
181
  - UTF-8
176
182
  - "--line-numbers"
@@ -191,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
197
  version: '0'
192
198
  requirements: []
193
199
  rubyforge_project:
194
- rubygems_version: 2.4.1
200
+ rubygems_version: 2.4.4
195
201
  signing_key:
196
202
  specification_version: 4
197
203
  summary: Send RSS feeds as e-mail