feed_parser 0.2.0 → 0.2.1

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.
@@ -4,7 +4,12 @@ class FeedParser
4
4
 
5
5
  def initialize(feed_url)
6
6
  parsed_url = parse_url(feed_url)
7
- @feed = Nokogiri::XML(open(parsed_url[:url], :http_basic_authentication => parsed_url[:basic_auth]))
7
+ raw_feed = if parsed_url[:basic_auth]
8
+ open(parsed_url[:url], :http_basic_authentication => parsed_url[:basic_auth])
9
+ else
10
+ open(parsed_url[:url])
11
+ end
12
+ @feed = Nokogiri::XML(raw_feed)
8
13
  @feed.remove_namespaces!
9
14
  @type = (@feed.search('rss')[0] && :rss || :atom)
10
15
  self
data/lib/feed_parser.rb CHANGED
@@ -3,7 +3,7 @@ require 'nokogiri'
3
3
 
4
4
  class FeedParser
5
5
 
6
- VERSION = "0.2.0"
6
+ VERSION = "0.2.1"
7
7
 
8
8
  def initialize(opts)
9
9
  @url = opts[:url]
@@ -8,34 +8,23 @@ end
8
8
 
9
9
  describe FeedParser do
10
10
  describe FeedParser::Feed, "#new" do
11
- it "should be able to open a feed url" do
12
- parser = FeedParser.new(:url => "http://blog.example.com/feed/")
13
- lambda {
14
- parser.parse
15
- }.should_not raise_error(ArgumentError)
16
- lambda {
17
- parser.parse
18
- }.should raise_error(SocketError, /getaddrinfo: nodename nor servname provided, or not known/)
11
+ def feed_xml
12
+ File.read(File.join(File.dirname(__FILE__), 'fixtures', 'nodeta.rss.xml'))
19
13
  end
20
14
 
21
- it "should be able to open feed urls with basic auth embedded to the url" do
22
- parser = FeedParser.new(:url => "http://user:pass@blog.example.com/feed/")
23
- lambda {
24
- parser.parse
25
- }.should_not raise_error(ArgumentError, /userinfo not supported/)
26
- lambda {
27
- parser.parse
28
- }.should raise_error(SocketError, /getaddrinfo: nodename nor servname provided, or not known/)
15
+ it "should fetch a feed by url" do
16
+ FeedParser::Feed.any_instance.should_receive(:open).with("http://blog.example.com/feed/").and_return(feed_xml)
17
+ FeedParser::Feed.new("http://blog.example.com/feed/")
29
18
  end
30
19
 
31
- it "should be able to open feed urls with only a user name embedded to the url" do
32
- parser = FeedParser.new(:url => "http://user@blog.example.com/feed/")
33
- lambda {
34
- parser.parse
35
- }.should_not raise_error(ArgumentError, /userinfo not supported/)
36
- lambda {
37
- parser.parse
38
- }.should raise_error(SocketError, /getaddrinfo: nodename nor servname provided, or not known/)
20
+ it "should fetch a feed using basic auth if auth embedded to the url" do
21
+ FeedParser::Feed.any_instance.should_receive(:open).with("http://blog.example.com/feed/", :http_basic_authentication => ["user", "pass"]).and_return(feed_xml)
22
+ FeedParser::Feed.new("http://user:pass@blog.example.com/feed/")
23
+ end
24
+
25
+ it "should fetch a feed with only a user name embedded to the url" do
26
+ FeedParser::Feed.any_instance.should_receive(:open).with("http://blog.example.com/feed/", :http_basic_authentication => ["user"]).and_return(feed_xml)
27
+ FeedParser::Feed.new("http://user@blog.example.com/feed/")
39
28
  end
40
29
  end
41
30
 
metadata CHANGED
@@ -1,46 +1,62 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: feed_parser
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 1
10
+ version: 0.2.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Arttu Tervo
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-11-28 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: nokogiri
16
- requirement: &2156476000 !ruby/object:Gem::Requirement
17
+
18
+ date: 2011-12-07 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
17
23
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 3
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ name: nokogiri
23
32
  prerelease: false
24
- version_requirements: *2156476000
25
- - !ruby/object:Gem::Dependency
26
- name: rspec-rails
27
- requirement: &2156475080 !ruby/object:Gem::Requirement
33
+ type: :runtime
34
+ requirement: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ version_requirements: &id002 !ruby/object:Gem::Requirement
28
37
  none: false
29
- requirements:
38
+ requirements:
30
39
  - - ~>
31
- - !ruby/object:Gem::Version
32
- version: '2.6'
33
- type: :development
40
+ - !ruby/object:Gem::Version
41
+ hash: 15
42
+ segments:
43
+ - 2
44
+ - 6
45
+ version: "2.6"
46
+ name: rspec-rails
34
47
  prerelease: false
35
- version_requirements: *2156475080
48
+ type: :development
49
+ requirement: *id002
36
50
  description: Rss and Atom feed parser with sanitizer support built on top of Nokogiri.
37
- email:
51
+ email:
38
52
  - arttu.tervo@gmail.com
39
53
  executables: []
54
+
40
55
  extensions: []
41
- extra_rdoc_files:
56
+
57
+ extra_rdoc_files:
42
58
  - README.md
43
- files:
59
+ files:
44
60
  - .gitignore
45
61
  - Gemfile
46
62
  - LICENSE
@@ -57,31 +73,41 @@ files:
57
73
  - spec/fixtures/nodeta.rss.xml
58
74
  - spec/fixtures/sanitize.me.rss.xml
59
75
  - spec/fixtures/smashingmagazine.atom.xml
76
+ has_rdoc: true
60
77
  homepage: http://github.com/arttu/feed_parser
61
78
  licenses: []
79
+
62
80
  post_install_message:
63
81
  rdoc_options: []
64
- require_paths:
82
+
83
+ require_paths:
65
84
  - lib
66
- required_ruby_version: !ruby/object:Gem::Requirement
85
+ required_ruby_version: !ruby/object:Gem::Requirement
67
86
  none: false
68
- requirements:
69
- - - ! '>='
70
- - !ruby/object:Gem::Version
71
- version: '0'
72
- required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ hash: 3
91
+ segments:
92
+ - 0
93
+ version: "0"
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
95
  none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
102
+ version: "0"
78
103
  requirements: []
104
+
79
105
  rubyforge_project:
80
- rubygems_version: 1.8.11
106
+ rubygems_version: 1.5.2
81
107
  signing_key:
82
108
  specification_version: 3
83
109
  summary: Rss and Atom feed parser
84
- test_files:
110
+ test_files:
85
111
  - spec/feed_parser_spec.rb
86
112
  - spec/fixtures/TechCrunch.xml
87
113
  - spec/fixtures/gcal.atom.xml