feed_parser 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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