uboost-client 0.1.5 → 0.1.6
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/README.markdown +26 -0
- data/lib/uboost-client/uboost_client.rb +61 -19
- data/lib/uboost-client/version.rb +1 -1
- data/spec/simple_test.rb +19 -6
- metadata +2 -2
data/README.markdown
CHANGED
@@ -59,6 +59,32 @@ client.points.add_points_to_account(921679359, 30, {:description => 'a descripti
|
|
59
59
|
client.badges.award(921679359, 1)
|
60
60
|
|
61
61
|
client.badges.unaward(921679359, 1)
|
62
|
+
```
|
63
|
+
|
64
|
+
The widgets section can make use of a session store. Just pass a session object - something that quacks like a hash - and the first call it makes will cache the `uboost_session_id`.
|
65
|
+
|
66
|
+
````ruby
|
67
|
+
|
68
|
+
# No caching
|
69
|
+
client.widgets.profile(:account_id => 921679373)
|
70
|
+
# Caching activated. It will cache the uboost sesion.
|
71
|
+
client.widgets(:session => session).profile(:account_id => 921679373)
|
72
|
+
# Caching activated. It will use the cached uboost sesion.
|
73
|
+
client.widgets(:session => session).profile(:account_id => 921679373)
|
74
|
+
|
75
|
+
client.widgets.my_badges(:account_id => 921679373)
|
76
|
+
client.widgets(:session => session).my_badges(:account_id => 921679373)
|
77
|
+
client.widgets(:session => session).my_badges(:account_id => 921679373)
|
78
|
+
|
79
|
+
client.widgets.ubar(921679373)
|
80
|
+
|
81
|
+
client.widgets.list_of_leaderboards(:account_id => 921679373)
|
82
|
+
client.widgets(:session => session).list_of_leaderboards(:account_id => 921679373)
|
83
|
+
client.widgets(:session => session).list_of_leaderboards(:account_id => 921679373)
|
84
|
+
|
85
|
+
client.widgets.leaderboard(:account_id => 921679373, :leaderboard_id => 226)
|
86
|
+
client.widgets(:session => session).leaderboard(:account_id => 921679373, :leaderboard_id => 226)
|
87
|
+
client.widgets(:session => session).leaderboard(:account_id => 921679373, :leaderboard_id => 226)
|
62
88
|
|
63
89
|
client.widgets.profile(921679358)
|
64
90
|
|
@@ -2,6 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'faraday'
|
3
3
|
require 'json'
|
4
4
|
require 'ostruct'
|
5
|
+
require 'cgi'
|
5
6
|
|
6
7
|
module UboostClient
|
7
8
|
|
@@ -12,6 +13,7 @@ module UboostClient
|
|
12
13
|
def initialize(options = Hash.new)
|
13
14
|
@subdomain = options[:subdomain]
|
14
15
|
@api_credentials = options[:api_credentials]
|
16
|
+
@debug = options[:debug] || false
|
15
17
|
end
|
16
18
|
|
17
19
|
def connection
|
@@ -23,6 +25,15 @@ module UboostClient
|
|
23
25
|
end
|
24
26
|
end
|
25
27
|
|
28
|
+
def connection_with_uboost_session(uboost_session_id)
|
29
|
+
url = "https://#{@subdomain}.uboost.com"
|
30
|
+
Faraday.new(url, {:headers=>{'Cookie'=> uboost_session_id}}) do |faraday|
|
31
|
+
faraday.request :url_encoded # form-encode POST params
|
32
|
+
faraday.response :logger # log requests to STDOUT
|
33
|
+
faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
26
37
|
def account
|
27
38
|
@account ||= UboostClient::Account.new(self)
|
28
39
|
end
|
@@ -35,8 +46,8 @@ module UboostClient
|
|
35
46
|
@badges ||= UboostClient::Badges.new(self)
|
36
47
|
end
|
37
48
|
|
38
|
-
def widgets
|
39
|
-
@widgets
|
49
|
+
def widgets(options = Hash.new)
|
50
|
+
@widgets = UboostClient::Widgets.new(self, options)
|
40
51
|
end
|
41
52
|
|
42
53
|
end
|
@@ -165,44 +176,75 @@ module UboostClient
|
|
165
176
|
end
|
166
177
|
|
167
178
|
class Widgets
|
168
|
-
attr_accessor :url, :client
|
179
|
+
attr_accessor :url, :client, :session
|
169
180
|
|
170
|
-
def initialize(client)
|
181
|
+
def initialize(client, options)
|
171
182
|
@client = client
|
172
183
|
@url = '/api/widgets'
|
184
|
+
@session = options[:session] || false
|
185
|
+
end
|
186
|
+
|
187
|
+
def session_cache_available?
|
188
|
+
@session
|
189
|
+
end
|
190
|
+
|
191
|
+
def cached_uboost_id_available?
|
192
|
+
@session && @session[:uboost_session_id]
|
173
193
|
end
|
174
194
|
|
175
195
|
def get_sso_token(account_id)
|
176
196
|
client.account.token(account_id).student["sso_token"]
|
177
197
|
end
|
178
198
|
|
179
|
-
def
|
180
|
-
|
181
|
-
|
199
|
+
def cache_uboost_cookie(response)
|
200
|
+
cookie = CGI::Cookie.parse(response.headers['set-cookie'])
|
201
|
+
@session[:uboost_session_id] = "_uboost_session_id=" + cookie["_uboost_session_id"][0]
|
182
202
|
end
|
183
203
|
|
184
|
-
def
|
185
|
-
response =
|
204
|
+
def get(url, options)
|
205
|
+
response = nil
|
206
|
+
if !session_cache_available?
|
207
|
+
response = @client.connection.get url, :sso_token => get_sso_token(options[:account_id])
|
208
|
+
elsif !cached_uboost_id_available?
|
209
|
+
response = @client.connection.get url, :sso_token => get_sso_token(options[:account_id])
|
210
|
+
cache_uboost_cookie(response)
|
211
|
+
elsif cached_uboost_id_available?
|
212
|
+
response = @client.connection_with_uboost_session(@session[:uboost_session_id]).get url
|
213
|
+
cache_uboost_cookie(response)
|
214
|
+
end
|
215
|
+
response
|
216
|
+
end
|
217
|
+
|
218
|
+
def profile(options)
|
219
|
+
options = {:account_id => nil}.merge(options)
|
220
|
+
response = get(@url + '/profile', options)
|
186
221
|
OpenStruct.new(JSON.parse(response.body))
|
187
222
|
end
|
188
|
-
|
189
|
-
def
|
190
|
-
|
223
|
+
|
224
|
+
def my_badges(options)
|
225
|
+
options = {:account_id => nil, :badge_category_id => 'all'}.merge(options)
|
226
|
+
response = get(@url + '/badges/mine/' + options[:badge_category_id], options)
|
191
227
|
OpenStruct.new(JSON.parse(response.body))
|
192
228
|
end
|
193
|
-
|
194
|
-
def
|
195
|
-
response =
|
196
|
-
OpenStruct.new(JSON.parse(response.body))
|
229
|
+
|
230
|
+
def list_of_leaderboards(options)
|
231
|
+
response = get(@url + '/leaderboards/', options)
|
232
|
+
OpenStruct.new(JSON.parse(response.body))
|
233
|
+
end
|
234
|
+
|
235
|
+
def leaderboard(options)
|
236
|
+
options = {:account_id => nil, :leaderboard_id => nil}.merge(options)
|
237
|
+
response = get(@url + '/leaderboards/' + options[:leaderboard_id].to_s, options)
|
238
|
+
OpenStruct.new(JSON.parse(response.body))
|
197
239
|
end
|
198
240
|
|
199
241
|
def ubar(account_id, options = Hash.new)
|
200
|
-
options = {:align => "", :bar_color => '', :div_id => ''}.merge(options)
|
242
|
+
options = {:align => "", :bar_color => '', :div_id => 'ubar'}.merge(options)
|
201
243
|
token = get_sso_token(account_id)
|
202
244
|
subdomain_url = "http://" + client.subdomain + ".uboost.com"
|
203
245
|
|
204
|
-
" <script type='text/javascript' src='#{subdomain_url}/javascripts/uBar.js'></script>
|
205
|
-
<div
|
246
|
+
" <script type='text/javascript' src='#{subdomain_url}/javascripts/uBar.js'></script>
|
247
|
+
<div class='uboost_ubar' id='#{options[:div_id]}'>
|
206
248
|
<object>
|
207
249
|
<param value='#{subdomain_url}/uBar.swf' name='movie'>
|
208
250
|
<param value='100%' name='width'>
|
data/spec/simple_test.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require File.expand_path('lib/uboost-client')
|
2
|
+
require "pp"
|
2
3
|
|
3
4
|
subdomain = ENV['UBOOST_SUBDOMAIN']
|
4
5
|
api_credentials = { :username => ENV['UBOOST_USERNAME'], :password => ENV['UBOOST_PASSWORD'] }
|
6
|
+
session = Hash.new
|
5
7
|
|
6
8
|
client = UboostClient::Client.new(:subdomain => subdomain, :api_credentials => api_credentials)
|
7
9
|
|
@@ -17,10 +19,21 @@ client = UboostClient::Client.new(:subdomain => subdomain, :api_credentials => a
|
|
17
19
|
# puts client.points.add_points_to_account(921679359, 30, {:description => 'whatps'})
|
18
20
|
# puts client.badges.award(921679373, 467)
|
19
21
|
# puts client.badges.unaward(921679373, 467)
|
20
|
-
|
21
|
-
# puts client.widgets.
|
22
|
+
|
23
|
+
# puts client.widgets.profile(:account_id => 921679373)
|
24
|
+
# puts client.widgets(:session => session).profile(:account_id => 921679373)
|
25
|
+
# puts client.widgets(:session => session).profile(:account_id => 921679373)
|
26
|
+
|
27
|
+
# puts client.widgets.my_badges(:account_id => 921679373)
|
28
|
+
# puts client.widgets(:session => session).my_badges(:account_id => 921679373)
|
29
|
+
# puts client.widgets(:session => session).my_badges(:account_id => 921679373)
|
30
|
+
|
22
31
|
# puts client.widgets.ubar(921679373)
|
23
|
-
|
24
|
-
puts client.widgets.
|
25
|
-
puts client.widgets.
|
26
|
-
puts client.widgets.
|
32
|
+
|
33
|
+
# puts client.widgets.list_of_leaderboards(:account_id => 921679373)
|
34
|
+
# puts client.widgets(:session => session).list_of_leaderboards(:account_id => 921679373)
|
35
|
+
# puts client.widgets(:session => session).list_of_leaderboards(:account_id => 921679373)
|
36
|
+
|
37
|
+
# puts client.widgets.leaderboard(:account_id => 921679373, :leaderboard_id => 226)
|
38
|
+
# puts client.widgets(:session => session).leaderboard(:account_id => 921679373, :leaderboard_id => 226)
|
39
|
+
# puts client.widgets(:session => session).leaderboard(:account_id => 921679373, :leaderboard_id => 226)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uboost-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|