feedutils 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/feedutils/builder/atom.rb +35 -9
- data/lib/feedutils/version.rb +1 -1
- data/test/test_atom.rb +10 -0
- metadata +7 -7
@@ -22,9 +22,28 @@ class AtomFeedBuilder
|
|
22
22
|
def build_feed( atom_feed )
|
23
23
|
feed = Feed.new
|
24
24
|
feed.object = atom_feed
|
25
|
-
feed.title = atom_feed.title.content
|
26
25
|
feed.format = 'atom'
|
27
26
|
|
27
|
+
feed.title = atom_feed.title.content
|
28
|
+
|
29
|
+
if atom_feed.updated
|
30
|
+
# NOTE: empty updated.content e.g. used by google groups feed
|
31
|
+
# will return nil : NilClass
|
32
|
+
feed.updated = atom_feed.updated.content # .utc.strftime( "%Y-%m-%d %H:%M" )
|
33
|
+
logger.debug " atom | updated.content >#{atom_feed.updated.content}< : #{atom_feed.updated.content.class.name}"
|
34
|
+
end
|
35
|
+
|
36
|
+
if atom_feed.generator
|
37
|
+
feed.generator = atom_feed.generator.content
|
38
|
+
logger.debug " atom | generator.content >#{atom_feed.generator.content}< : #{atom_feed.generator.content.class.name}"
|
39
|
+
end
|
40
|
+
|
41
|
+
if atom_feed.subtitle
|
42
|
+
feed.title2 = atom_feed.subtitle.content
|
43
|
+
logger.debug " atom | subtitle.content >#{atom_feed.subtitle.content}< : #{atom_feed.subtitle.content.class.name}"
|
44
|
+
end
|
45
|
+
|
46
|
+
|
28
47
|
items = []
|
29
48
|
atom_feed.items.each do |atom_item|
|
30
49
|
items << build_feed_item( atom_item )
|
@@ -45,15 +64,18 @@ class AtomFeedBuilder
|
|
45
64
|
logger.debug " atom | item.link.href: >#{atom_item.link.href}< : #{atom_item.link.href.class.name}"
|
46
65
|
|
47
66
|
|
48
|
-
|
49
|
-
#
|
50
|
-
item.updated = atom_item.updated.content # .utc.strftime( "%Y-%m-%d %H:%M" )
|
67
|
+
if atom_item.updated
|
68
|
+
item.updated = atom_item.updated.content # .utc.strftime( "%Y-%m-%d %H:%M" )
|
51
69
|
|
70
|
+
## change time to utc if present? why? why not?
|
52
71
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
72
|
+
logger.debug " atom | item.updated.content >#{atom_item.updated.content}< : #{atom_item.updated.content.class.name}"
|
73
|
+
end
|
74
|
+
|
75
|
+
if atom_item.published
|
76
|
+
item.published = atom_item.published.content # .utc.strftime( "%Y-%m-%d %H:%M" )
|
77
|
+
logger.debug " atom | item.published.content >#{atom_item.published.content}< : #{atom_item.published.content.class.name}"
|
78
|
+
end
|
57
79
|
|
58
80
|
# - todo/check: does it exist in atom format?
|
59
81
|
# item.published = item.updated # fix: check if publshed set
|
@@ -69,11 +91,15 @@ class AtomFeedBuilder
|
|
69
91
|
## fix/todo:
|
70
92
|
# also save/include full content in content
|
71
93
|
|
94
|
+
if atom_item.content
|
95
|
+
item.content = atom_item.content.content
|
96
|
+
end
|
97
|
+
|
72
98
|
if atom_item.summary
|
73
99
|
item.summary = atom_item.summary.content
|
74
100
|
else
|
75
101
|
if atom_item.content
|
76
|
-
text = atom_item.content.content
|
102
|
+
text = atom_item.content.content
|
77
103
|
## strip all html tags
|
78
104
|
text = text.gsub( /<[^>]+>/, '' )
|
79
105
|
text = text[ 0..400 ] # get first 400 chars
|
data/lib/feedutils/version.rb
CHANGED
data/test/test_atom.rb
CHANGED
@@ -13,4 +13,14 @@ class TestAtom < MiniTest::Unit::TestCase
|
|
13
13
|
assert( feed.format == 'atom' )
|
14
14
|
end
|
15
15
|
|
16
|
+
def test_railstutorial
|
17
|
+
feed = parse_feed( 'http://feeds.feedburner.com/railstutorial?format=xml' )
|
18
|
+
assert( feed.format == 'atom' )
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_googlegroup
|
22
|
+
feed = parse_feed( 'https://groups.google.com/forum/feed/beerdb/topics/atom.xml?num=15' )
|
23
|
+
assert( feed.format == 'atom' )
|
24
|
+
end
|
25
|
+
|
16
26
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: feedutils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-09-21 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: logutils
|
16
|
-
requirement: &
|
16
|
+
requirement: &74860390 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0.5'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *74860390
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rdoc
|
27
|
-
requirement: &
|
27
|
+
requirement: &74859360 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '3.10'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *74859360
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: hoe
|
38
|
-
requirement: &
|
38
|
+
requirement: &74858200 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '3.3'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *74858200
|
47
47
|
description: feedutils - web feed parser and normalizer (RSS 2.0, Atom, etc.)
|
48
48
|
email: webslideshow@googlegroups.com
|
49
49
|
executables: []
|