rss2mail 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +1 -1
- data/lib/rss2mail/feed.rb +3 -3
- data/lib/rss2mail/rss.rb +11 -13
- data/lib/rss2mail/util.rb +12 -4
- data/lib/rss2mail/version.rb +1 -1
- data/lib/rss2mail.rb +3 -2
- metadata +3 -3
data/README
CHANGED
data/lib/rss2mail/feed.rb
CHANGED
@@ -28,12 +28,12 @@ require 'erb'
|
|
28
28
|
require 'nuggets/file/which'
|
29
29
|
require 'nuggets/string/evaluate'
|
30
30
|
|
31
|
-
require 'rss2mail/rss'
|
32
|
-
|
33
31
|
module RSS2Mail
|
34
32
|
|
35
33
|
class Feed
|
36
34
|
|
35
|
+
include Util
|
36
|
+
|
37
37
|
HOST = ENV['HOSTNAME'] || ENV['HOST'] || %x{hostname}.chomp
|
38
38
|
|
39
39
|
attr_reader :feed, :reload, :verbose, :debug, :simple, :updated, :content, :rss
|
@@ -146,7 +146,7 @@ module RSS2Mail
|
|
146
146
|
log conditions.inspect, debug
|
147
147
|
|
148
148
|
begin
|
149
|
-
|
149
|
+
open_feed(feed[:url], conditions) { |uri|
|
150
150
|
if etag = uri.meta['etag']
|
151
151
|
feed[:etag] = etag
|
152
152
|
end
|
data/lib/rss2mail/rss.rb
CHANGED
@@ -27,7 +27,6 @@
|
|
27
27
|
#++
|
28
28
|
|
29
29
|
require 'rss'
|
30
|
-
require 'open-uri'
|
31
30
|
require 'simple-rss'
|
32
31
|
require 'unidecode'
|
33
32
|
require 'nuggets/util/i18n'
|
@@ -42,7 +41,7 @@ module RSS2Mail
|
|
42
41
|
|
43
42
|
class RSS
|
44
43
|
|
45
|
-
|
44
|
+
include Util
|
46
45
|
|
47
46
|
SUBSTITUTIONS = {
|
48
47
|
'–' => '--',
|
@@ -57,7 +56,7 @@ module RSS2Mail
|
|
57
56
|
attr_reader :content, :rss
|
58
57
|
|
59
58
|
def self.parse(url, *args)
|
60
|
-
new(
|
59
|
+
new(open_feed(url), *args)
|
61
60
|
end
|
62
61
|
|
63
62
|
def initialize(content, simple = false)
|
@@ -118,7 +117,7 @@ module RSS2Mail
|
|
118
117
|
end
|
119
118
|
|
120
119
|
def subject
|
121
|
-
@subject ||= title ? clean_subject(title) : 'NO TITLE'
|
120
|
+
@subject ||= title ? clean_subject(title.dup) : 'NO TITLE'
|
122
121
|
end
|
123
122
|
|
124
123
|
private
|
@@ -165,7 +164,7 @@ module RSS2Mail
|
|
165
164
|
def get_body(tag, encoding)
|
166
165
|
body = case tag
|
167
166
|
when nil then return
|
168
|
-
when true then
|
167
|
+
when true then open_feed(link).read
|
169
168
|
when String then extract_body(tag)
|
170
169
|
when Array then extract_body(*tag)
|
171
170
|
else raise ArgumentError, "don't know how to handle tag of type #{tag.class}"
|
@@ -179,19 +178,18 @@ module RSS2Mail
|
|
179
178
|
|
180
179
|
def extract_body(expr, attribute = nil)
|
181
180
|
if defined?(Hpricot)
|
182
|
-
elem = Hpricot(
|
181
|
+
elem = Hpricot(open_feed(link)).at(expr)
|
183
182
|
attribute ? elem[attribute] : elem.to_s
|
184
183
|
else
|
185
|
-
|
184
|
+
open_feed(link).read
|
186
185
|
end
|
187
186
|
end
|
188
187
|
|
189
|
-
def clean_subject(
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
gsub(/'/, "'\\\\''")
|
188
|
+
def clean_subject(str)
|
189
|
+
str.replace_diacritics!
|
190
|
+
str.gsub!(SUBSTITUTIONS_RE) { |m| SUBSTITUTIONS[m] }
|
191
|
+
str.gsub!(/'/, "'\\\\''")
|
192
|
+
str.to_ascii
|
195
193
|
end
|
196
194
|
|
197
195
|
end
|
data/lib/rss2mail/util.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# #
|
4
4
|
# A component of rss2mail, the RSS to e-mail forwarder. #
|
5
5
|
# #
|
6
|
-
# Copyright (C) 2007-
|
6
|
+
# Copyright (C) 2007-2012 Jens Wille #
|
7
7
|
# #
|
8
8
|
# Authors: #
|
9
9
|
# Jens Wille <ww@blackwinter.de> #
|
@@ -28,23 +28,27 @@ require 'uri'
|
|
28
28
|
require 'open-uri'
|
29
29
|
require 'hpricot'
|
30
30
|
|
31
|
+
require 'rss2mail/version'
|
32
|
+
|
31
33
|
module RSS2Mail
|
32
34
|
|
33
35
|
module Util
|
34
36
|
|
35
37
|
extend self
|
36
38
|
|
37
|
-
|
39
|
+
USER_AGENT = "RSS2Mail/#{VERSION}".freeze
|
40
|
+
|
41
|
+
FEED_RE = %r{\Aapplication/(?:atom|rss)\+xml\z}i
|
38
42
|
|
39
43
|
# cf. <http://www.rssboard.org/rss-autodiscovery>
|
40
44
|
def discover_feed(url, or_self = false)
|
41
45
|
default = or_self ? url : nil
|
42
46
|
|
43
47
|
unless url.nil? || url.empty? || url == 'about:blank'
|
44
|
-
doc = Hpricot(
|
48
|
+
doc = Hpricot(open_feed(url))
|
45
49
|
|
46
50
|
if feed_element = doc.search('//link[@rel="alternate"').find { |link|
|
47
|
-
link[:type] =~
|
51
|
+
link[:type] =~ FEED_RE
|
48
52
|
}
|
49
53
|
if feed_href = feed_element[:href]
|
50
54
|
return feed_href if feed_href =~ URI.regexp(%w[http https])
|
@@ -58,6 +62,10 @@ module RSS2Mail
|
|
58
62
|
default
|
59
63
|
end
|
60
64
|
|
65
|
+
def open_feed(url, options = {}, &block)
|
66
|
+
open(url, options.merge('User-Agent' => USER_AGENT), &block)
|
67
|
+
end
|
68
|
+
|
61
69
|
end
|
62
70
|
|
63
71
|
end
|
data/lib/rss2mail/version.rb
CHANGED
data/lib/rss2mail.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# #
|
4
4
|
# rss2mail -- Send RSS feeds as e-mail #
|
5
5
|
# #
|
6
|
-
# Copyright (C) 2007-
|
6
|
+
# Copyright (C) 2007-2012 Jens Wille #
|
7
7
|
# #
|
8
8
|
# Authors: #
|
9
9
|
# Jens Wille <ww@blackwinter.de> #
|
@@ -24,8 +24,9 @@
|
|
24
24
|
###############################################################################
|
25
25
|
#++
|
26
26
|
|
27
|
+
require 'rss2mail/util'
|
27
28
|
require 'rss2mail/feed'
|
28
|
-
require 'rss2mail/
|
29
|
+
require 'rss2mail/rss'
|
29
30
|
|
30
31
|
module RSS2Mail
|
31
32
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rss2mail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: simple-rss
|
@@ -107,7 +107,7 @@ rdoc_options:
|
|
107
107
|
- --line-numbers
|
108
108
|
- --all
|
109
109
|
- --title
|
110
|
-
- rss2mail Application documentation (v0.1.
|
110
|
+
- rss2mail Application documentation (v0.1.1)
|
111
111
|
- --main
|
112
112
|
- README
|
113
113
|
require_paths:
|