feedzirra 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|