feedzirra 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -1
  3. data/.travis.yml +3 -3
  4. data/{HISTORY.md → CHANGELOG.md} +32 -7
  5. data/Gemfile +4 -1
  6. data/Guardfile +0 -1
  7. data/README.md +102 -87
  8. data/Rakefile +1 -1
  9. data/feedzirra.gemspec +2 -1
  10. data/lib/feedzirra/core_ext/date.rb +1 -1
  11. data/lib/feedzirra/core_ext/string.rb +2 -2
  12. data/lib/feedzirra/feed.rb +16 -16
  13. data/lib/feedzirra/feed_entry_utilities.rb +5 -5
  14. data/lib/feedzirra/parser/atom_entry.rb +2 -2
  15. data/lib/feedzirra/parser/atom_feed_burner.rb +1 -1
  16. data/lib/feedzirra/parser/atom_feed_burner_entry.rb +2 -2
  17. data/lib/feedzirra/parser/google_docs_atom_entry.rb +1 -1
  18. data/lib/feedzirra/parser/itunes_rss_item.rb +2 -2
  19. data/lib/feedzirra/parser/itunes_rss_owner.rb +3 -3
  20. data/lib/feedzirra/parser/rss.rb +1 -1
  21. data/lib/feedzirra/parser/rss_entry.rb +7 -6
  22. data/lib/feedzirra/parser/rss_feed_burner.rb +1 -1
  23. data/lib/feedzirra/parser/rss_feed_burner_entry.rb +1 -1
  24. data/lib/feedzirra/parser.rb +1 -1
  25. data/lib/feedzirra/version.rb +1 -1
  26. data/lib/feedzirra.rb +1 -1
  27. data/spec/benchmarks/feed_benchmarks.rb +7 -7
  28. data/spec/benchmarks/feedzirra_benchmarks.rb +1 -1
  29. data/spec/benchmarks/fetching_benchmarks.rb +3 -3
  30. data/spec/benchmarks/parsing_benchmark.rb +1 -1
  31. data/spec/benchmarks/updating_benchmarks.rb +6 -6
  32. data/spec/feedzirra/feed_entry_utilities_spec.rb +11 -7
  33. data/spec/feedzirra/feed_spec.rb +85 -85
  34. data/spec/feedzirra/feed_utilities_spec.rb +22 -22
  35. data/spec/feedzirra/parser/atom_entry_spec.rb +1 -1
  36. data/spec/feedzirra/parser/atom_feed_burner_entry_spec.rb +7 -7
  37. data/spec/feedzirra/parser/atom_feed_burner_spec.rb +7 -7
  38. data/spec/feedzirra/parser/atom_spec.rb +9 -9
  39. data/spec/feedzirra/parser/itunes_rss_item_spec.rb +11 -11
  40. data/spec/feedzirra/parser/itunes_rss_owner_spec.rb +4 -4
  41. data/spec/feedzirra/parser/itunes_rss_spec.rb +8 -8
  42. data/spec/feedzirra/parser/rss_feed_burner_entry_spec.rb +1 -1
  43. data/spec/feedzirra/parser/rss_feed_burner_spec.rb +8 -8
  44. data/spec/feedzirra/parser/rss_spec.rb +6 -6
  45. data/spec/spec_helper.rb +4 -3
  46. 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
@@ -19,4 +19,4 @@ module Feedzirra
19
19
 
20
20
  end
21
21
 
22
- end
22
+ end
@@ -35,7 +35,7 @@ module Feedzirra
35
35
  def url
36
36
  @url || @link
37
37
  end
38
-
38
+
39
39
  end
40
40
 
41
41
  end
@@ -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'
@@ -1,3 +1,3 @@
1
1
  module Feedzirra
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  end
data/lib/feedzirra.rb CHANGED
@@ -12,6 +12,6 @@ module Feedzirra
12
12
  autoload :FeedUtilities, 'feedzirra/feed_utilities'
13
13
  autoload :Feed, 'feedzirra/feed'
14
14
  autoload :Parser, 'feedzirra/parser'
15
-
15
+
16
16
  class NoParserAvailable < StandardError; end
17
17
  end
@@ -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
@@ -8,7 +8,7 @@ include Benchmark
8
8
  iterations = 50
9
9
  xml = File.read(File.dirname(__FILE__) + '/../sample_feeds/PaulDixExplainsNothing.xml')
10
10
 
11
- benchmark do |t|
11
+ benchmark do |t|
12
12
  t.report("feedzirra") do
13
13
  iterations.times do
14
14
  Feedzirra::Feed.parse(xml)
@@ -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