App42_Ruby_API 0.8.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.
Files changed (89) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/App42_Ruby_API.gemspec +33 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +29 -0
  7. data/Rakefile +1 -0
  8. data/TODO.rb +3 -0
  9. data/lib/App42_Ruby_API.rb +232 -0
  10. data/lib/App42_Ruby_API/App42BadParameterException.rb +31 -0
  11. data/lib/App42_Ruby_API/App42Exception.rb +39 -0
  12. data/lib/App42_Ruby_API/App42LimitException.rb +15 -0
  13. data/lib/App42_Ruby_API/App42NotFoundException.rb +15 -0
  14. data/lib/App42_Ruby_API/App42Response.rb +13 -0
  15. data/lib/App42_Ruby_API/App42ResponseBuilder.rb +67 -0
  16. data/lib/App42_Ruby_API/App42SecurityException.rb +15 -0
  17. data/lib/App42_Ruby_API/version.rb +3 -0
  18. data/lib/connection/RESTConnection.rb +713 -0
  19. data/lib/email/Email.rb +51 -0
  20. data/lib/email/EmailMIME.rb +51 -0
  21. data/lib/email/EmailResponseBuilder.rb +76 -0
  22. data/lib/email/EmailService.rb +244 -0
  23. data/lib/gallery/Album.rb +56 -0
  24. data/lib/gallery/AlbumResponseBuilder.rb +168 -0
  25. data/lib/gallery/AlbumService.rb +337 -0
  26. data/lib/gallery/PhotoService.rb +591 -0
  27. data/lib/game/Game.rb +39 -0
  28. data/lib/game/GameResponseBuilder.rb +106 -0
  29. data/lib/game/GameService.rb +268 -0
  30. data/lib/game/Reward.rb +24 -0
  31. data/lib/game/RewardResponseBuilder.rb +85 -0
  32. data/lib/game/RewardService.rb +440 -0
  33. data/lib/game/ScoreBoardService.rb +433 -0
  34. data/lib/game/ScoreService.rb +157 -0
  35. data/lib/geo/Geo.rb +51 -0
  36. data/lib/geo/GeoPoint.rb +43 -0
  37. data/lib/geo/GeoResponseBuilder.rb +145 -0
  38. data/lib/geo/GeoService.rb +505 -0
  39. data/lib/imageProcessor/Image.rb +42 -0
  40. data/lib/imageProcessor/ImageProcessorResponseBuilder.rb +40 -0
  41. data/lib/imageProcessor/ImageProcessorService.rb +1054 -0
  42. data/lib/log/Log.rb +49 -0
  43. data/lib/log/LogResponseBuilder.rb +61 -0
  44. data/lib/log/LogService.rb +920 -0
  45. data/lib/message/Queue.rb +50 -0
  46. data/lib/message/QueueResponseBuilder.rb +64 -0
  47. data/lib/message/QueueService.rb +469 -0
  48. data/lib/push/DeviceType.rb +56 -0
  49. data/lib/push/PushNotification.rb +38 -0
  50. data/lib/push/PushNotificationResposneBuilder.rb +74 -0
  51. data/lib/push/PushNotificationService.rb +458 -0
  52. data/lib/recommend/PreferenceData.rb +25 -0
  53. data/lib/recommend/Recommender.rb +48 -0
  54. data/lib/recommend/RecommenderResponseBuilder.rb +70 -0
  55. data/lib/recommend/RecommenderService.rb +1092 -0
  56. data/lib/recommend/RecommenderSimilarity.rb +52 -0
  57. data/lib/review/Review.rb +38 -0
  58. data/lib/review/ReviewResponseBuilder.rb +76 -0
  59. data/lib/review/ReviewService.rb +590 -0
  60. data/lib/session/Session.rb +43 -0
  61. data/lib/session/SessionResponseBuilder.rb +70 -0
  62. data/lib/session/SessionService.rb +427 -0
  63. data/lib/shopping/Cart.rb +77 -0
  64. data/lib/shopping/CartResponseBuilder.rb +118 -0
  65. data/lib/shopping/CartService.rb +902 -0
  66. data/lib/shopping/Catalogue.rb +79 -0
  67. data/lib/shopping/CatalogueResponseBuilder.rb +170 -0
  68. data/lib/shopping/CatalogueService.rb +649 -0
  69. data/lib/shopping/ItemData.rb +29 -0
  70. data/lib/shopping/PaymentStatus.rb +60 -0
  71. data/lib/social/Social.rb +35 -0
  72. data/lib/social/SocialResponseBuilder.rb +38 -0
  73. data/lib/social/SocialService.rb +585 -0
  74. data/lib/storage/OrderByType.rb +29 -0
  75. data/lib/storage/Query.rb +39 -0
  76. data/lib/storage/QueryBuilder.rb +118 -0
  77. data/lib/storage/Storage.rb +45 -0
  78. data/lib/storage/StorageResponseBuilder.rb +86 -0
  79. data/lib/storage/StorageService.rb +775 -0
  80. data/lib/upload/Upload.rb +40 -0
  81. data/lib/upload/UploadFileType.rb +83 -0
  82. data/lib/upload/UploadResponseBuilder.rb +58 -0
  83. data/lib/upload/UploadService.rb +960 -0
  84. data/lib/user/User.rb +102 -0
  85. data/lib/user/UserResponseBuilder.rb +105 -0
  86. data/lib/user/UserService.rb +1209 -0
  87. data/lib/util/util.rb +244 -0
  88. data/question.rb +79 -0
  89. metadata +204 -0
@@ -0,0 +1,440 @@
1
+ # -----------------------------------------------------------------------
2
+ # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
3
+ # -----------------------------------------------------------------------
4
+
5
+ require 'rubygems'
6
+ require 'connection/RESTConnection'
7
+ require 'util/util.rb'
8
+ require 'json/pure'
9
+ require 'App42_Ruby_API/App42Response'
10
+ require 'game/RewardResponseBuilder'
11
+ require 'game/Reward'
12
+
13
+ module App42
14
+ module Game
15
+ #
16
+ # Define a Reward e.g. Sword, Energy etc. Is needed for Reward Points
17
+ # The Game service allows Game, User, Score and ScoreBoard Management on the Cloud.
18
+ # The service allows Game Developer to create a Game and then do in Game Scoring using the
19
+ # Score service. It also allows to maintain a Scoreboard across game sessions using the ScoreBoard
20
+ # service. One can query for average or highest score for user for a Game and highest and average score across users
21
+ # for a Game. It also gives ranking of the user against other users for a particular game.
22
+ # The Reward and RewardPoints allows the Game Developer to assign rewards to a user and redeem the rewards.
23
+ #
24
+ # E.g. One can give Swords or Energy etc.
25
+ # The services Game, Score, ScoreBoard, Reward, RewardPoints can be used in Conjunction for complete Game Scoring and Reward
26
+ # Management.
27
+ #
28
+ # @see Game, RewardPoint, Score, ScoreBoard
29
+ #
30
+ class RewardService
31
+ #
32
+ # this is a constructor that takes
33
+ #
34
+ # @param apiKey
35
+ # @param secretKey
36
+ # @param baseURL
37
+ #
38
+ def initialize(api_key, secret_key, base_url)
39
+ puts "Reward->initialize"
40
+ @api_key = api_key
41
+ @secret_key = secret_key
42
+ @base_url = base_url
43
+ @resource = "game/reward"
44
+ @version = "1.0"
45
+ end
46
+
47
+ #
48
+ # Creates Reward. Reward can be Sword, Energy etc. When Reward Points have to be
49
+ # added the Reward name created using this method has to be specified.
50
+ #
51
+ # @param rewardName
52
+ # - The reward that has to be created
53
+ # @param rewardDescription
54
+ # - The description of the reward to be created
55
+ #
56
+ # @return Reward object containing the reward that has been created
57
+ #
58
+ # @raise App42Exception
59
+ #
60
+
61
+ def create_reward(rewardName, rewardDescription)
62
+ puts "Create Reward Called "
63
+ puts "Base url #{@base_url}"
64
+ response = nil;
65
+ rewardObj = nil;
66
+ rewardObj = Reward.new()
67
+ util = Util.new
68
+ util.throwExceptionIfNullOrBlank(rewardName, "Reward Name");
69
+ util.throwExceptionIfNullOrBlank(rewardDescription, "Reward Description");
70
+ begin
71
+ connection = App42::Connection::RESTConnection.new(@base_url)
72
+ body = {'app42' => {"rewards"=> { "reward"=> {
73
+ "name" => rewardName,
74
+ "description" => rewardDescription
75
+ }}}}.to_json
76
+ puts "Body #{body}"
77
+ query_params = Hash.new
78
+ params = {
79
+ 'apiKey'=> @api_key,
80
+ 'version' => @version,
81
+ 'timeStamp' => util.get_timestamp_utc,
82
+ }
83
+ query_params = params.clone
84
+ params.store("body", body)
85
+ puts query_params
86
+ signature = util.sign(@secret_key, params)
87
+ resource_url = "#{@version}/#{@resource}"
88
+ response = connection.post(signature, resource_url, query_params, body)
89
+ puts "Response is #{response}"
90
+ reward = RewardResponseBuilder.new()
91
+ rewardObj = reward.buildResponse(response)
92
+ rescue App42Exception =>e
93
+ raise e
94
+ rescue Exception => e
95
+ raise App42Exception.new(e)
96
+ end
97
+ return rewardObj
98
+ end
99
+
100
+ #
101
+ # Fetches all the Rewards
102
+ #
103
+ # @return ArrayList of Reward objects containing all the rewards of the App
104
+ #
105
+ # @raise App42Exception
106
+ #
107
+ #
108
+
109
+ def get_all_rewards()
110
+ puts "Get All Rewards Called "
111
+ puts "Base url #{@base_url}"
112
+ response = nil;
113
+ rewardList = nil;
114
+ rewardList = Array.new
115
+ util = Util.new
116
+ begin
117
+ connection = App42::Connection::RESTConnection.new(@base_url)
118
+ query_params = Hash.new
119
+ params = {
120
+ 'apiKey'=> @api_key,
121
+ 'version' => @version,
122
+ 'timeStamp' => util.get_timestamp_utc,
123
+ }
124
+ query_params = params.clone
125
+ signature = util.sign(@secret_key, params)
126
+ resource_url = "#{@version}/#{@resource}"
127
+ response = connection.get(signature, resource_url, query_params)
128
+ puts "Response is #{response}"
129
+ reward = RewardResponseBuilder.new()
130
+ rewardList = reward.buildArrayRewards(response)
131
+ rescue App42Exception =>e
132
+ raise e
133
+ rescue Exception => e
134
+ raise App42Exception.new(e)
135
+ end
136
+ return rewardList
137
+ end
138
+
139
+ #
140
+ # Fetches all the Rewards by paging.
141
+ #
142
+ # @param max
143
+ # - Maximum number of records to be fetched
144
+ # @param offset
145
+ # - From where the records are to be fetched
146
+ #
147
+ # @return ArrayList of Reward objects containing all the rewards of the App
148
+ #
149
+ # @raise App42Exception
150
+ #
151
+
152
+ def get_all_rewards_by_paging(max, offset)
153
+ puts "get_all_rewards_by_paging Called "
154
+ puts "Base url #{@base_url}"
155
+ response = nil;
156
+ rewardList = nil;
157
+ rewardList = Array.new
158
+ util = Util.new
159
+ util.validateMax(max);
160
+ util.throwExceptionIfNullOrBlank(max, "Max");
161
+ util.throwExceptionIfNullOrBlank(offset, "Offset");
162
+ begin
163
+ connection = App42::Connection::RESTConnection.new(@base_url)
164
+ query_params = Hash.new
165
+ params = {
166
+ 'apiKey'=> @api_key,
167
+ 'version' => @version,
168
+ 'timeStamp' => util.get_timestamp_utc,
169
+ }
170
+ query_params = params.clone
171
+ params.store("max", "" + (max.to_i).to_s)
172
+ params.store("offset", "" + (offset.to_i).to_s)
173
+ signature = util.sign(@secret_key, params)
174
+ resource_url = "#{@version}/#{@resource}/paging/#{(max.to_i).to_s}/#{(offset.to_i).to_s}"
175
+ response = connection.get(signature, resource_url, query_params)
176
+ puts "Response is #{response}"
177
+ reward = RewardResponseBuilder.new()
178
+ rewardList = reward.buildArrayRewards(response)
179
+ rescue App42Exception =>e
180
+ raise e
181
+ rescue Exception => e
182
+ raise App42Exception.new(e)
183
+ end
184
+ return rewardList
185
+ end
186
+
187
+ #
188
+ # Retrieves the reward for the specified name
189
+ #
190
+ # @param rewardName
191
+ # - Name of the reward that has to be fetched
192
+ #
193
+ # @return Reward object containing the reward based on the rewardName
194
+ #
195
+ # @raise App42Exception
196
+ #
197
+
198
+ def get_reward_by_name(rewardName)
199
+ puts "Get reward By Name Called "
200
+ puts "Base url #{@base_url}"
201
+ response = nil;
202
+ rewardObj = nil;
203
+ rewardObj = Reward.new()
204
+ util = Util.new
205
+ util.throwExceptionIfNullOrBlank(rewardName, "Reward Name");
206
+ begin
207
+ connection = App42::Connection::RESTConnection.new(@base_url)
208
+ query_params = Hash.new
209
+ params = {
210
+ 'apiKey'=> @api_key,
211
+ 'version' => @version,
212
+ 'timeStamp' => util.get_timestamp_utc,
213
+ }
214
+ query_params = params.clone
215
+ params.store("name", rewardName)
216
+ puts query_params
217
+ signature = util.sign(@secret_key, params)
218
+ resource_url = "#{@version}/#{@resource}/#{rewardName}"
219
+ response = connection.get(signature, resource_url, query_params)
220
+ puts "Response is #{response}"
221
+ reward = RewardResponseBuilder.new()
222
+ rewardObj = reward.buildResponse(response)
223
+ rescue App42Exception =>e
224
+ raise e
225
+ rescue Exception => e
226
+ raise App42Exception.new(e)
227
+ end
228
+ return rewardObj
229
+ end
230
+
231
+ #
232
+ # Adds the reward points to an users account. Reward Points can be earned by the user
233
+ # which can be redeemed later.
234
+ #
235
+ # @param gameName
236
+ # - Name of the game for which reward points have to be added
237
+ # @param gameUserName
238
+ # - The user for whom reward points have to be added
239
+ # @param rewardName
240
+ # - The rewards for which reward points have to be added
241
+ # @param rewardsPoints
242
+ # - The points that have to be added
243
+ #
244
+ # @return Reward object containing the rewardpoints that has been added
245
+ #
246
+ # @raise App42Exception
247
+ #
248
+
249
+ def earn_rewards(gameName,gameUserName,rewardName,rewardPoints)
250
+ puts "Earn Rewards Called "
251
+ puts "Base url #{@base_url}"
252
+ response = nil;
253
+ rewardObj = nil;
254
+ rewardObj = Reward.new()
255
+ util = Util.new
256
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
257
+ util.throwExceptionIfNullOrBlank(gameUserName, "User Name");
258
+ util.throwExceptionIfNullOrBlank(rewardName, "Reward Name");
259
+
260
+ begin
261
+ connection = App42::Connection::RESTConnection.new(@base_url)
262
+ body = {'app42' => {"rewards"=> { "reward"=> {
263
+ "gameName" => gameName,
264
+ "userName" => gameUserName,
265
+ "name" => rewardName,
266
+ "points" => rewardPoints
267
+ }}}}.to_json
268
+ puts "Body #{body}"
269
+ query_params = Hash.new
270
+ params = {
271
+ 'apiKey'=> @api_key,
272
+ 'version' => @version,
273
+ 'timeStamp' => util.get_timestamp_utc,
274
+ }
275
+ query_params = params.clone
276
+ params.store("body", body)
277
+ puts query_params
278
+ signature = util.sign(@secret_key, params)
279
+ resource_url = "#{@version}/#{@resource}/earn"
280
+ response = connection.post(signature, resource_url, query_params, body)
281
+ puts "Response is #{response}"
282
+ reward = RewardResponseBuilder.new()
283
+ rewardObj = reward.buildResponse(response)
284
+ rescue App42Exception =>e
285
+ raise e
286
+ rescue Exception => e
287
+ raise App42Exception.new(e)
288
+ end
289
+ return rewardObj
290
+ end
291
+
292
+ #
293
+ # Deducts the rewardpoints from the earned rewards by a user.
294
+ #
295
+ # @param gameName
296
+ # - Name of the game for which reward points have to be deducted
297
+ # @param gameUserName
298
+ # - The user for whom reward points have to be deducted
299
+ # @param rewardName
300
+ # - The rewards for which reward points have to be deducted
301
+ # @param rewardsPoints
302
+ # - The points that have to be deducted
303
+ #
304
+ # @return Reward object containing the rewardpoints that has been deducted
305
+ #
306
+ # @raise App42Exception
307
+ #
308
+
309
+ def redeem_rewards(gameName,gameUserName,rewardName,rewardPoints)
310
+ puts "Redeem Rewards Called "
311
+ puts "Base url #{@base_url}"
312
+ response = nil;
313
+ rewardObj = nil;
314
+ rewardObj = Reward.new()
315
+ util = Util.new
316
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
317
+ util.throwExceptionIfNullOrBlank(gameUserName, "Game User Name");
318
+ util.throwExceptionIfNullOrBlank(rewardName, "Reward Name");
319
+ begin
320
+ connection = App42::Connection::RESTConnection.new(@base_url)
321
+ body = {'app42' => {"rewards"=> { "reward"=> {
322
+ "gameName" => gameName,
323
+ "userName" => gameUserName,
324
+ "name" => rewardName,
325
+ "points" => rewardPoints
326
+ }}}}.to_json
327
+ puts "Body #{body}"
328
+ query_params = Hash.new
329
+ params = {
330
+ 'apiKey'=> @api_key,
331
+ 'version' => @version,
332
+ 'timeStamp' => util.get_timestamp_utc,
333
+ }
334
+ query_params = params.clone
335
+ puts query_params
336
+ params.store("body", body)
337
+ signature = util.sign(@secret_key, params)
338
+ resource_url = "#{@version}/#{@resource}/redeem"
339
+ response = connection.post(signature, resource_url, query_params, body)
340
+ puts "Response is #{response}"
341
+ reward = RewardResponseBuilder.new()
342
+ rewardObj = reward.buildResponse(response)
343
+ rescue App42Exception =>e
344
+ raise e
345
+ rescue Exception => e
346
+ raise App42Exception.new(e)
347
+ end
348
+ return rewardObj
349
+ end
350
+
351
+ #
352
+ # Fetches the reward points for a particular user
353
+ #
354
+ # @param gameName
355
+ # - Name of the game for which reward points have to be fetched
356
+ # @param userName
357
+ # - The user for whom reward points have to be fetched
358
+ #
359
+ # @return Reward object containing the reward points for the specified user
360
+ #
361
+ # @raise App42Exception
362
+ #
363
+
364
+ def get_game_reward_points_for_user(gameName, userName)
365
+ puts "Get Game Reward Points For User Called "
366
+ puts "Base url #{@base_url}"
367
+ response = nil;
368
+ rewardObj = nil;
369
+ rewardObj = Reward.new()
370
+ util = Util.new
371
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
372
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
373
+ begin
374
+ connection = App42::Connection::RESTConnection.new(@base_url)
375
+ query_params = Hash.new
376
+ params = {
377
+ 'apiKey'=> @api_key,
378
+ 'version' => @version,
379
+ 'timeStamp' => util.get_timestamp_utc,
380
+ }
381
+ query_params = params.clone
382
+ params.store("gameName", gameName)
383
+ params.store("userName", userName)
384
+ puts query_params
385
+ signature = util.sign(@secret_key, params)
386
+ resource_url = "#{@version}/#{@resource}/#{gameName}/#{userName}"
387
+ response = connection.get(signature, resource_url, query_params)
388
+ puts "Response is #{response}"
389
+ reward = RewardResponseBuilder.new()
390
+ rewardObj = reward.buildResponse(response)
391
+ rescue App42Exception =>e
392
+ raise e
393
+ rescue Exception => e
394
+ raise App42Exception.new(e)
395
+ end
396
+ return rewardObj
397
+ end
398
+
399
+ #
400
+ # Fetches all the Rewards
401
+ #
402
+ # @return ArrayList of Reward objects containing all the rewards of the App
403
+ #
404
+ # @raise App42Exception
405
+ #
406
+
407
+ def get_all_rewards_count()
408
+ puts "get_all_rewards_count Called "
409
+ puts "Base url #{@base_url}"
410
+ response = nil;
411
+ responseObj = App42Response.new
412
+ util = Util.new
413
+ begin
414
+ connection = App42::Connection::RESTConnection.new(@base_url)
415
+ query_params = Hash.new
416
+ params = {
417
+ 'apiKey'=> @api_key,
418
+ 'version' => @version,
419
+ 'timeStamp' => util.get_timestamp_utc,
420
+ }
421
+ query_params = params.clone
422
+ puts query_params
423
+ signature = util.sign(@secret_key, params)
424
+ resource_url = "#{@version}/#{@resource}/count"
425
+ response = connection.get(signature, resource_url, query_params)
426
+ responseObj.strResponse=(response)
427
+ responseObj.isResponseSuccess=(true)
428
+ responseObj = RewardResponseBuilder.new()
429
+ responseObj.getTotalRecords(response);
430
+ rescue App42Exception =>e
431
+ raise e
432
+ rescue Exception => e
433
+ raise App42Exception.new(e)
434
+ end
435
+ return responseObj
436
+ end
437
+
438
+ end
439
+ end
440
+ end
@@ -0,0 +1,433 @@
1
+ # -----------------------------------------------------------------------
2
+ # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
3
+ # -----------------------------------------------------------------------
4
+
5
+ require 'connection/RESTConnection'
6
+ require 'util/util'
7
+ require 'json/pure'
8
+
9
+ module App42
10
+ module Game
11
+ #
12
+ # ScoreBoard allows storing, retrieving, querying and ranking scores for users and Games across
13
+ # Game Session.
14
+ #
15
+ # The Game service allows Game, User, Score and ScoreBoard Management on the Cloud.
16
+ # The service allows Game Developer to create a Game and then do in Game Scoring using the
17
+ # Score service. It also allows to maintain a Scoreboard across game sessions using the ScoreBoard
18
+ # service. One can query for average or highest score for user for a Game and highest and average score across users
19
+ # for a Game. It also gives ranking of the user against other users for a particular game.
20
+ # The Reward and RewardPoints allows the Game Developer to assign rewards to a user and redeem the rewards.
21
+ #
22
+ # E.g. One can give Swords or Energy etc.
23
+ # The services Game, Score, ScoreBoard, Reward, RewardPoints can be used in Conjunction for complete Game Scoring and Reward
24
+ # Management.
25
+ #
26
+ # @see Game, RewardPoint, RewardPoint, Score
27
+ #
28
+ class ScoreBoardService
29
+ #
30
+ # this is a constructor that takes
31
+ #
32
+ # @param apiKey
33
+ # @param secretKey
34
+ # @param baseURL
35
+ #
36
+ def initialize(api_key, secret_key, base_url)
37
+ puts "Game->initialize"
38
+ @api_key = api_key
39
+ @secret_key = secret_key
40
+ @base_url = base_url
41
+ @resource = "game/scoreboard"
42
+ @version = "1.0"
43
+ end
44
+
45
+ #
46
+ # Saves the User score for a game
47
+ #
48
+ # @param gameName
49
+ # - Name of the game for which score has to be saved
50
+ # @param gameUserName
51
+ # - The user for which score has to be saved
52
+ # @param gameScore
53
+ # - The sore that has to be saved
54
+ #
55
+ # @return Returns the saved score for a game
56
+ #
57
+ # @raise App42Exception
58
+ #
59
+
60
+ def save_user_score(gameName, gameUserName, gameScore)
61
+ puts "Save User Score Called "
62
+ puts "Base url #{@base_url}"
63
+ response = nil;
64
+ scoreboardObj = nil;
65
+ scoreboardObj = Game.new
66
+ util = Util.new
67
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
68
+ util.throwExceptionIfNullOrBlank(gameUserName, "User Name");
69
+ begin
70
+ connection = App42::Connection::RESTConnection.new(@base_url)
71
+ body = {'app42' => {"game"=> {
72
+ "name" => gameName,"scores" => { "score" => {
73
+ "value" => gameScore,
74
+ "userName" => gameUserName
75
+ }}}}}.to_json
76
+ puts "Body #{body}"
77
+ query_params = Hash.new
78
+ params = {
79
+ 'apiKey'=> @api_key,
80
+ 'version' => @version,
81
+ 'timeStamp' => util.get_timestamp_utc,
82
+ }
83
+ query_params = params.clone
84
+ params.store("body", body)
85
+ puts query_params
86
+ signature = util.sign(@secret_key, params)
87
+ resource_url = "#{@version}/#{@resource}"
88
+ response = connection.post(signature, resource_url, query_params, body)
89
+ puts "Response is #{response}"
90
+ game = GameResponseBuilder.new()
91
+ scoreboardObj = game.buildResponse(response)
92
+ rescue App42Exception =>e
93
+ raise e
94
+ rescue Exception => e
95
+ raise App42Exception.new(e)
96
+ end
97
+ return scoreboardObj
98
+ end
99
+
100
+ #
101
+ # Retrieves the scores for a game for the specified name
102
+ #
103
+ # @param gameName
104
+ # - Name of the game for which score has to be fetched
105
+ # @param userName
106
+ # - The user for which score has to be fetched
107
+ #
108
+ # @return Returns the game score for the specified user
109
+ #
110
+ # @raise App42Exception
111
+ #
112
+
113
+ def get_scores_by_user(gameName, userName)
114
+ puts "Get Score By User Called "
115
+ puts "Base url #{@base_url}"
116
+ response = nil;
117
+ scoreboardObj = nil;
118
+ scoreboardObj = Game.new
119
+ util = Util.new
120
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
121
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
122
+ begin
123
+ connection = App42::Connection::RESTConnection.new(@base_url)
124
+ query_params = Hash.new
125
+ params = {
126
+ 'apiKey'=> @api_key,
127
+ 'version' => @version,
128
+ 'timeStamp' => util.get_timestamp_utc,
129
+ }
130
+ query_params = params.clone
131
+ params.store("name", gameName)
132
+ params.store("userName", userName)
133
+ puts query_params
134
+ signature = util.sign(@secret_key, params)
135
+ resource_url = "#{@version}/#{@resource}/#{gameName}/#{userName}"
136
+ response = connection.get(signature, resource_url, query_params)
137
+ puts "Response is #{response}"
138
+ game = GameResponseBuilder.new()
139
+ scoreboardObj = game.buildResponse(response)
140
+ rescue App42Exception =>e
141
+ raise e
142
+ rescue Exception => e
143
+ raise App42Exception.new(e)
144
+ end
145
+ return scoreboardObj
146
+ end
147
+
148
+ #
149
+ # Retrieves the highest game score for the specified user
150
+ #
151
+ # @param gameName
152
+ # - Name of the game for which highest score has to be fetched
153
+ # @param userName
154
+ # - The user for which highest score has to be fetched
155
+ #
156
+ # @return Returns the highest game score for the specified user
157
+ #
158
+ # @raise App42Exception
159
+ #
160
+
161
+ def get_highest_score_by_user(gameName, userName)
162
+ puts "Get Highest Score By User Called "
163
+ puts "Base url #{@base_url}"
164
+ response = nil;
165
+ scoreboardObj = nil;
166
+ scoreboardObj = Game.new
167
+ util = Util.new
168
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
169
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
170
+ begin
171
+ connection = App42::Connection::RESTConnection.new(@base_url)
172
+ query_params = Hash.new
173
+ params = {
174
+ 'apiKey'=> @api_key,
175
+ 'version' => @version,
176
+ 'timeStamp' => util.get_timestamp_utc,
177
+ }
178
+ query_params = params.clone
179
+ params.store("name", gameName)
180
+ params.store("userName", userName)
181
+ puts query_params
182
+ signature = util.sign(@secret_key, params)
183
+ resource_url = "#{@version}/#{@resource}/#{gameName}/#{userName}/highest"
184
+ response = connection.get(signature, resource_url, query_params)
185
+ puts "Response is #{response}"
186
+ game = GameResponseBuilder.new()
187
+ scoreboardObj = game.buildResponse(response)
188
+ rescue App42Exception =>e
189
+ raise e
190
+ rescue Exception => e
191
+ raise App42Exception.new(e)
192
+ end
193
+ return scoreboardObj
194
+ end
195
+
196
+ #
197
+ # Retrieves the lowest game score for the specified user
198
+ #
199
+ # @param gameName
200
+ # - Name of the game for which lowest score has to be fetched
201
+ # @param userName
202
+ # - The user for which lowest score has to be fetched
203
+ #
204
+ # @return Returns the lowest game score for the specified user
205
+ #
206
+ # @raise App42Exception
207
+ #
208
+
209
+ def get_lowest_score_by_user(gameName, userName)
210
+ puts "Get Lowest Score By User Called "
211
+ puts "Base url #{@base_url}"
212
+ response = nil;
213
+ scoreboardObj = nil;
214
+ scoreboardObj = Game.new
215
+ util = Util.new
216
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
217
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
218
+ begin
219
+ connection = App42::Connection::RESTConnection.new(@base_url)
220
+ query_params = Hash.new
221
+ params = {
222
+ 'apiKey'=> @api_key,
223
+ 'version' => @version,
224
+ 'timeStamp' => util.get_timestamp_utc,
225
+ }
226
+ query_params = params.clone
227
+ params.store("name", gameName)
228
+ params.store("userName", userName)
229
+ puts query_params
230
+ signature = util.sign(@secret_key, params)
231
+ resource_url = "#{@version}/#{@resource}/#{gameName}/#{userName}/lowest"
232
+ response = connection.get(signature, resource_url, query_params)
233
+ puts "Response is #{response}"
234
+ game = GameResponseBuilder.new()
235
+ scoreboardObj = game.buildResponse(response)
236
+ rescue App42Exception =>e
237
+ raise e
238
+ rescue Exception => e
239
+ raise App42Exception.new(e)
240
+ end
241
+ return scoreboardObj
242
+ end
243
+
244
+ #
245
+ # Retrieves the Top Rankings for the specified game
246
+ #
247
+ # @param gameName
248
+ # - Name of the game for which ranks have to be fetched
249
+ #
250
+ # @return Returns the Top rankings for a game
251
+ #
252
+ # @raise App42Exception
253
+ #
254
+
255
+ def get_top_rankings(gameName)
256
+ puts "Get Top Rankings Called "
257
+ puts "Base url #{@base_url}"
258
+ response = nil;
259
+ scoreboardObj = nil;
260
+ scoreboardObj = Game.new
261
+ util = Util.new
262
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
263
+ begin
264
+ connection = App42::Connection::RESTConnection.new(@base_url)
265
+ query_params = Hash.new
266
+ params = {
267
+ 'apiKey'=> @api_key,
268
+ 'version' => @version,
269
+ 'timeStamp' => util.get_timestamp_utc,
270
+ }
271
+ query_params = params.clone
272
+ params.store("name", gameName)
273
+ puts query_params
274
+ signature = util.sign(@secret_key, params)
275
+ resource_url = "#{@version}/#{@resource}/#{gameName}/ranking"
276
+ response = connection.get(signature, resource_url, query_params)
277
+ puts "Response is #{response}"
278
+ game = GameResponseBuilder.new()
279
+ scoreboardObj = game.buildResponse(response)
280
+ rescue App42Exception =>e
281
+ raise e
282
+ rescue Exception => e
283
+ raise App42Exception.new(e)
284
+ end
285
+ return scoreboardObj
286
+ end
287
+
288
+ #
289
+ # Retrieves the average game score for the specified user
290
+ #
291
+ # @param gameName
292
+ # - Name of the game for which average score has to be fetched
293
+ # @param userName
294
+ # - The user for which average score has to be fetched
295
+ #
296
+ # @return Returns the average game score for the specified user
297
+ #
298
+ # @raise App42Exception
299
+ #
300
+
301
+ def get_average_score_by_user(gameName, userName)
302
+ puts "Get Top Rankings Called "
303
+ puts "Base url #{@base_url}"
304
+ response = nil;
305
+ scoreboardObj = nil;
306
+ scoreboardObj = Game.new
307
+ util = Util.new
308
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
309
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
310
+ begin
311
+ connection = App42::Connection::RESTConnection.new(@base_url)
312
+ query_params = Hash.new
313
+ params = {
314
+ 'apiKey'=> @api_key,
315
+ 'version' => @version,
316
+ 'timeStamp' => util.get_timestamp_utc,
317
+ }
318
+ query_params = params.clone
319
+ params.store("name", gameName)
320
+ params.store("userName", userName);
321
+ puts query_params
322
+ signature = util.sign(@secret_key, params)
323
+ resource_url = "#{@version}/#{@resource}/#{gameName}/#{userName}/average"
324
+ response = connection.get(signature, resource_url, query_params)
325
+ puts "Response is #{response}"
326
+ game = GameResponseBuilder.new()
327
+ scoreboardObj = game.buildResponse(response)
328
+ rescue App42Exception =>e
329
+ raise e
330
+ rescue Exception => e
331
+ raise App42Exception.new(e)
332
+ end
333
+ return scoreboardObj
334
+ end
335
+
336
+ #
337
+ # Retrieves the Top N Rankings for the specified game
338
+ #
339
+ # @param gameName
340
+ # - Name of the game for which ranks have to be fetched
341
+ #
342
+ # @return Returns the Top rankings for a game
343
+ #
344
+ # @raise App42Exception
345
+ #
346
+
347
+ def get_top_n_rankings(gameName, max)
348
+ puts "Get Top N Rankings Called "
349
+ puts "Base url #{@base_url}"
350
+ response = nil;
351
+ scoreboardObj = nil;
352
+ scoreboardObj = Game.new
353
+ util = Util.new
354
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
355
+ util.throwExceptionIfNullOrBlank(max, "Max");
356
+ util.validateMax(max);
357
+ begin
358
+ connection = App42::Connection::RESTConnection.new(@base_url)
359
+ query_params = Hash.new
360
+ params = {
361
+ 'apiKey'=> @api_key,
362
+ 'version' => @version,
363
+ 'timeStamp' => util.get_timestamp_utc,
364
+ }
365
+ query_params = params.clone
366
+ params.store("name", gameName);
367
+ params.store("max", ""+ max.to_s);
368
+ puts query_params
369
+ signature = util.sign(@secret_key, params)
370
+ resource_url = "#{@version}/#{@resource}/#{gameName}/ranking/#{max.to_s}"
371
+ response = connection.get(signature, resource_url, query_params)
372
+ puts "Response is #{response}"
373
+ game = GameResponseBuilder.new()
374
+ scoreboardObj = game.buildResponse(response)
375
+ rescue App42Exception =>e
376
+ raise e
377
+ rescue Exception => e
378
+ raise App42Exception.new(e)
379
+ end
380
+ return scoreboardObj
381
+ end
382
+
383
+ #
384
+ # Retrieves the User Ranking for the specified game
385
+ #
386
+ # @param gameName
387
+ # - Name of the game for which ranks have to be fetched
388
+ # @param userName
389
+ # - Name of the user for which ranks have to be fetched
390
+ #
391
+ # @return Returns the rank of the User
392
+ #
393
+ # @raise App42Exception
394
+ #
395
+
396
+ def get_user_ranking(gameName, userName)
397
+ puts "get_user_ranking Called "
398
+ puts "Base url #{@base_url}"
399
+ response = nil;
400
+ scoreboardObj = nil;
401
+ scoreboardObj = Game.new
402
+ util = Util.new
403
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
404
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
405
+ begin
406
+ connection = App42::Connection::RESTConnection.new(@base_url)
407
+ query_params = Hash.new
408
+ params = {
409
+ 'apiKey'=> @api_key,
410
+ 'version' => @version,
411
+ 'timeStamp' => util.get_timestamp_utc,
412
+ }
413
+ query_params = params.clone
414
+ params.store("name", gameName);
415
+ params.store("userName", ""+userName);
416
+ puts query_params
417
+ signature = util.sign(@secret_key, params)
418
+ resource_url = "#{@version}/#{@resource}/#{gameName}/#{userName}/ranking"
419
+ response = connection.get(signature, resource_url, query_params)
420
+ puts "Response is #{response}"
421
+ game = GameResponseBuilder.new()
422
+ scoreboardObj = game.buildResponse(response)
423
+ rescue App42Exception =>e
424
+ raise e
425
+ rescue Exception => e
426
+ raise App42Exception.new(e)
427
+ end
428
+ return scoreboardObj
429
+ end
430
+
431
+ end
432
+ end
433
+ end