logophobia-logophobia-feedzirra 0.0.31
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +169 -0
- data/README.textile +205 -0
- data/Rakefile +56 -0
- data/lib/core_ext/date.rb +21 -0
- data/lib/core_ext/string.rb +9 -0
- data/lib/feedzirra.rb +44 -0
- data/lib/feedzirra/feed.rb +333 -0
- data/lib/feedzirra/feed_entry_utilities.rb +45 -0
- data/lib/feedzirra/feed_utilities.rb +71 -0
- data/lib/feedzirra/parser/atom.rb +35 -0
- data/lib/feedzirra/parser/atom_entry.rb +41 -0
- data/lib/feedzirra/parser/itunes_category.rb +12 -0
- data/lib/feedzirra/parser/mrss_category.rb +11 -0
- data/lib/feedzirra/parser/mrss_content.rb +48 -0
- data/lib/feedzirra/parser/mrss_copyright.rb +10 -0
- data/lib/feedzirra/parser/mrss_credit.rb +11 -0
- data/lib/feedzirra/parser/mrss_group.rb +37 -0
- data/lib/feedzirra/parser/mrss_hash.rb +10 -0
- data/lib/feedzirra/parser/mrss_player.rb +11 -0
- data/lib/feedzirra/parser/mrss_rating.rb +10 -0
- data/lib/feedzirra/parser/mrss_restriction.rb +11 -0
- data/lib/feedzirra/parser/mrss_text.rb +13 -0
- data/lib/feedzirra/parser/mrss_thumbnail.rb +11 -0
- data/lib/feedzirra/parser/rss.rb +83 -0
- data/lib/feedzirra/parser/rss_entry.rb +83 -0
- data/lib/feedzirra/parser/rss_image.rb +15 -0
- data/spec/benchmarks/feed_benchmarks.rb +98 -0
- data/spec/benchmarks/feedzirra_benchmarks.rb +40 -0
- data/spec/benchmarks/fetching_benchmarks.rb +28 -0
- data/spec/benchmarks/parsing_benchmark.rb +30 -0
- data/spec/benchmarks/updating_benchmarks.rb +33 -0
- data/spec/feedzirra/feed_entry_utilities_spec.rb +52 -0
- data/spec/feedzirra/feed_spec.rb +546 -0
- data/spec/feedzirra/feed_utilities_spec.rb +149 -0
- data/spec/feedzirra/parser/atom_entry_spec.rb +49 -0
- data/spec/feedzirra/parser/atom_feed_burner_entry_spec.rb +42 -0
- data/spec/feedzirra/parser/atom_feed_burner_spec.rb +39 -0
- data/spec/feedzirra/parser/atom_spec.rb +43 -0
- data/spec/feedzirra/parser/mrss_content_spec.rb +32 -0
- data/spec/feedzirra/parser/rss_entry_spec.rb +154 -0
- data/spec/feedzirra/parser/rss_spec.rb +93 -0
- data/spec/sample_feeds/run_against_sample.rb +20 -0
- data/spec/spec_helper.rb +62 -0
- 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
|
data/spec/spec_helper.rb
ADDED
@@ -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: logophobia-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
|
+
|