feed_searcher 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency "mechanize", ">= 1.0.0"
22
+ spec.add_dependency "nokogiri"
22
23
  spec.add_development_dependency "bundler", "~> 1.3"
23
24
  spec.add_development_dependency "rake"
24
25
  spec.add_development_dependency "rspec", ">= 2.13.0"
data/lib/feed_searcher.rb CHANGED
@@ -2,11 +2,9 @@ require "feed_searcher/version"
2
2
  require "feed_searcher/fetcher"
3
3
  require "feed_searcher/page"
4
4
  require "mechanize"
5
+ require "nokogiri"
5
6
 
6
7
  class FeedSearcher
7
- Error = Class.new(StandardError)
8
- InvalidResponseError = Class.new(Error)
9
-
10
8
  def self.search(*args)
11
9
  new(*args).search
12
10
  end
@@ -19,11 +17,7 @@ class FeedSearcher
19
17
  end
20
18
 
21
19
  def search
22
- if page.html?
23
- page.feed_urls
24
- else
25
- raise InvalidResponseError
26
- end
20
+ fetch.feed_urls
27
21
  end
28
22
 
29
23
  private
@@ -31,8 +25,4 @@ class FeedSearcher
31
25
  def fetch
32
26
  Fetcher.fetch(url, options)
33
27
  end
34
-
35
- def page
36
- @page ||= fetch
37
- end
38
28
  end
@@ -6,10 +6,6 @@ class FeedSearcher
6
6
  @page = page
7
7
  end
8
8
 
9
- def html?
10
- page.is_a?(Mechanize::Page)
11
- end
12
-
13
9
  def feed_urls
14
10
  feed_attributes.map {|attribute| attribute["href"] }
15
11
  end
@@ -21,7 +17,7 @@ class FeedSearcher
21
17
  end
22
18
 
23
19
  def root
24
- page.root
20
+ Nokogiri.HTML(page.body)
25
21
  end
26
22
  end
27
23
  end
@@ -1,3 +1,3 @@
1
1
  class FeedSearcher
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -2,47 +2,29 @@ require "spec_helper"
2
2
 
3
3
  describe FeedSearcher do
4
4
  describe ".search" do
5
- let(:body) do
6
- <<-EOF
7
- <!DOCTYPE HTML>
8
- <html>
9
- <head>
10
- <meta charset="UTF-8">
11
- <link href="http://example.com/rss.atom" rel="alternate" title="example" type="application/atom+xml" />
12
- <link href="http://example.com/rss.xml" rel="alternate" title="example" type="application/atom+xml" />
13
- </head>
14
- <body>
15
- example
16
- </body>
17
- </html>
18
- EOF
5
+ before do
6
+ stub_request(:get, "http://example.com/").to_return(
7
+ :body => <<-EOF
8
+ <!DOCTYPE HTML>
9
+ <html>
10
+ <head>
11
+ <meta charset="UTF-8">
12
+ <link href="http://example.com/rss.atom" rel="alternate" title="example" type="application/atom+xml" />
13
+ <link href="http://example.com/rss.xml" rel="alternate" title="example" type="application/atom+xml" />
14
+ </head>
15
+ <body>
16
+ example
17
+ </body>
18
+ </html>
19
+ EOF
20
+ )
19
21
  end
20
22
 
21
- context "when response type is html" do
22
- before do
23
- stub_request(:get, "http://example.com/").to_return(
24
- :headers => { "Content-Type" => "text/html" },
25
- :body => body
26
- )
27
- end
28
-
29
- it "returns feed URLs from given URL" do
30
- FeedSearcher.search("http://example.com/").should == %w[
31
- http://example.com/rss.atom
32
- http://example.com/rss.xml
33
- ]
34
- end
35
- end
36
-
37
- context "when response type is not html" do
38
- before do
39
- stub_request(:get, "http://example.com/").to_return(:body => body)
40
- end
41
-
42
- it "raises FeedSearher::InvalidResponseError" do
43
- expect { FeedSearcher.search("http://example.com/") }.
44
- to raise_error(FeedSearcher::InvalidResponseError)
45
- end
23
+ it "returns feed URLs from given URL" do
24
+ FeedSearcher.search("http://example.com/").should == %w[
25
+ http://example.com/rss.atom
26
+ http://example.com/rss.xml
27
+ ]
46
28
  end
47
29
  end
48
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feed_searcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: 1.0.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: nokogiri
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: bundler
32
48
  requirement: !ruby/object:Gem::Requirement