Class: Badgeville::Client
- Inherits:
-
Object
- Object
- Badgeville::Client
show all
- Includes:
- Helpers
- Defined in:
- lib/badgeville.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Helpers
#ensure_array, #property_params
Constructor Details
#initialize(email, opts = {}) ⇒ Client
Returns a new instance of Client.
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/badgeville.rb', line 31
def initialize (email, opts={})
@site = opts['site']
@private_key = opts['private_key']
@public_key = opts['public_key']
@timeout = opts['timeout'] || TIMEOUT_SECS
@host = opts['host'] || HOST
@protocol = opts['protocol'] || PROTOCOL
@user = email
@per_page = opts['per_page']
end
|
Instance Attribute Details
#debug ⇒ Object
Returns the value of attribute debug.
29
30
31
|
# File 'lib/badgeville.rb', line 29
def debug
@debug
end
|
#player_id ⇒ Object
Returns the value of attribute player_id.
29
30
31
|
# File 'lib/badgeville.rb', line 29
def player_id
@player_id
end
|
#site ⇒ Object
Returns the value of attribute site.
29
30
31
|
# File 'lib/badgeville.rb', line 29
def site
@site
end
|
#site_id ⇒ Object
Returns the value of attribute site_id.
29
30
31
|
# File 'lib/badgeville.rb', line 29
def site_id
@site_id
end
|
#timeout ⇒ Object
Returns the value of attribute timeout.
29
30
31
|
# File 'lib/badgeville.rb', line 29
def timeout
@timeout
end
|
#user ⇒ Object
Returns the value of attribute user.
29
30
31
|
# File 'lib/badgeville.rb', line 29
def user
@user
end
|
Instance Method Details
#award(reward_name) ⇒ Object
113
114
115
116
117
118
119
120
121
122
123
|
# File 'lib/badgeville.rb', line 113
def award reward_name
reward = reward_definitions.select do |reward|
reward.name == reward_name
end.first
params = {
'reward[player_id]' => player_id,
'reward[site_id]' => site_id,
'reward[definition_id]' => reward.id,
}
Reward.new(make_call(:post, :rewards, params))
end
|
#count_activities(opts = {}) ⇒ Object
86
87
88
89
|
# File 'lib/badgeville.rb', line 86
def count_activities(opts={})
response = make_call(:get, :activities, opts.merge(:include_totals => true))
response["paging"]["total_entries"].to_i
end
|
#create_player(opts = {}) ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/badgeville.rb', line 43
def create_player(opts={})
begin
return player_info
rescue
end
begin
params = property_params(:user, {email: @user}.merge(opts))
response = make_call(:post, :users, params)
rescue BadgevilleError => e
if e.code != 422
if ensure_array(e.data["email"]).none? {|erorr_msg|
error_msg =~ "is already taken"
}
raise e
end
end
end
params = {email: @user, site: @site}.merge(
property_params(:player, {email: @user}.merge(
opts)))
json = make_call(:post, :players, params)
@site_id = json["site_id"]
@player_id = json["id"]
end
|
#delete(reward) ⇒ Object
125
126
127
128
129
130
131
132
133
134
135
136
|
# File 'lib/badgeville.rb', line 125
def delete reward
if reward.respond_to?(:earned_at) && reward.earned_at
end_point = "rewards/#{reward.id}.json"
begin
!!session[end_point].delete
rescue => e
raise BadgevilleError.new(e.http_code, e.message)
end
else
raise BadgevilleError.new(nil, "can only remove earned rewards. a #{reward.to_json} was given")
end
end
|
#get_activities(opts = {}) ⇒ Object
79
80
81
82
83
84
|
# File 'lib/badgeville.rb', line 79
def get_activities(opts={})
response = make_call(:get, :activities, opts)
response["data"].map do |activity_json|
Activity.new(activity_json)
end
end
|
#get_rewards ⇒ Object
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/badgeville.rb', line 101
def get_rewards
begin
pages = all_pages_for(:rewards)
pages.inject([]) do |rewards, page|
rewards += rewards_from_response(page)
end
rescue BadgevilleError => e
raise e unless e.code == 404
[]
end
end
|
#log_activity(activity, opts = {}) ⇒ Object
73
74
75
76
77
|
# File 'lib/badgeville.rb', line 73
def log_activity(activity, opts={})
params = property_params(:activity, {verb: activity}.merge(opts))
response = make_call(:post, :activities, params)
Activity.new(response)
end
|
#player_info ⇒ Object
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
# File 'lib/badgeville.rb', line 144
def player_info
end_point = "/players/info.json"
begin
params = {:email => @user, :site => @site}
response = session[end_point].get(:params => params)
data = response.body
json = JSON.parse(data)
json = json["data"]
@site_id = json["site_id"]
@player_id = json["id"]
rescue => e
if e.respond_to? :response && e.response
data = JSON.parse(e.response)
raise BadgevilleError.new(e.http_code, data["errors"]["error"])
else
raise e
end
end
end
|
#reward_definitions ⇒ Object
91
92
93
94
95
96
97
98
99
|
# File 'lib/badgeville.rb', line 91
def reward_definitions
unless @reward_definitions
pages = all_pages_for(:reward_definitions)
@reward_definitions = pages.inject([]) do |definitions, page|
definitions += rewards_from_response(page)
end
end
@reward_definitions
end
|