fed 0.0.3 → 0.0.4

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.
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'fed'
16
- s.version = '0.0.3'
16
+ s.version = '0.0.4'
17
17
  s.date = '2013-04-26'
18
18
 
19
19
  ## Make sure your summary is short. The description may be as long
@@ -65,6 +65,7 @@ Gem::Specification.new do |s|
65
65
  lib/fed/feed/rss2.rb
66
66
  lib/fed/http.rb
67
67
  lib/fed/http/curb.rb
68
+ lib/fed/http/errors.rb
68
69
  ]
69
70
  # = MANIFEST =
70
71
 
data/lib/fed.rb CHANGED
@@ -5,6 +5,7 @@ require 'nokogiri'
5
5
  require 'time'
6
6
 
7
7
  require 'fed/http'
8
+ require 'fed/http/errors'
8
9
  require 'fed/http/curb'
9
10
  require 'fed/feed/base'
10
11
  require 'fed/feed/atom'
@@ -13,7 +14,7 @@ require 'fed/feed/rss2'
13
14
  require 'fed/feed/entry'
14
15
 
15
16
  module Fed
16
- VERSION = '0.0.3'
17
+ VERSION = '0.0.4'
17
18
 
18
19
  class <<self
19
20
 
@@ -22,7 +23,12 @@ module Fed
22
23
  end
23
24
 
24
25
  def fetch(feed_url)
25
- Fed::Http.client.get(feed_url)
26
+ response = Fed::Http.client.get(feed_url)
27
+
28
+ raise Fed::Http::Errors::NotFound if response == 404
29
+ raise Fed::Http::Errors::ServerError unless response.is_a?(String)
30
+
31
+ response
26
32
  end
27
33
 
28
34
  def parse(xml)
@@ -33,14 +39,14 @@ module Fed
33
39
  def parser_for(doc)
34
40
  if is_atom?(doc)
35
41
  Fed::Feed::Atom.new(doc)
36
- elsif is_rss1?(doc)
37
- Fed::Feed::Rss1.new(doc)
38
42
  elsif is_rss2?(doc)
39
43
  Fed::Feed::Rss2.new(doc)
44
+ elsif is_rss1?(doc)
45
+ Fed::Feed::Rss1.new(doc)
40
46
  elsif (new_url = find_link_in_html(doc))
41
47
  parser_for(fetch(new_url))
42
48
  else
43
- raise "Bad feed."
49
+ raise Fed::Http::Errors::BadFeed
44
50
  end
45
51
  end
46
52
 
@@ -49,7 +55,7 @@ module Fed
49
55
  end
50
56
 
51
57
  def is_rss1?(document)
52
- document.xpath('/rdf:RDF').any?
58
+ document.xpath('/rdf:RDF').any? rescue false
53
59
  end
54
60
 
55
61
  def is_rss2?(document)
@@ -3,10 +3,12 @@ module Fed
3
3
  module Http
4
4
  class Curb
5
5
  def self.get(url)
6
- Curl.get(url) do|http|
6
+ c = Curl.get(url) do|http|
7
7
  http.headers['User-Agent'] = Fed::Http.options[:user_agent]
8
8
  http.follow_location = true
9
- end.body_str
9
+ end
10
+
11
+ c.status == "200 OK" ? c.body_str : c.status.to_i
10
12
  end
11
13
  end
12
14
  end
@@ -0,0 +1,11 @@
1
+ module Fed
2
+ module Http
3
+ module Errors
4
+ class NotFound < StandardError; end
5
+
6
+ class ServerError < StandardError; end
7
+
8
+ class BadFeed < StandardError; end
9
+ end
10
+ end
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -96,6 +96,7 @@ files:
96
96
  - lib/fed/feed/rss2.rb
97
97
  - lib/fed/http.rb
98
98
  - lib/fed/http/curb.rb
99
+ - lib/fed/http/errors.rb
99
100
  homepage: http://github.com/jm/fed
100
101
  licenses: []
101
102
  post_install_message: