feedzirra 0.2.1 → 0.2.2
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 +7 -0
- data/.gitignore +3 -1
- data/.travis.yml +3 -3
- data/{HISTORY.md → CHANGELOG.md} +32 -7
- data/Gemfile +4 -1
- data/Guardfile +0 -1
- data/README.md +102 -87
- data/Rakefile +1 -1
- data/feedzirra.gemspec +2 -1
- data/lib/feedzirra/core_ext/date.rb +1 -1
- data/lib/feedzirra/core_ext/string.rb +2 -2
- data/lib/feedzirra/feed.rb +16 -16
- data/lib/feedzirra/feed_entry_utilities.rb +5 -5
- data/lib/feedzirra/parser/atom_entry.rb +2 -2
- data/lib/feedzirra/parser/atom_feed_burner.rb +1 -1
- data/lib/feedzirra/parser/atom_feed_burner_entry.rb +2 -2
- data/lib/feedzirra/parser/google_docs_atom_entry.rb +1 -1
- data/lib/feedzirra/parser/itunes_rss_item.rb +2 -2
- data/lib/feedzirra/parser/itunes_rss_owner.rb +3 -3
- data/lib/feedzirra/parser/rss.rb +1 -1
- data/lib/feedzirra/parser/rss_entry.rb +7 -6
- data/lib/feedzirra/parser/rss_feed_burner.rb +1 -1
- data/lib/feedzirra/parser/rss_feed_burner_entry.rb +1 -1
- data/lib/feedzirra/parser.rb +1 -1
- data/lib/feedzirra/version.rb +1 -1
- data/lib/feedzirra.rb +1 -1
- data/spec/benchmarks/feed_benchmarks.rb +7 -7
- data/spec/benchmarks/feedzirra_benchmarks.rb +1 -1
- data/spec/benchmarks/fetching_benchmarks.rb +3 -3
- data/spec/benchmarks/parsing_benchmark.rb +1 -1
- data/spec/benchmarks/updating_benchmarks.rb +6 -6
- data/spec/feedzirra/feed_entry_utilities_spec.rb +11 -7
- data/spec/feedzirra/feed_spec.rb +85 -85
- data/spec/feedzirra/feed_utilities_spec.rb +22 -22
- data/spec/feedzirra/parser/atom_entry_spec.rb +1 -1
- data/spec/feedzirra/parser/atom_feed_burner_entry_spec.rb +7 -7
- data/spec/feedzirra/parser/atom_feed_burner_spec.rb +7 -7
- data/spec/feedzirra/parser/atom_spec.rb +9 -9
- data/spec/feedzirra/parser/itunes_rss_item_spec.rb +11 -11
- data/spec/feedzirra/parser/itunes_rss_owner_spec.rb +4 -4
- data/spec/feedzirra/parser/itunes_rss_spec.rb +8 -8
- data/spec/feedzirra/parser/rss_feed_burner_entry_spec.rb +1 -1
- data/spec/feedzirra/parser/rss_feed_burner_spec.rb +8 -8
- data/spec/feedzirra/parser/rss_spec.rb +6 -6
- data/spec/spec_helper.rb +4 -3
- metadata +10 -21
@@ -8,7 +8,7 @@ module Feedzirra
|
|
8
8
|
|
9
9
|
element :title
|
10
10
|
element :link, :as => :url
|
11
|
-
|
11
|
+
|
12
12
|
element :"dc:creator", :as => :author
|
13
13
|
element :author, :as => :author
|
14
14
|
element :"content:encoded", :as => :content
|
@@ -16,19 +16,20 @@ module Feedzirra
|
|
16
16
|
|
17
17
|
element :"media:content", :as => :image, :value => :url
|
18
18
|
element :enclosure, :as => :image, :value => :url
|
19
|
-
|
19
|
+
|
20
20
|
element :pubDate, :as => :published
|
21
21
|
element :pubdate, :as => :published
|
22
22
|
element :"dc:date", :as => :published
|
23
23
|
element :"dc:Date", :as => :published
|
24
24
|
element :"dcterms:created", :as => :published
|
25
|
-
|
26
|
-
|
25
|
+
|
26
|
+
|
27
27
|
element :"dcterms:modified", :as => :updated
|
28
28
|
element :issued, :as => :published
|
29
29
|
elements :category, :as => :categories
|
30
|
-
|
31
|
-
element :guid, :as => :entry_id
|
30
|
+
|
31
|
+
element :guid, :as => :entry_id
|
32
|
+
element :"dc:identifier", :as => :entry_id
|
32
33
|
end
|
33
34
|
|
34
35
|
end
|
data/lib/feedzirra/parser.rb
CHANGED
@@ -4,7 +4,7 @@ module Feedzirra
|
|
4
4
|
autoload :RSSEntry, 'feedzirra/parser/rss_entry'
|
5
5
|
autoload :RSSFeedBurner, 'feedzirra/parser/rss_feed_burner'
|
6
6
|
autoload :RSSFeedBurnerEntry, 'feedzirra/parser/rss_feed_burner_entry'
|
7
|
-
|
7
|
+
|
8
8
|
autoload :ITunesRSS, 'feedzirra/parser/itunes_rss'
|
9
9
|
autoload :ITunesRSSItem, 'feedzirra/parser/itunes_rss_item'
|
10
10
|
autoload :ITunesRSSOwner, 'feedzirra/parser/itunes_rss_owner'
|
data/lib/feedzirra/version.rb
CHANGED
data/lib/feedzirra.rb
CHANGED
@@ -44,14 +44,14 @@ benchmark do |t|
|
|
44
44
|
# puts res.slice(0, 500)
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
require 'rfuzz/session'
|
49
|
-
include RFuzz
|
49
|
+
include RFuzz
|
50
50
|
t.report("rfuzz") do
|
51
51
|
GET_COUNT.times do
|
52
52
|
http = HttpClient.new("www.pauldix.net", 80)
|
53
53
|
response = http.get("/")
|
54
|
-
if response.http_status != "200"
|
54
|
+
if response.http_status != "200"
|
55
55
|
puts "***** #{response.http_status}"
|
56
56
|
else
|
57
57
|
# puts response.http_status
|
@@ -59,7 +59,7 @@ benchmark do |t|
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
require 'eventmachine'
|
64
64
|
t.report("eventmachine") do
|
65
65
|
counter = GET_COUNT
|
@@ -76,8 +76,8 @@ benchmark do |t|
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
79
|
-
|
80
|
-
|
79
|
+
|
80
|
+
|
81
81
|
require 'curl-multi'
|
82
82
|
t.report("curl multi") do
|
83
83
|
multi = Curl::Multi.new
|
@@ -95,4 +95,4 @@ benchmark do |t|
|
|
95
95
|
|
96
96
|
multi.select([], []) while multi.size > 0
|
97
97
|
end
|
98
|
-
end
|
98
|
+
end
|
@@ -10,7 +10,7 @@ iterations = 10
|
|
10
10
|
urls = File.readlines(File.dirname(__FILE__) + "/../sample_feeds/successful_feed_urls.txt").slice(0, 20)
|
11
11
|
puts "benchmarks on #{urls.size} feeds"
|
12
12
|
puts "************************************"
|
13
|
-
benchmark do |t|
|
13
|
+
benchmark do |t|
|
14
14
|
t.report("feedzirra") do
|
15
15
|
iterations.times do
|
16
16
|
Feedzirra::Feed.fetch_and_parse(urls, :on_success => lambda { |url, feed| $stdout.print '.'; $stdout.flush })
|
@@ -10,7 +10,7 @@ iterations = 10
|
|
10
10
|
urls = File.readlines(File.dirname(__FILE__) + "/../sample_feeds/successful_feed_urls.txt").slice(0, 20)
|
11
11
|
puts "benchmarks on #{urls.size} feeds"
|
12
12
|
puts "************************************"
|
13
|
-
benchmark do |t|
|
13
|
+
benchmark do |t|
|
14
14
|
t.report("feedzirra open uri") do
|
15
15
|
iterations.times do
|
16
16
|
urls.each do |url|
|
@@ -24,5 +24,5 @@ benchmark do |t|
|
|
24
24
|
iterations.times do
|
25
25
|
Feedzirra::Feed.fetch_and_parse(urls, :on_success => lambda { |url, feed| $stdout.print '.'; $stdout.flush })
|
26
26
|
end
|
27
|
-
end
|
28
|
-
end
|
27
|
+
end
|
28
|
+
end
|
@@ -10,24 +10,24 @@ puts "************************************"
|
|
10
10
|
benchmark do |t|
|
11
11
|
feeds = {}
|
12
12
|
t.report("feedzirra fetch and parse") do
|
13
|
-
feeds = Feedzirra::Feed.fetch_and_parse(urls,
|
13
|
+
feeds = Feedzirra::Feed.fetch_and_parse(urls,
|
14
14
|
:on_success => lambda { |url, feed| $stdout.print '.'; $stdout.flush },
|
15
15
|
:on_failure => lambda {|url, response_code, header, body| puts "#{response_code} ERROR on #{url}"})
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
# curb caches the dns lookups for 60 seconds. to make things fair we have to wait for the cache to expire
|
19
19
|
puts "sleeping to wait for dns cache to clear"
|
20
20
|
65.times {$stdout.print('.'); sleep(1)}
|
21
21
|
puts "done"
|
22
|
-
|
22
|
+
|
23
23
|
updated_feeds = []
|
24
24
|
t.report("feedzirra update") do
|
25
|
-
updated_feeds = Feedzirra::Feed.update(feeds.values.reject {|f| f.class == Fixnum},
|
25
|
+
updated_feeds = Feedzirra::Feed.update(feeds.values.reject {|f| f.class == Fixnum},
|
26
26
|
:on_success => lambda {|feed| $stdout.print '.'; $stdout.flush},
|
27
27
|
:on_failure => lambda {|feed, response_code, header, body| puts "#{response_code} ERROR on #{feed.feed_url}"})
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
updated_feeds.each do |feed|
|
31
31
|
puts feed.feed_url if feed.updated?
|
32
32
|
end
|
33
|
-
end
|
33
|
+
end
|
@@ -6,7 +6,7 @@ describe Feedzirra::FeedUtilities do
|
|
6
6
|
include Feedzirra::FeedEntryUtilities
|
7
7
|
end
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
describe "handling dates" do
|
11
11
|
it "should parse an ISO 8601 formatted datetime into Time" do
|
12
12
|
time = @klass.new.parse_datetime("2008-02-20T8:05:00-010:00")
|
@@ -14,26 +14,30 @@ describe Feedzirra::FeedUtilities do
|
|
14
14
|
time.should == Time.parse_safely("Wed Feb 20 18:05:00 UTC 2008")
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
describe "sanitizing" do
|
19
19
|
before(:each) do
|
20
20
|
@feed = Feedzirra::Feed.parse(sample_atom_feed)
|
21
21
|
@entry = @feed.entries.first
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
|
+
it "doesn't fail when no elements are defined on includer" do
|
25
|
+
expect { @klass.new.sanitize! }.to_not raise_error
|
26
|
+
end
|
27
|
+
|
24
28
|
it "should provide a sanitized title" do
|
25
29
|
new_title = "<script>this is not safe</script>" + @entry.title
|
26
30
|
@entry.title = new_title
|
27
31
|
@entry.title.sanitize.should == Loofah.scrub_fragment(new_title, :prune).to_s
|
28
32
|
end
|
29
|
-
|
33
|
+
|
30
34
|
it "should sanitize content in place" do
|
31
35
|
new_content = "<script>" + @entry.content
|
32
36
|
@entry.content = new_content.dup
|
33
37
|
@entry.content.sanitize!.should == Loofah.scrub_fragment(new_content, :prune).to_s
|
34
38
|
@entry.content.should == Loofah.scrub_fragment(new_content, :prune).to_s
|
35
39
|
end
|
36
|
-
|
40
|
+
|
37
41
|
it "should sanitize things in place" do
|
38
42
|
@entry.title += "<script>"
|
39
43
|
@entry.author += "<script>"
|
@@ -42,11 +46,11 @@ describe Feedzirra::FeedUtilities do
|
|
42
46
|
cleaned_title = Loofah.scrub_fragment(@entry.title, :prune).to_s
|
43
47
|
cleaned_author = Loofah.scrub_fragment(@entry.author, :prune).to_s
|
44
48
|
cleaned_content = Loofah.scrub_fragment(@entry.content, :prune).to_s
|
45
|
-
|
49
|
+
|
46
50
|
@entry.sanitize!
|
47
51
|
@entry.title.should == cleaned_title
|
48
52
|
@entry.author.should == cleaned_author
|
49
53
|
@entry.content.should == cleaned_content
|
50
54
|
end
|
51
55
|
end
|
52
|
-
end
|
56
|
+
end
|