feed_searcher 0.0.1 → 0.0.2

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.
@@ -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