badgeville 0.0.4 → 0.0.5

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.
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ * 0.0.5
2
+
3
+ * set default timeout to 3s
4
+ * add timeout paramater
5
+
1
6
  * 0.0.4
2
7
 
3
8
  * count activities
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
data/badgeville.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{badgeville}
8
- s.version = "0.0.4"
8
+ s.version = "0.0.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gilad Buchman"]
12
- s.date = %q{2011-09-18}
12
+ s.date = %q{2011-10-07}
13
13
  s.description = %q{Client for Badgeville's Core API v2. http://rules.badgeville.com}
14
14
  s.extra_rdoc_files = [
15
15
  "README.md"
data/lib/badgeville.rb CHANGED
@@ -5,7 +5,7 @@ require 'badgeville/activity'
5
5
  require 'badgeville/reward'
6
6
 
7
7
  module Badgeville
8
- TIMEOUT = 1000
8
+ TIMEOUT_SECS = 3
9
9
  HOST = "sandbox.v2.badgeville.com"
10
10
  PROTOCOL = "http"
11
11
 
@@ -14,18 +14,24 @@ module Badgeville
14
14
 
15
15
  def initialize (err_code=nil, error_msg="")
16
16
  super error_msg
17
+ @message = error_msg
17
18
  @code = err_code
18
19
  end
20
+
21
+ def to_s
22
+ "ERROR #{@code} : #{@message}"
23
+ end
19
24
  end
20
25
 
21
26
  class Client
22
- attr_accessor :user, :site, :player_id, :site_id
27
+ attr_accessor :user, :site, :player_id, :site_id, :timeout
23
28
 
24
29
  def initialize (email, opts={})
25
30
  # Required Parameters
26
31
  @site = opts['site']
27
32
  @private_key = opts['private_key']
28
33
  @public_key = opts['public_key']
34
+ @timeout = opts['timeout'] || TIMEOUT_SECS
29
35
  @host = opts['host'] || HOST
30
36
  @protocol = opts['protocol'] || PROTOCOL
31
37
  @user = email
@@ -91,9 +97,10 @@ module Badgeville
91
97
  end
92
98
 
93
99
  def set_player
94
- end_point = "#{@site}/players/#{@user}.json"
100
+ end_point = "#{@site}/players/info.json"
95
101
  begin
96
- response = session[end_point].get
102
+ response = session[end_point].get(:params =>
103
+ {:user => @user, :site => @site})
97
104
  data = response.body
98
105
  json = JSON.parse(data)
99
106
  json = json["data"]
@@ -109,6 +116,10 @@ module Badgeville
109
116
  end
110
117
  end
111
118
 
119
+ def timeout
120
+ @timeout
121
+ end
122
+
112
123
  def site_id
113
124
  unless @site_id
114
125
  set_player
@@ -132,7 +143,7 @@ module Badgeville
132
143
  def session
133
144
  if @session.nil?
134
145
  base_url = "#{@protocol}://#{@host}/api/berlin/#{@private_key}"
135
- @session = RestClient::Resource.new base_url
146
+ @session = RestClient::Resource.new base_url, :timeout => @timeout
136
147
  end
137
148
  @session
138
149
  end
@@ -155,9 +166,9 @@ module Badgeville
155
166
  if e.respond_to? :response
156
167
  begin
157
168
  data = JSON.parse(e.response)
158
- raise BadgevilleError.new(e.http_code, data["error"])
159
- rescue TypeError
160
169
  raise BadgevilleError.new(e.http_code, data)
170
+ rescue TypeError, JSON::ParserError
171
+ raise BadgevilleError.new(e.http_code, e.message)
161
172
  end
162
173
  else
163
174
  raise e
@@ -63,7 +63,7 @@ describe Badgeville do
63
63
  describe "#get_activities" do
64
64
  before do
65
65
  @url = /http:\/\/#{Badgeville::HOST}.*activities.json.*user=#{@user}.*/
66
- mock_activities = {
66
+ mock_activities = {
67
67
  "data" => [
68
68
  {
69
69
  "verb" => "join_team",
@@ -125,11 +125,22 @@ describe Badgeville do
125
125
 
126
126
  describe "#set_player" do
127
127
  before do
128
- @url = /http:\/\/#{Badgeville::HOST}.*example.com\/players\/#{@user}\.json.*/
128
+ @url = /http:\/\/#{Badgeville::HOST}.*example.com\/players\/info\.json.*user=#{@user}.*/
129
129
  stub_http_request(:get, @url).to_return(:body => {"data" => {"id" => "1", "site_id" => "site"}}.to_json)
130
130
  end
131
131
 
132
132
  it {@badgeville.player_id.should == "1"}
133
133
  it {@badgeville.site_id.should == "site"}
134
134
  end
135
+
136
+ describe "verify default timeout is 3" do
137
+ it {@badgeville.timeout.should == 3}
138
+ end
139
+
140
+ describe "verify timeout parameter is set" do
141
+ new_badgeville = Badgeville::Client.new @user, 'private_key' => "api_key",
142
+ 'site' => 'example.com', 'timeout' => 10
143
+ it {new_badgeville.timeout.should == 10}
144
+ end
145
+
135
146
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: badgeville
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-18 00:00:00.000000000 -07:00
12
+ date: 2011-10-10 00:00:00.000000000 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json
17
- requirement: &2157019100 !ruby/object:Gem::Requirement
17
+ requirement: &2160449300 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2157019100
25
+ version_requirements: *2160449300
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rest-client
28
- requirement: &2157018180 !ruby/object:Gem::Requirement
28
+ requirement: &2160448300 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2157018180
36
+ version_requirements: *2160448300
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &2157017140 !ruby/object:Gem::Requirement
39
+ requirement: &2160447640 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 2.3.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *2157017140
47
+ version_requirements: *2160447640
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: bundler
50
- requirement: &2157016440 !ruby/object:Gem::Requirement
50
+ requirement: &2160447000 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 1.0.0
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *2157016440
58
+ version_requirements: *2160447000
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: jeweler
61
- requirement: &2157015620 !ruby/object:Gem::Requirement
61
+ requirement: &2160446280 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 1.6.4
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *2157015620
69
+ version_requirements: *2160446280
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rcov
72
- requirement: &2157014620 !ruby/object:Gem::Requirement
72
+ requirement: &2160445520 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,7 +77,7 @@ dependencies:
77
77
  version: '0'
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *2157014620
80
+ version_requirements: *2160445520
81
81
  description: Client for Badgeville's Core API v2. http://rules.badgeville.com
82
82
  email:
83
83
  executables: []
@@ -118,7 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
118
118
  version: '0'
119
119
  segments:
120
120
  - 0
121
- hash: -1038648532873041495
121
+ hash: 832478503767646954
122
122
  required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  none: false
124
124
  requirements: