klout-rb 1.0.0 → 1.0.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.
@@ -8,6 +8,7 @@ require 'singleton'
8
8
  module Klout
9
9
  class Error < StandardError; end
10
10
  class Error::Forbidden < Klout::Error; end
11
+ class Error::GatewayTimeout < Klout::Error; end
11
12
  class Error::InternalServerError < Klout::Error; end
12
13
  class Error::ServiceUnavailable < Klout::Error; end
13
14
 
@@ -106,18 +107,25 @@ module Klout
106
107
  # Raises Klout::Error::Forbidden if Klout api key is not valid.
107
108
  # Raises Klout::Error::InternalServerError if there is a server error in Klout.
108
109
  # Raises Klout::Error::ServiceUnavailable if Klout endpoint is unavailable.
110
+ # Raises Klout::Error::GatewayTimeout if Klout endpoint respond with timeout.
111
+ # Raises Klout::Error for a non 200 response code.
109
112
  def parse_response(response)
110
113
  case response.code.to_i
114
+ when 200
115
+ body = ::MultiJson.decode(response.body)
116
+ raise Klout::Error.new(body['body']['error']) if body.has_key?('body') && body['body'].has_key?('error')
117
+ Hashie::Mash.new(body)
111
118
  when 403
112
119
  raise Klout::Error::Forbidden.new
113
120
  when 500
114
121
  raise Klout::Error::InternalServerError.new
115
122
  when 503
116
123
  raise Klout::Error::ServiceUnavailable.new
124
+ when 504
125
+ raise Klout::Error::GatewayTimeout.new
126
+ else
127
+ raise Klout::Error.new("#{response.code} - #{response.headers['X-Mashery-Error-Code']}")
117
128
  end
118
- body = ::MultiJson.decode(response.body)
119
- raise Klout::Error.new(body['body']['error']) if body.has_key?('body') && body['body'].has_key?('error')
120
- Hashie::Mash.new(body)
121
129
  end
122
130
 
123
131
  # Internal: Builds the request url.
@@ -1,4 +1,4 @@
1
1
  module Klout
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
4
4
 
@@ -49,6 +49,28 @@ describe Klout::Client do
49
49
  expect { Klout::Client.score("damiancaruso") }.to raise_error(Klout::Error::ServiceUnavailable)
50
50
  end
51
51
  end
52
+
53
+ context "gateway timeout" do
54
+ before do
55
+ stub_get("/1/klout.json").with(:query => @query.merge({:users => "damiancaruso"})).
56
+ to_return(:status => 504)
57
+ end
58
+
59
+ it "should raise an error if a gateway timeout is received" do
60
+ expect { Klout::Client.score("damiancaruso") }.to raise_error(Klout::Error::GatewayTimeout)
61
+ end
62
+ end
63
+
64
+ context "non sucessful response" do
65
+ before do
66
+ stub_get("/1/klout.json").with(:query => @query.merge({:users => "damiancaruso"})).
67
+ to_return(:status => 502)
68
+ end
69
+
70
+ it "should raise an error for non 200 response codes" do
71
+ expect { Klout::Client.score("damiancaruso") }.to raise_error(Klout::Error)
72
+ end
73
+ end
52
74
  end
53
75
 
54
76
  describe ".score" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: klout-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hashie
16
- requirement: &73583900 !ruby/object:Gem::Requirement
16
+ requirement: &74836180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *73583900
24
+ version_requirements: *74836180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: httpi
27
- requirement: &73583560 !ruby/object:Gem::Requirement
27
+ requirement: &74835750 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.9.5
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *73583560
35
+ version_requirements: *74835750
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: multi_json
38
- requirement: &73583260 !ruby/object:Gem::Requirement
38
+ requirement: &74835350 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.0.3
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *73583260
46
+ version_requirements: *74835350
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &73582970 !ruby/object:Gem::Requirement
49
+ requirement: &74835100 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.9.2.2
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *73582970
57
+ version_requirements: *74835100
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &73582710 !ruby/object:Gem::Requirement
60
+ requirement: &74834830 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 2.7.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *73582710
68
+ version_requirements: *74834830
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: webmock
71
- requirement: &73582450 !ruby/object:Gem::Requirement
71
+ requirement: &74834440 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: 1.7.7
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *73582450
79
+ version_requirements: *74834440
80
80
  description: Ruby wrapper for the Klout REST API
81
81
  email:
82
82
  - damian.caruso@gmail.com
@@ -118,7 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
118
118
  version: '0'
119
119
  segments:
120
120
  - 0
121
- hash: 947582353
121
+ hash: 714302189
122
122
  required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  none: false
124
124
  requirements:
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  version: '0'
128
128
  segments:
129
129
  - 0
130
- hash: 947582353
130
+ hash: 714302189
131
131
  requirements: []
132
132
  rubyforge_project: klout-rb
133
133
  rubygems_version: 1.8.10