Spectives-logophobia-feedzirra 0.0.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/README.rdoc +169 -0
  2. data/README.textile +205 -0
  3. data/Rakefile +56 -0
  4. data/lib/core_ext/date.rb +21 -0
  5. data/lib/core_ext/string.rb +9 -0
  6. data/lib/feedzirra.rb +44 -0
  7. data/lib/feedzirra/feed.rb +333 -0
  8. data/lib/feedzirra/feed_entry_utilities.rb +45 -0
  9. data/lib/feedzirra/feed_utilities.rb +71 -0
  10. data/lib/feedzirra/parser/atom.rb +35 -0
  11. data/lib/feedzirra/parser/atom_entry.rb +41 -0
  12. data/lib/feedzirra/parser/itunes_category.rb +12 -0
  13. data/lib/feedzirra/parser/mrss_category.rb +11 -0
  14. data/lib/feedzirra/parser/mrss_content.rb +48 -0
  15. data/lib/feedzirra/parser/mrss_copyright.rb +10 -0
  16. data/lib/feedzirra/parser/mrss_credit.rb +11 -0
  17. data/lib/feedzirra/parser/mrss_group.rb +37 -0
  18. data/lib/feedzirra/parser/mrss_hash.rb +10 -0
  19. data/lib/feedzirra/parser/mrss_player.rb +11 -0
  20. data/lib/feedzirra/parser/mrss_rating.rb +10 -0
  21. data/lib/feedzirra/parser/mrss_restriction.rb +11 -0
  22. data/lib/feedzirra/parser/mrss_text.rb +13 -0
  23. data/lib/feedzirra/parser/mrss_thumbnail.rb +11 -0
  24. data/lib/feedzirra/parser/rss.rb +83 -0
  25. data/lib/feedzirra/parser/rss_entry.rb +83 -0
  26. data/lib/feedzirra/parser/rss_image.rb +15 -0
  27. data/spec/benchmarks/feed_benchmarks.rb +98 -0
  28. data/spec/benchmarks/feedzirra_benchmarks.rb +40 -0
  29. data/spec/benchmarks/fetching_benchmarks.rb +28 -0
  30. data/spec/benchmarks/parsing_benchmark.rb +30 -0
  31. data/spec/benchmarks/updating_benchmarks.rb +33 -0
  32. data/spec/feedzirra/feed_entry_utilities_spec.rb +52 -0
  33. data/spec/feedzirra/feed_spec.rb +546 -0
  34. data/spec/feedzirra/feed_utilities_spec.rb +149 -0
  35. data/spec/feedzirra/parser/atom_entry_spec.rb +49 -0
  36. data/spec/feedzirra/parser/atom_feed_burner_entry_spec.rb +42 -0
  37. data/spec/feedzirra/parser/atom_feed_burner_spec.rb +39 -0
  38. data/spec/feedzirra/parser/atom_spec.rb +43 -0
  39. data/spec/feedzirra/parser/mrss_content_spec.rb +32 -0
  40. data/spec/feedzirra/parser/rss_entry_spec.rb +154 -0
  41. data/spec/feedzirra/parser/rss_spec.rb +93 -0
  42. data/spec/sample_feeds/run_against_sample.rb +20 -0
  43. data/spec/spec_helper.rb +62 -0
  44. metadata +155 -0
@@ -0,0 +1,93 @@
1
+ require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
2
+
3
+ describe Feedzirra::Parser::RSS do
4
+ describe "#will_parse?" do
5
+ it "should return true for an RSS feed" do
6
+ Feedzirra::Parser::RSS.should be_able_to_parse(sample_rss_feed)
7
+ end
8
+
9
+ it "should return true for an rdf feed" do
10
+ Feedzirra::Parser::RSS.should be_able_to_parse(sample_rdf_feed)
11
+ end
12
+
13
+ it "should return true for an iTunes feed" do
14
+ Feedzirra::Parser::RSS.should be_able_to_parse(sample_itunes_feed)
15
+ end
16
+
17
+ it "should return fase for an atom feed" do
18
+ Feedzirra::Parser::RSS.should_not be_able_to_parse(sample_atom_feed)
19
+ end
20
+ end
21
+
22
+ describe "parsing" do
23
+ before do
24
+ @feed = Feedzirra::Parser::RSS.parse(sample_mrss_feed)
25
+ end
26
+
27
+ it "should parse the title" do
28
+ @feed.title.should == "Google Video - Hot videos"
29
+ end
30
+
31
+ it "should parse the url" do
32
+ @feed.url.should == "http://video.google.com/"
33
+ end
34
+
35
+ it "should provide an accessor for the feed_url" do
36
+ @feed.respond_to?(:feed_url).should == true
37
+ @feed.respond_to?(:feed_url=).should == true
38
+ end
39
+
40
+ it "should parse entries" do
41
+ @feed.entries.size.should == 20
42
+ end
43
+
44
+ it "should parse the image" do
45
+ pending 'setting NilClass for some reason'
46
+ @feed.image.class.should == 'RSSImage'
47
+ @feed.image.title.should == 'Google Video - Hot videos'
48
+ @feed.image.link.should == 'http://video.google.com/'
49
+ @feed.image.url.should == 'http://video.google.com/common/google_logo_small.jpg'
50
+ @feed.image.width.should == '100'
51
+ @feed.image.height.should == '37'
52
+ end
53
+
54
+ describe "parsing an iTunes feed" do
55
+ before do
56
+ @feed = Feedzirra::Parser::RSS.parse(sample_itunes_feed)
57
+ end
58
+
59
+ it "should parse an image" do
60
+ @feed.image.should == "http://example.com/podcasts/everything/AllAboutEverything.jpg"
61
+ end
62
+
63
+ it "should parse categories" do
64
+ @feed.categories.size == 2
65
+ @feed.categories[0].should == "Technology"
66
+ @feed.categories[1].should == "Gadgets"
67
+ @feed.categories[2].should == "TV & Film"
68
+
69
+ # @feed.categories[0].name.should == "Technology"
70
+ # @feed.categories[0].sub_categories.size.should == 1
71
+ # @feed.categories[0].sub_categories[0].should == "Gadgets"
72
+ # @feed.categories[1].name.should == "TV & Film"
73
+ # @feed.categories[1].sub_categories.size.should == 0
74
+ end
75
+
76
+ it "should parse the summary" do
77
+ @feed.summary.should == "All About Everything is a show about everything. Each week we dive into any subject known to man and talk about it as much as we can. Look for our Podcast in the iTunes Music Store"
78
+ end
79
+
80
+ it "should parse entries" do
81
+ @feed.entries.size.should == 4
82
+ end
83
+
84
+ it "should parse the owner name" do
85
+ @feed.owner_name.should == 'John Doe'
86
+ end
87
+
88
+ it "should parse the owner email" do
89
+ @feed.owner_email.should == 'john.doe@example.com'
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,20 @@
1
+ require 'rubygems'
2
+ require File.dirname(__FILE__) + "/../../lib/feedzirra.rb"
3
+
4
+ feed_urls = File.readlines(File.dirname(__FILE__) + "/top5kfeeds.dat").collect {|line| line.split.first}
5
+
6
+ success = lambda do |url, feed|
7
+ puts "SUCCESS - #{feed.title} - #{url}"
8
+ end
9
+
10
+ failed_feeds = []
11
+ failure = lambda do |url, response_code, header, body|
12
+ failed_feeds << url if response_code == 200
13
+ puts "*********** FAILED with #{response_code} on #{url}"
14
+ end
15
+
16
+ Feedzirra::Feed.fetch_and_parse(feed_urls, :on_success => success, :on_failure => failure)
17
+
18
+ File.open("./failed_urls.txt", "w") do |f|
19
+ f.write failed_feeds.join("\n")
20
+ end
@@ -0,0 +1,62 @@
1
+ require "rubygems"
2
+ require "spec"
3
+
4
+ # gem install redgreen for colored test output
5
+ begin require "redgreen" unless ENV['TM_CURRENT_LINE']; rescue LoadError; end
6
+
7
+ path = File.expand_path(File.dirname(__FILE__) + "/../lib/")
8
+ $LOAD_PATH.unshift(path) unless $LOAD_PATH.include?(path)
9
+
10
+ require "lib/feedzirra"
11
+
12
+ def load_sample(filename)
13
+ File.read("#{File.dirname(__FILE__)}/sample_feeds/#{filename}")
14
+ end
15
+
16
+ def sample_atom_feed
17
+ load_sample("AmazonWebServicesBlog.xml")
18
+ end
19
+
20
+ def sample_atom_entry_content
21
+ load_sample("AmazonWebServicesBlogFirstEntryContent.xml")
22
+ end
23
+
24
+ def sample_itunes_feed
25
+ load_sample("itunes.xml")
26
+ end
27
+
28
+ def sample_rdf_feed
29
+ load_sample("HREFConsideredHarmful.xml")
30
+ end
31
+
32
+ def sample_rdf_entry_content
33
+ load_sample("HREFConsideredHarmfulFirstEntry.xml")
34
+ end
35
+
36
+ def sample_rss_feed_burner_feed
37
+ load_sample("SamHarrisAuthorPhilosopherEssayistAtheist.xml")
38
+ end
39
+
40
+ def sample_rss_feed
41
+ load_sample("TenderLovemaking.xml")
42
+ end
43
+
44
+ def sample_rss_entry_content
45
+ load_sample("TenderLovemakingFirstEntry.xml")
46
+ end
47
+
48
+ def sample_feedburner_atom_feed
49
+ load_sample("PaulDixExplainsNothing.xml")
50
+ end
51
+
52
+ def sample_feedburner_atom_entry_content
53
+ load_sample("PaulDixExplainsNothingFirstEntryContent.xml")
54
+ end
55
+
56
+ def sample_wfw_feed
57
+ load_sample("PaulDixExplainsNothingWFW.xml")
58
+ end
59
+
60
+ def sample_mrss_feed
61
+ load_sample("GoogleVideoSample.xml")
62
+ end
metadata ADDED
@@ -0,0 +1,155 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Spectives-logophobia-feedzirra
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.31
5
+ platform: ruby
6
+ authors:
7
+ - Paul Dix
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-19 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: nokogiri
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: pauldix-sax-machine
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.12
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: taf2-curb
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.2.3
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: builder
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 2.1.2
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 2.0.0
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: mdalessio-dryopteris
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 0.0.0
74
+ version:
75
+ description:
76
+ email: paul@pauldix.net
77
+ executables: []
78
+
79
+ extensions: []
80
+
81
+ extra_rdoc_files: []
82
+
83
+ files:
84
+ - lib/feedzirra.rb
85
+ - lib/feedzirra/feed.rb
86
+ - lib/feedzirra/feed_utilities.rb
87
+ - lib/feedzirra/parser/rss_entry.rb
88
+ - lib/feedzirra/parser/mrss_hash.rb
89
+ - lib/feedzirra/parser/atom_entry.rb
90
+ - lib/feedzirra/parser/rss.rb
91
+ - lib/feedzirra/parser/mrss_rating.rb
92
+ - lib/feedzirra/parser/mrss_text.rb
93
+ - lib/feedzirra/parser/mrss_player.rb
94
+ - lib/feedzirra/parser/mrss_group.rb
95
+ - lib/feedzirra/parser/rss_image.rb
96
+ - lib/feedzirra/parser/atom.rb
97
+ - lib/feedzirra/parser/mrss_thumbnail.rb
98
+ - lib/feedzirra/parser/mrss_credit.rb
99
+ - lib/feedzirra/parser/itunes_category.rb
100
+ - lib/feedzirra/parser/mrss_restriction.rb
101
+ - lib/feedzirra/parser/mrss_category.rb
102
+ - lib/feedzirra/parser/mrss_content.rb
103
+ - lib/feedzirra/parser/mrss_copyright.rb
104
+ - lib/feedzirra/feed_entry_utilities.rb
105
+ - lib/core_ext/date.rb
106
+ - lib/core_ext/string.rb
107
+ - README.rdoc
108
+ - README.textile
109
+ - Rakefile
110
+ - spec/feedzirra/parser/mrss_content_spec.rb
111
+ - spec/feedzirra/parser/rss_entry_spec.rb
112
+ - spec/feedzirra/parser/atom_feed_burner_entry_spec.rb
113
+ - spec/feedzirra/parser/rss_spec.rb
114
+ - spec/feedzirra/parser/atom_spec.rb
115
+ - spec/feedzirra/parser/atom_entry_spec.rb
116
+ - spec/feedzirra/parser/atom_feed_burner_spec.rb
117
+ - spec/feedzirra/feed_entry_utilities_spec.rb
118
+ - spec/feedzirra/feed_spec.rb
119
+ - spec/feedzirra/feed_utilities_spec.rb
120
+ - spec/benchmarks/feed_benchmarks.rb
121
+ - spec/benchmarks/updating_benchmarks.rb
122
+ - spec/benchmarks/feedzirra_benchmarks.rb
123
+ - spec/benchmarks/fetching_benchmarks.rb
124
+ - spec/benchmarks/parsing_benchmark.rb
125
+ - spec/sample_feeds/run_against_sample.rb
126
+ - spec/spec_helper.rb
127
+ has_rdoc: true
128
+ homepage: http://github.com/pauldix/feedzirra
129
+ licenses:
130
+ post_install_message:
131
+ rdoc_options: []
132
+
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: "0"
140
+ version:
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: "0"
146
+ version:
147
+ requirements: []
148
+
149
+ rubyforge_project:
150
+ rubygems_version: 1.3.5
151
+ signing_key:
152
+ specification_version: 2
153
+ summary: "A feed fetching and parsing library that treats the internet like Godzilla treats Japan: it dominates and eats all."
154
+ test_files: []
155
+