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
@@ -5,21 +5,21 @@ describe Feedzirra::Parser::Atom do
|
|
5
5
|
it "should return true for an atom feed" do
|
6
6
|
Feedzirra::Parser::Atom.should be_able_to_parse(sample_atom_feed)
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it "should return false for an rdf feed" do
|
10
10
|
Feedzirra::Parser::Atom.should_not be_able_to_parse(sample_rdf_feed)
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it "should return false for an rss feedburner feed" do
|
14
14
|
Feedzirra::Parser::Atom.should_not be_able_to_parse(sample_rss_feed_burner_feed)
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
describe "parsing" do
|
19
19
|
before(:each) do
|
20
20
|
@feed = Feedzirra::Parser::Atom.parse(sample_atom_feed)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
it "should parse the title" do
|
24
24
|
@feed.title.should == "Amazon Web Services Blog"
|
25
25
|
end
|
@@ -31,21 +31,21 @@ describe Feedzirra::Parser::Atom do
|
|
31
31
|
it "should parse the url" do
|
32
32
|
@feed.url.should == "http://aws.typepad.com/aws/"
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
it "should parse the url even when it doesn't have the type='text/html' attribute" do
|
36
36
|
Feedzirra::Parser::Atom.parse(load_sample("atom_with_link_tag_for_url_unmarked.xml")).url.should == "http://www.innoq.com/planet/"
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
it "should parse the feed_url even when it doesn't have the type='application/atom+xml' attribute" do
|
40
40
|
Feedzirra::Parser::Atom.parse(load_sample("atom_with_link_tag_for_url_unmarked.xml")).feed_url.should == "http://www.innoq.com/planet/atom.xml"
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
it "should parse the feed_url" do
|
44
44
|
@feed.feed_url.should == "http://aws.typepad.com/aws/atom.xml"
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
it "should parse entries" do
|
48
48
|
@feed.entries.size.should == 10
|
49
49
|
end
|
50
50
|
end
|
51
|
-
end
|
51
|
+
end
|
@@ -6,43 +6,43 @@ describe Feedzirra::Parser::ITunesRSSItem do
|
|
6
6
|
# but this is actually how it should work. You would never just pass entry xml straight to the ITunesRssItem
|
7
7
|
@item = Feedzirra::Parser::ITunesRSS.parse(sample_itunes_feed).entries.first
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
it "should parse the title" do
|
11
11
|
@item.title.should == "Shake Shake Shake Your Spices"
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it "should parse the author" do
|
15
15
|
@item.itunes_author.should == "John Doe"
|
16
|
-
end
|
16
|
+
end
|
17
17
|
|
18
18
|
it "should parse the subtitle" do
|
19
19
|
@item.itunes_subtitle.should == "A short primer on table spices"
|
20
|
-
end
|
20
|
+
end
|
21
21
|
|
22
22
|
it "should parse the summary" do
|
23
23
|
@item.itunes_summary.should == "This week we talk about salt and pepper shakers, comparing and contrasting pour rates, construction materials, and overall aesthetics. Come and join the party!"
|
24
|
-
end
|
24
|
+
end
|
25
25
|
|
26
26
|
it "should parse the enclosure" do
|
27
27
|
@item.enclosure_length.should == "8727310"
|
28
28
|
@item.enclosure_type.should == "audio/x-m4a"
|
29
29
|
@item.enclosure_url.should == "http://example.com/podcasts/everything/AllAboutEverythingEpisode3.m4a"
|
30
|
-
end
|
30
|
+
end
|
31
31
|
|
32
32
|
it "should parse the guid" do
|
33
33
|
@item.guid.should == "http://example.com/podcasts/archive/aae20050615.m4a"
|
34
|
-
end
|
34
|
+
end
|
35
35
|
|
36
36
|
it "should parse the published date" do
|
37
37
|
@item.published.should == Time.parse_safely("Wed Jun 15 19:00:00 UTC 2005")
|
38
|
-
end
|
38
|
+
end
|
39
39
|
|
40
40
|
it "should parse the duration" do
|
41
41
|
@item.itunes_duration.should == "7:04"
|
42
|
-
end
|
42
|
+
end
|
43
43
|
|
44
44
|
it "should parse the keywords" do
|
45
45
|
@item.itunes_keywords.should == "salt, pepper, shaker, exciting"
|
46
|
-
end
|
46
|
+
end
|
47
47
|
|
48
|
-
end
|
48
|
+
end
|
@@ -6,13 +6,13 @@ describe Feedzirra::Parser::ITunesRSSOwner do
|
|
6
6
|
# but this is actually how it should work. You would never just pass entry xml straight to the ITunesRssOwner
|
7
7
|
@owner = Feedzirra::Parser::ITunesRSS.parse(sample_itunes_feed).itunes_owners.first
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
it "should parse the name" do
|
11
11
|
@owner.name.should == "John Doe"
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it "should parse the email" do
|
15
15
|
@owner.email.should == "john.doe@example.com"
|
16
|
-
end
|
16
|
+
end
|
17
17
|
|
18
|
-
end
|
18
|
+
end
|
@@ -9,7 +9,7 @@ describe Feedzirra::Parser::ITunesRSS do
|
|
9
9
|
it "should return fase for an atom feed" do
|
10
10
|
Feedzirra::Parser::ITunesRSS.should_not be_able_to_parse(sample_atom_feed)
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it "should return false for an rss feedburner feed" do
|
14
14
|
Feedzirra::Parser::ITunesRSS.should_not be_able_to_parse(sample_rss_feed_burner_feed)
|
15
15
|
end
|
@@ -19,23 +19,23 @@ describe Feedzirra::Parser::ITunesRSS do
|
|
19
19
|
before(:each) do
|
20
20
|
@feed = Feedzirra::Parser::ITunesRSS.parse(sample_itunes_feed)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
it "should parse the subtitle" do
|
24
24
|
@feed.itunes_subtitle.should == "A show about everything"
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
it "should parse the author" do
|
28
28
|
@feed.itunes_author.should == "John Doe"
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "should parse an owner" do
|
32
32
|
@feed.itunes_owners.size.should == 1
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
it "should parse an image" do
|
36
36
|
@feed.itunes_image.should == "http://example.com/podcasts/everything/AllAboutEverything.jpg"
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
it "should parse categories" do
|
40
40
|
@feed.itunes_categories.size == 3
|
41
41
|
@feed.itunes_categories[0] == "Technology"
|
@@ -46,9 +46,9 @@ describe Feedzirra::Parser::ITunesRSS do
|
|
46
46
|
it "should parse the summary" do
|
47
47
|
@feed.itunes_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"
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
it "should parse entries" do
|
51
51
|
@feed.entries.size.should == 3
|
52
52
|
end
|
53
53
|
end
|
54
|
-
end
|
54
|
+
end
|
@@ -22,7 +22,7 @@ describe Feedzirra::Parser::RSSFeedBurnerEntry do
|
|
22
22
|
it "should parse the original url" do
|
23
23
|
@entry.url.should == "http://techcrunch.com/2011/11/02/angies-list-prices-ipo-at-11-to-13-per-share-valued-at-over-600m/"
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
it "should parse the author" do
|
27
27
|
@entry.author.should == "Leena Rao"
|
28
28
|
end
|
@@ -5,19 +5,19 @@ describe Feedzirra::Parser::RSSFeedBurner do
|
|
5
5
|
it "should return true for a feedburner rss feed" do
|
6
6
|
Feedzirra::Parser::RSSFeedBurner.should be_able_to_parse(sample_rss_feed_burner_feed)
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it "should return false for a regular RSS feed" do
|
10
10
|
Feedzirra::Parser::RSSFeedBurner.should_not be_able_to_parse(sample_rss_feed)
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it "should return false for a feedburner atom feed" do
|
14
14
|
Feedzirra::Parser::RSSFeedBurner.should_not be_able_to_parse(sample_feedburner_atom_feed)
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it "should return false for an rdf feed" do
|
18
18
|
Feedzirra::Parser::RSSFeedBurner.should_not be_able_to_parse(sample_rdf_feed)
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
it "should return false for a regular atom feed" do
|
22
22
|
Feedzirra::Parser::RSSFeedBurner.should_not be_able_to_parse(sample_atom_feed)
|
23
23
|
end
|
@@ -27,7 +27,7 @@ describe Feedzirra::Parser::RSSFeedBurner do
|
|
27
27
|
before(:each) do
|
28
28
|
@feed = Feedzirra::Parser::RSSFeedBurner.parse(sample_rss_feed_burner_feed)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "should parse the title" do
|
32
32
|
@feed.title.should == "TechCrunch"
|
33
33
|
end
|
@@ -39,14 +39,14 @@ describe Feedzirra::Parser::RSSFeedBurner do
|
|
39
39
|
it "should parse the url" do
|
40
40
|
@feed.url.should == "http://techcrunch.com"
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
it "should provide an accessor for the feed_url" do
|
44
44
|
@feed.respond_to?(:feed_url).should == true
|
45
45
|
@feed.respond_to?(:feed_url=).should == true
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
it "should parse entries" do
|
49
49
|
@feed.entries.size.should == 20
|
50
50
|
end
|
51
51
|
end
|
52
|
-
end
|
52
|
+
end
|
@@ -10,11 +10,11 @@ describe Feedzirra::Parser::RSS do
|
|
10
10
|
# it "should return false for an rdf feed" do
|
11
11
|
# Feedzirra::RSS.should_not be_able_to_parse(sample_rdf_feed)
|
12
12
|
# end
|
13
|
-
|
13
|
+
|
14
14
|
it "should return false for an atom feed" do
|
15
15
|
Feedzirra::Parser::RSS.should_not be_able_to_parse(sample_atom_feed)
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
it "should return false for an rss feedburner feed" do
|
19
19
|
Feedzirra::Parser::RSS.should_not be_able_to_parse(sample_rss_feed_burner_feed)
|
20
20
|
end
|
@@ -24,7 +24,7 @@ describe Feedzirra::Parser::RSS do
|
|
24
24
|
before(:each) do
|
25
25
|
@feed = Feedzirra::Parser::RSS.parse(sample_rss_feed)
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
it "should parse the title" do
|
29
29
|
@feed.title.should == "Tender Lovemaking"
|
30
30
|
end
|
@@ -36,14 +36,14 @@ describe Feedzirra::Parser::RSS do
|
|
36
36
|
it "should parse the url" do
|
37
37
|
@feed.url.should == "http://tenderlovemaking.com"
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
it "should provide an accessor for the feed_url" do
|
41
41
|
@feed.respond_to?(:feed_url).should == true
|
42
42
|
@feed.respond_to?(:feed_url=).should == true
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
it "should parse entries" do
|
46
46
|
@feed.entries.size.should == 10
|
47
47
|
end
|
48
48
|
end
|
49
|
-
end
|
49
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
begin
|
2
2
|
require 'simplecov'
|
3
|
+
require 'json'
|
3
4
|
SimpleCov.start do
|
4
5
|
add_filter "/spec/"
|
5
6
|
end
|
@@ -62,14 +63,14 @@ end
|
|
62
63
|
|
63
64
|
def sample_wfw_feed
|
64
65
|
load_sample("PaulDixExplainsNothingWFW.xml")
|
65
|
-
end
|
66
|
+
end
|
66
67
|
|
67
68
|
def sample_google_docs_list_feed
|
68
69
|
load_sample("GoogleDocsList.xml")
|
69
|
-
end
|
70
|
+
end
|
70
71
|
|
71
72
|
RSpec.configure do |config|
|
72
73
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
73
74
|
config.run_all_when_everything_filtered = true
|
74
75
|
config.filter_run :focus
|
75
|
-
end
|
76
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: feedzirra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Paul Dix
|
@@ -11,12 +10,11 @@ authors:
|
|
11
10
|
autorequire:
|
12
11
|
bindir: bin
|
13
12
|
cert_chain: []
|
14
|
-
date: 2013-
|
13
|
+
date: 2013-11-15 00:00:00.000000000 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: nokogiri
|
18
17
|
requirement: !ruby/object:Gem::Requirement
|
19
|
-
none: false
|
20
18
|
requirements:
|
21
19
|
- - ~>
|
22
20
|
- !ruby/object:Gem::Version
|
@@ -24,7 +22,6 @@ dependencies:
|
|
24
22
|
type: :runtime
|
25
23
|
prerelease: false
|
26
24
|
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
25
|
requirements:
|
29
26
|
- - ~>
|
30
27
|
- !ruby/object:Gem::Version
|
@@ -32,7 +29,6 @@ dependencies:
|
|
32
29
|
- !ruby/object:Gem::Dependency
|
33
30
|
name: sax-machine
|
34
31
|
requirement: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
32
|
requirements:
|
37
33
|
- - ~>
|
38
34
|
- !ruby/object:Gem::Version
|
@@ -40,7 +36,6 @@ dependencies:
|
|
40
36
|
type: :runtime
|
41
37
|
prerelease: false
|
42
38
|
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
39
|
requirements:
|
45
40
|
- - ~>
|
46
41
|
- !ruby/object:Gem::Version
|
@@ -48,7 +43,6 @@ dependencies:
|
|
48
43
|
- !ruby/object:Gem::Dependency
|
49
44
|
name: curb
|
50
45
|
requirement: !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
46
|
requirements:
|
53
47
|
- - ~>
|
54
48
|
- !ruby/object:Gem::Version
|
@@ -56,7 +50,6 @@ dependencies:
|
|
56
50
|
type: :runtime
|
57
51
|
prerelease: false
|
58
52
|
version_requirements: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
53
|
requirements:
|
61
54
|
- - ~>
|
62
55
|
- !ruby/object:Gem::Version
|
@@ -64,7 +57,6 @@ dependencies:
|
|
64
57
|
- !ruby/object:Gem::Dependency
|
65
58
|
name: loofah
|
66
59
|
requirement: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
60
|
requirements:
|
69
61
|
- - ~>
|
70
62
|
- !ruby/object:Gem::Version
|
@@ -72,7 +64,6 @@ dependencies:
|
|
72
64
|
type: :runtime
|
73
65
|
prerelease: false
|
74
66
|
version_requirements: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
67
|
requirements:
|
77
68
|
- - ~>
|
78
69
|
- !ruby/object:Gem::Version
|
@@ -80,7 +71,6 @@ dependencies:
|
|
80
71
|
- !ruby/object:Gem::Dependency
|
81
72
|
name: rspec
|
82
73
|
requirement: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
74
|
requirements:
|
85
75
|
- - ~>
|
86
76
|
- !ruby/object:Gem::Version
|
@@ -88,7 +78,6 @@ dependencies:
|
|
88
78
|
type: :development
|
89
79
|
prerelease: false
|
90
80
|
version_requirements: !ruby/object:Gem::Requirement
|
91
|
-
none: false
|
92
81
|
requirements:
|
93
82
|
- - ~>
|
94
83
|
- !ruby/object:Gem::Version
|
@@ -102,9 +91,9 @@ files:
|
|
102
91
|
- .gitignore
|
103
92
|
- .rspec
|
104
93
|
- .travis.yml
|
94
|
+
- CHANGELOG.md
|
105
95
|
- Gemfile
|
106
96
|
- Guardfile
|
107
|
-
- HISTORY.md
|
108
97
|
- README.md
|
109
98
|
- Rakefile
|
110
99
|
- feedzirra.gemspec
|
@@ -175,28 +164,28 @@ files:
|
|
175
164
|
- spec/sample_feeds/trouble_feeds.txt
|
176
165
|
- spec/spec_helper.rb
|
177
166
|
homepage: http://github.com/pauldix/feedzirra
|
178
|
-
licenses:
|
167
|
+
licenses:
|
168
|
+
- MIT
|
169
|
+
metadata: {}
|
179
170
|
post_install_message:
|
180
171
|
rdoc_options: []
|
181
172
|
require_paths:
|
182
173
|
- lib
|
183
174
|
required_ruby_version: !ruby/object:Gem::Requirement
|
184
|
-
none: false
|
185
175
|
requirements:
|
186
|
-
- -
|
176
|
+
- - '>='
|
187
177
|
- !ruby/object:Gem::Version
|
188
178
|
version: '0'
|
189
179
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
190
|
-
none: false
|
191
180
|
requirements:
|
192
|
-
- -
|
181
|
+
- - '>='
|
193
182
|
- !ruby/object:Gem::Version
|
194
183
|
version: '0'
|
195
184
|
requirements: []
|
196
185
|
rubyforge_project:
|
197
|
-
rubygems_version:
|
186
|
+
rubygems_version: 2.0.3
|
198
187
|
signing_key:
|
199
|
-
specification_version:
|
188
|
+
specification_version: 4
|
200
189
|
summary: A feed fetching and parsing library
|
201
190
|
test_files:
|
202
191
|
- spec/benchmarks/feed_benchmarks.rb
|