feedparser 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gemtest +0 -0
- data/HISTORY.md +3 -0
- data/Manifest.txt +20 -0
- data/README.md +95 -0
- data/Rakefile +32 -0
- data/lib/feedparser.rb +27 -0
- data/lib/feedparser/builder/atom.rb +141 -0
- data/lib/feedparser/builder/rss.rb +129 -0
- data/lib/feedparser/feed.rb +40 -0
- data/lib/feedparser/helper/atom_v03.rb +66 -0
- data/lib/feedparser/item.rb +34 -0
- data/lib/feedparser/parser.rb +53 -0
- data/lib/feedparser/version.rb +24 -0
- data/test/feeds/googlegroups.atom +18 -0
- data/test/feeds/googlegroups2.atom +20 -0
- data/test/feeds/quirksblog.atom.v03 +1098 -0
- data/test/helper.rb +35 -0
- data/test/test_atom.rb +45 -0
- data/test/test_atom_from_file.rb +28 -0
- data/test/test_atom_v03.rb +41 -0
- data/test/test_rss.rb +38 -0
- metadata +115 -0
data/test/helper.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
## $:.unshift(File.dirname(__FILE__))
|
2
|
+
|
3
|
+
|
4
|
+
## minitest setup
|
5
|
+
|
6
|
+
require 'minitest/autorun'
|
7
|
+
|
8
|
+
require 'logutils'
|
9
|
+
require 'fetcher'
|
10
|
+
|
11
|
+
## our own code
|
12
|
+
|
13
|
+
require 'feedutils'
|
14
|
+
|
15
|
+
|
16
|
+
LogUtils::Logger.root.level = :debug
|
17
|
+
|
18
|
+
def parse_feed( url )
|
19
|
+
xml = Fetcher.read( url )
|
20
|
+
|
21
|
+
FeedUtils::Parser.parse( xml )
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
def read_feed_from_file( name )
|
27
|
+
File.read( "#{FeedUtils.root}/test/feeds/#{name}")
|
28
|
+
end
|
29
|
+
|
30
|
+
def parse_feed_from_file( name )
|
31
|
+
xml = read_feed_from_file( name )
|
32
|
+
|
33
|
+
FeedUtils::Parser.parse( xml )
|
34
|
+
end
|
35
|
+
|
data/test/test_atom.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
###
|
2
|
+
# to run use
|
3
|
+
# ruby -I ./lib -I ./test test/test_atom.rb
|
4
|
+
# or better
|
5
|
+
# rake test
|
6
|
+
|
7
|
+
require 'helper'
|
8
|
+
|
9
|
+
class TestAtom < MiniTest::Test
|
10
|
+
|
11
|
+
def test_rubyonrails
|
12
|
+
feed = parse_feed( 'http://weblog.rubyonrails.org/feed/atom.xml' )
|
13
|
+
|
14
|
+
assert_equal 'atom', feed.format
|
15
|
+
assert_equal 'http://weblog.rubyonrails.org/', feed.url
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
def test_railstutorial
|
20
|
+
feed = parse_feed( 'http://feeds.feedburner.com/railstutorial?format=xml' )
|
21
|
+
|
22
|
+
assert_equal 'atom', feed.format
|
23
|
+
assert_equal 'http://news.railstutorial.org/', feed.url
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
def test_googlegroup
|
28
|
+
feed = parse_feed( 'https://groups.google.com/forum/feed/beerdb/topics/atom.xml?num=15' )
|
29
|
+
|
30
|
+
assert_equal 'atom', feed.format
|
31
|
+
assert_equal 'https://groups.google.com/d/forum/beerdb', feed.url
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
def test_headius
|
36
|
+
feed = parse_feed( 'http://blog.headius.com/feeds/posts/default' )
|
37
|
+
|
38
|
+
assert_equal 'atom', feed.format
|
39
|
+
assert_equal 'Blogger', feed.generator
|
40
|
+
assert_equal 'Headius', feed.title
|
41
|
+
assert_equal 'Helping the JVM Into the 21st Century', feed.title2 # aka subtitle in atom
|
42
|
+
assert_equal 'http://blog.headius.com/', feed.url
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
###
|
2
|
+
# to run use
|
3
|
+
# ruby -I ./lib -I ./test test/test_atom_from_file.rb
|
4
|
+
# or better
|
5
|
+
# rake test
|
6
|
+
|
7
|
+
require 'helper'
|
8
|
+
|
9
|
+
|
10
|
+
class TestAtomFromFile < MiniTest::Test
|
11
|
+
|
12
|
+
def test_googlegroup
|
13
|
+
feed = parse_feed_from_file( 'googlegroups.atom' )
|
14
|
+
|
15
|
+
assert_equal 'atom', feed.format
|
16
|
+
assert_equal 'Google Groups', feed.generator
|
17
|
+
assert_equal 'https://groups.google.com/d/forum/beerdb', feed.url
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_googlegroup2
|
21
|
+
feed = parse_feed_from_file( 'googlegroups2.atom' )
|
22
|
+
|
23
|
+
assert_equal 'atom', feed.format
|
24
|
+
assert_equal 'Google Groups (w/ leading n trailing newlines stripped)', feed.generator
|
25
|
+
assert_equal 'https://groups.google.com/d/forum/beerdb', feed.url
|
26
|
+
end
|
27
|
+
|
28
|
+
end # class TestAtomFromFile
|
@@ -0,0 +1,41 @@
|
|
1
|
+
###
|
2
|
+
# to run use
|
3
|
+
# ruby -I ./lib -I ./test test/test_atom_v03.rb
|
4
|
+
# or better
|
5
|
+
# rake test
|
6
|
+
|
7
|
+
require 'helper'
|
8
|
+
|
9
|
+
|
10
|
+
class TestAtomV03 < MiniTest::Test
|
11
|
+
|
12
|
+
def test_match
|
13
|
+
xmlv1 = read_feed_from_file( 'googlegroups.atom' )
|
14
|
+
xmlv03 = read_feed_from_file( 'quirksblog.atom.v03' )
|
15
|
+
|
16
|
+
atomv03helper = FeedUtils::AtomV03Helper.new
|
17
|
+
|
18
|
+
assert_equal false, atomv03helper.match?( xmlv1 )
|
19
|
+
assert_equal true, atomv03helper.match?( xmlv03 )
|
20
|
+
|
21
|
+
xmlv03up = atomv03helper.convert( xmlv03 )
|
22
|
+
assert_equal false, atomv03helper.match?( xmlv03up )
|
23
|
+
|
24
|
+
pp xmlv03up[0..1000]
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_parse
|
28
|
+
feed = parse_feed_from_file( 'quirksblog.atom.v03' )
|
29
|
+
|
30
|
+
pp feed.updated
|
31
|
+
assert_equal '2014-12-31T15:33:00+00:00', feed.updated.to_s
|
32
|
+
|
33
|
+
pp feed.items[0].updated
|
34
|
+
assert_equal '2014-12-31T15:33:00+00:00', feed.items[0].updated.to_s
|
35
|
+
|
36
|
+
pp feed.items[1].updated
|
37
|
+
assert_equal '2014-11-26T12:11:25+00:00', feed.items[1].updated.to_s
|
38
|
+
end
|
39
|
+
|
40
|
+
end # class TestAtomV03
|
41
|
+
|
data/test/test_rss.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
###
|
2
|
+
# to run use
|
3
|
+
# ruby -I ./lib -I ./test test/test_rss.rb
|
4
|
+
# or better
|
5
|
+
# rake test
|
6
|
+
|
7
|
+
require 'helper'
|
8
|
+
|
9
|
+
class TestRss < MiniTest::Test
|
10
|
+
|
11
|
+
|
12
|
+
def test_rubyflow
|
13
|
+
feed = parse_feed( 'http://feeds.feedburner.com/Rubyflow?format=xml' )
|
14
|
+
|
15
|
+
assert_equal 'rss 2.0', feed.format
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_sitepointruby
|
19
|
+
feed = parse_feed( 'http://www.sitepoint.com/ruby/feed/' )
|
20
|
+
|
21
|
+
assert_equal 'rss 2.0', feed.format
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_lambdatheultimate
|
25
|
+
## check - has no item.guid - will use item.link for guid
|
26
|
+
feed = parse_feed( 'http://lambda-the-ultimate.org/rss.xml' )
|
27
|
+
|
28
|
+
assert_equal 'rss 2.0', feed.format
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_rubymine
|
32
|
+
# includes item/content:encoded
|
33
|
+
feed = parse_feed( 'http://feeds.feedburner.com/jetbrains_rubymine?format=xml' )
|
34
|
+
|
35
|
+
assert_equal 'rss 2.0', feed.format
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: feedparser
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gerald Bauer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-01-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: logutils
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.6.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.6.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rdoc
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: hoe
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.13'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.13'
|
55
|
+
description: feedparser - web feed parser and normalizer (RSS 2.0, Atom, etc.)
|
56
|
+
email: feedreader@googlegroups.com
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files:
|
60
|
+
- HISTORY.md
|
61
|
+
- Manifest.txt
|
62
|
+
- README.md
|
63
|
+
files:
|
64
|
+
- ".gemtest"
|
65
|
+
- HISTORY.md
|
66
|
+
- Manifest.txt
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
69
|
+
- lib/feedparser.rb
|
70
|
+
- lib/feedparser/builder/atom.rb
|
71
|
+
- lib/feedparser/builder/rss.rb
|
72
|
+
- lib/feedparser/feed.rb
|
73
|
+
- lib/feedparser/helper/atom_v03.rb
|
74
|
+
- lib/feedparser/item.rb
|
75
|
+
- lib/feedparser/parser.rb
|
76
|
+
- lib/feedparser/version.rb
|
77
|
+
- test/feeds/googlegroups.atom
|
78
|
+
- test/feeds/googlegroups2.atom
|
79
|
+
- test/feeds/quirksblog.atom.v03
|
80
|
+
- test/helper.rb
|
81
|
+
- test/test_atom.rb
|
82
|
+
- test/test_atom_from_file.rb
|
83
|
+
- test/test_atom_v03.rb
|
84
|
+
- test/test_rss.rb
|
85
|
+
homepage: https://github.com/feedreader/feed.parser
|
86
|
+
licenses:
|
87
|
+
- Public Domain
|
88
|
+
metadata: {}
|
89
|
+
post_install_message:
|
90
|
+
rdoc_options:
|
91
|
+
- "--main"
|
92
|
+
- README.md
|
93
|
+
require_paths:
|
94
|
+
- lib
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 1.9.2
|
100
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
requirements: []
|
106
|
+
rubyforge_project:
|
107
|
+
rubygems_version: 2.4.2
|
108
|
+
signing_key:
|
109
|
+
specification_version: 4
|
110
|
+
summary: feedparser - web feed parser and normalizer (RSS 2.0, Atom, etc.)
|
111
|
+
test_files:
|
112
|
+
- test/test_atom_v03.rb
|
113
|
+
- test/test_atom.rb
|
114
|
+
- test/test_atom_from_file.rb
|
115
|
+
- test/test_rss.rb
|