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,39 @@
1
+ # -----------------------------------------------------------------------
2
+ # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
3
+ # -----------------------------------------------------------------------
4
+
5
+ require 'App42_Ruby_API/App42Response'
6
+
7
+ #
8
+ #
9
+ # This Game object is the value object which contains the properties of Game.
10
+ #
11
+ #
12
+
13
+ module App42
14
+ module Game
15
+ class Game < App42Response
16
+ attr_accessor :name, :scoreList
17
+
18
+ @name
19
+ @scoreList = Array.new
20
+ end
21
+
22
+ class Score
23
+ attr_accessor :userName, :rank, :value, :createdOn
24
+
25
+ @userName
26
+ @rank
27
+ @value
28
+ @createdOn
29
+
30
+ #
31
+ # This is a constructor that takes no parameter
32
+ #
33
+ def initialize(game)
34
+ game.scoreList.push(self)
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,106 @@
1
+ # -----------------------------------------------------------------------
2
+ # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
3
+ # -----------------------------------------------------------------------
4
+
5
+ require 'json/pure'
6
+ require 'App42_Ruby_API/App42ResponseBuilder'
7
+ require 'game/Game'
8
+
9
+ module App42
10
+ module Game
11
+ #
12
+ #
13
+ # GameResponseBuilder class converts the JSON response retrieved from the
14
+ # server to the value object i.e Game
15
+ #
16
+ #
17
+ class GameResponseBuilder < App42ResponseBuilder
18
+ #
19
+ # Converts the response in JSON format to the value object i.e Game
20
+ #
21
+ # @param json
22
+ # - response in JSON format
23
+ #
24
+ # @return Game object filled with json data
25
+ #
26
+ #
27
+ def buildResponse(json)
28
+ gamesJSONObj = getServiceJSONObject("games", json)
29
+ gameJSONObj = gamesJSONObj["game"]
30
+ game = buildGameObject(gameJSONObj);
31
+ game.isResponseSuccess = isResponseSuccess(json)
32
+ game.strResponse=json
33
+ return game
34
+ end
35
+
36
+ #
37
+ # Converts the response in JSON format to the list of value objects i.e
38
+ # Game
39
+ #
40
+ # @param json
41
+ # - response in JSON format
42
+ #
43
+ # @return List of Game object filled with json data
44
+ #
45
+ #
46
+
47
+ def buildArrayResponse(json)
48
+ gamesJSONObj = getServiceJSONObject("games", json)
49
+ gameList = Array.new
50
+
51
+ if gamesJSONObj["game"].instance_of?(Array)
52
+ gameJSONArray = gamesJSONObj["game"]
53
+ gameJSONArray.length.times do |i|
54
+ gameJSONObj = gameJSONArray[i]
55
+ game = buildGameObject(gameJSONObj);
56
+ game.isResponseSuccess = isResponseSuccess(json)
57
+ game.strResponse=json
58
+ gameList.push(game)
59
+ end
60
+ else
61
+ gameJSONObject = gamesJSONObj["game"]
62
+ game = buildGameObject(gameJSONObject);
63
+ game.isResponseSuccess = isResponseSuccess(json)
64
+ game.strResponse=json
65
+ gameList.push(game)
66
+ end
67
+ return gameList
68
+ end
69
+
70
+ #
71
+ # Converts the Game JSON object to the value object i.e Game
72
+ #
73
+ # @param gameJSONObject
74
+ # - Game data as JSONObject
75
+ #
76
+ # @return Game object filled with json data
77
+ #
78
+
79
+ def buildGameObject(gameJSONObject)
80
+ game = Game.new()
81
+ scoreList = Array.new
82
+ game.scoreList=(scoreList)
83
+ buildObjectFromJSONTree(game, gameJSONObject);
84
+
85
+ if gameJSONObject.key?("scores") && gameJSONObject.fetch("scores").key?("score")
86
+ if gameJSONObject.fetch("scores").fetch("score").instance_of?(Hash)
87
+ scoreJSONObj = gameJSONObject.fetch("scores").fetch("score");
88
+ score = App42::Game::Score.new(game)
89
+
90
+ buildObjectFromJSONTree(score, scoreJSONObj);
91
+ else
92
+ scoreJSONArray= gameJSONObject.fetch("scores").fetch("score");
93
+ scoreJSONArray.length.times do |i|
94
+ scoreJSONObj = scoreJSONArray[i]
95
+ score = App42::Game::Score.new(game)
96
+
97
+ buildObjectFromJSONTree(score, scoreJSONObj);
98
+ end
99
+ end
100
+ end
101
+ return game
102
+
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,268 @@
1
+ # -----------------------------------------------------------------------
2
+ # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
3
+ # -----------------------------------------------------------------------
4
+
5
+ require 'rubygems'
6
+ require 'connection/RESTConnection'
7
+ require 'util/util'
8
+ require 'json/pure'
9
+ require 'App42_Ruby_API/App42Response'
10
+ require 'game/GameResponseBuilder'
11
+ require 'game/Game'
12
+
13
+ module App42
14
+ module Game
15
+ #
16
+ # The Game service allows Game, User, Score and ScoreBoard Management on the Cloud.
17
+ # The service allows Game Developer to create a Game and then do in Game Scoring using the
18
+ # Score service. It also allows to maintain a Scoreboard across game sessions using the ScoreBoard
19
+ # service. One can query for average or highest score for user for a Game and highest and average score across users
20
+ # for a Game. It also gives ranking of the user against other users for a particular game.
21
+ # The Reward and RewardPoints allows the Game Developer to assign rewards to a user and redeem the rewards.
22
+ #
23
+ # E.g. One can give Swords or Energy etc.
24
+ # The services Game, Score, ScoreBoard, Reward, RewardPoints can be used in Conjunction for complete Game Scoring and Reward
25
+ # Management.
26
+ #
27
+ # @see Reward, RewardPoint, Score, ScoreBoard
28
+ #
29
+ class GameService
30
+ #
31
+ # this is a constructor that takes
32
+ #
33
+ # @param apiKey
34
+ # @param secretKey
35
+ # @param baseURL
36
+ #
37
+ def initialize(api_key, secret_key, base_url)
38
+ puts "Game->initialize"
39
+ @api_key = api_key
40
+ @secret_key = secret_key
41
+ @base_url = base_url
42
+ @resource = "game"
43
+ @version = "1.0"
44
+ end
45
+
46
+ # Creates game on the cloud
47
+ #
48
+ # @param gameName
49
+ # - Name of the game that has to be created
50
+ # @param gameDescription
51
+ # - Description of the game to be created
52
+ #
53
+ # @return Game object containing the game which has been created
54
+ #
55
+ # @raise App42Exception
56
+ #
57
+
58
+ def create_game(gameName, gameDescription)
59
+ puts "Create Game Called "
60
+ puts "Base url #{@base_url}"
61
+ response = nil;
62
+ gameObj = nil;
63
+ gameObj = Game.new
64
+ util = Util.new
65
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
66
+ util.throwExceptionIfNullOrBlank(gameDescription, "Game Description");
67
+ begin
68
+ connection = App42::Connection::RESTConnection.new(@base_url)
69
+ body = {'app42' => {"game"=> {
70
+ "name" => gameName,
71
+ "description" => gameDescription
72
+ }}}.to_json
73
+ puts "Body #{body}"
74
+ query_params = Hash.new
75
+ params = {
76
+ 'apiKey'=> @api_key,
77
+ 'version' => @version,
78
+ 'timeStamp' => util.get_timestamp_utc,
79
+ }
80
+ query_params = params.clone
81
+ params.store("body", body)
82
+ puts query_params
83
+ signature = util.sign(@secret_key, params)
84
+ resource_url = "#{@version}/#{@resource}"
85
+ response = connection.post(signature, resource_url, query_params, body)
86
+ puts "Response is #{response}"
87
+ game = GameResponseBuilder.new()
88
+ gameObj = game.buildResponse(response)
89
+ rescue App42Exception =>e
90
+ raise e
91
+ rescue Exception => e
92
+ raise App42Exception.new(e)
93
+ end
94
+ return gameObj
95
+ end
96
+
97
+ #
98
+ # Fetches all games for the App
99
+ #
100
+ # @return ArrayList of Game object containing all the games for the App
101
+ #
102
+ # @raise App42Exception
103
+ #
104
+
105
+ def get_all_games()
106
+ puts "Get All Games Called "
107
+ puts "Base url #{@base_url}"
108
+ response = nil;
109
+ gameList = nil;
110
+ gameList = Array.new
111
+ util = Util.new
112
+ begin
113
+ connection = App42::Connection::RESTConnection.new(@base_url)
114
+ query_params = Hash.new
115
+ params = {
116
+ 'apiKey'=> @api_key,
117
+ 'version' => @version,
118
+ 'timeStamp' => util.get_timestamp_utc,
119
+ }
120
+ query_params = params.clone
121
+ signature = util.sign(@secret_key, params)
122
+ resource_url = "#{@version}/#{@resource}"
123
+ response = connection.get(signature, resource_url, query_params)
124
+ puts "Response is #{response}"
125
+ game = GameResponseBuilder.new
126
+ gameList = game.buildArrayResponse(response)
127
+ rescue App42Exception =>e
128
+ raise e
129
+ rescue Exception => e
130
+ raise App42Exception.new(e)
131
+ end
132
+ return gameList
133
+ end
134
+
135
+ #
136
+ # Fetches all games for the App by paging. * @param max Maximum number of
137
+ # records to be fetched
138
+ #
139
+ # @param offset
140
+ # - From where the records are to be fetched
141
+ #
142
+ # @return ArrayList of Game object containing all the games for the App
143
+ #
144
+ # @raise App42Exception
145
+ #
146
+
147
+ def get_all_games_by_paging(max, offset)
148
+ puts "get_all_games_by_paging Called "
149
+ puts "Base url #{@base_url}"
150
+ response = nil;
151
+ gameList = nil;
152
+ gameList = Array.new
153
+ util = Util.new
154
+ util.validateMax(max);
155
+ util.throwExceptionIfNullOrBlank(max, "Max");
156
+ util.throwExceptionIfNullOrBlank(offset, "Offset");
157
+ begin
158
+ connection = App42::Connection::RESTConnection.new(@base_url)
159
+ query_params = Hash.new
160
+ params = {
161
+ 'apiKey'=> @api_key,
162
+ 'version' => @version,
163
+ 'timeStamp' => util.get_timestamp_utc,
164
+ }
165
+ query_params = params.clone
166
+ params.store("max", "" + (max.to_i).to_s)
167
+ params.store("offset", "" + (offset.to_i).to_s)
168
+ signature = util.sign(@secret_key, params)
169
+ resource_url = "#{@version}/#{@resource}/paging/#{(max.to_i).to_s}/#{(offset.to_i).to_s}"
170
+ response = connection.get(signature, resource_url, query_params)
171
+ puts "Response is #{response}"
172
+ game = GameResponseBuilder.new
173
+ gameList = game.buildArrayResponse(response)
174
+ rescue App42Exception =>e
175
+ raise e
176
+ rescue Exception => e
177
+ raise App42Exception.new(e)
178
+ end
179
+ return gameList
180
+ end
181
+
182
+ #
183
+ # Retrieves the game by the specified name
184
+ #
185
+ # @param gameName
186
+ # - Name of the game that has to be fetched
187
+ #
188
+ # @return Game object containing the game which has been created
189
+ #
190
+ # @raise App42Exception
191
+ #
192
+
193
+ def get_game_by_name(gameName)
194
+ puts "Get Games By Name Called "
195
+ puts "Base url #{@base_url}"
196
+ response = nil;
197
+ gameObj = nil;
198
+ gameObj = Game.new
199
+ util = Util.new
200
+ util.throwExceptionIfNullOrBlank(gameName, "Game Name");
201
+ begin
202
+ connection = App42::Connection::RESTConnection.new(@base_url)
203
+ query_params = Hash.new
204
+ params = {
205
+ 'apiKey'=> @api_key,
206
+ 'version' => @version,
207
+ 'timeStamp' => util.get_timestamp_utc,
208
+ }
209
+ query_params = params.clone
210
+ puts params
211
+ params.store("name", gameName)
212
+ puts query_params
213
+ signature = util.sign(@secret_key, params)
214
+ resource_url = "#{@version}/#{@resource}/#{gameName}"
215
+ response = connection.get(signature, resource_url, query_params)
216
+ puts "Response is #{response}"
217
+ game = GameResponseBuilder.new()
218
+ gameObj = game.buildResponse(response)
219
+ rescue App42Exception =>e
220
+ raise e
221
+ rescue Exception => e
222
+ raise App42Exception.new(e)
223
+ end
224
+ return gameObj
225
+ end
226
+
227
+ #
228
+ # Fetches the count of all games for the App
229
+ #
230
+ # @return App42Response object containing count of all the Game for the App
231
+ #
232
+ # @raise App42Exception
233
+ #
234
+
235
+ def get_all_games_count()
236
+ puts "get_all_games_count Called "
237
+ puts "Base url #{@base_url}"
238
+ response = nil;
239
+ responseObj = App42Response.new
240
+ util = Util.new
241
+ begin
242
+ connection = App42::Connection::RESTConnection.new(@base_url)
243
+ query_params = Hash.new
244
+ params = {
245
+ 'apiKey'=> @api_key,
246
+ 'version' => @version,
247
+ 'timeStamp' => util.get_timestamp_utc,
248
+ }
249
+ query_params = params.clone
250
+ puts query_params
251
+ signature = util.sign(@secret_key, params)
252
+ resource_url = "#{@version}/#{@resource}/count"
253
+ response = connection.get(signature, resource_url, query_params)
254
+ responseObj.strResponse=(response)
255
+ responseObj.isResponseSuccess=(true)
256
+ responseObj = GameResponseBuilder.new()
257
+ responseObj.getTotalRecords(response);
258
+ rescue App42Exception =>e
259
+ raise e
260
+ rescue Exception => e
261
+ raise App42Exception.new(e)
262
+ end
263
+ return responseObj
264
+ end
265
+
266
+ end
267
+ end
268
+ end
@@ -0,0 +1,24 @@
1
+ # -----------------------------------------------------------------------
2
+ # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
3
+ # -----------------------------------------------------------------------
4
+
5
+ require 'App42_Ruby_API/App42Response'
6
+
7
+ #
8
+ # This Reward object is the value object which contains the properties of
9
+ # Reward along with the setter & getter for those properties.
10
+ #
11
+
12
+ module App42
13
+ module Game
14
+ class Reward < App42Response
15
+ attr_accessor :gameName, :userName, :name, :points
16
+
17
+ @gameName
18
+ @userName
19
+ @name
20
+ @points
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,85 @@
1
+ # -----------------------------------------------------------------------
2
+ # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
3
+ # -----------------------------------------------------------------------
4
+
5
+ require 'json/pure'
6
+ require 'App42_Ruby_API/App42ResponseBuilder'
7
+ require 'game/Reward'
8
+
9
+ module App42
10
+ module Game
11
+ #
12
+ # RewardResponseBuilder class converts the JSON response retrieved from the
13
+ # server to the value object i.e Reward
14
+ #
15
+ class RewardResponseBuilder < App42ResponseBuilder
16
+ #
17
+ # Converts the response in JSON format to the value object i.e Reward
18
+ #
19
+ # @param json
20
+ # - response in JSON format
21
+ #
22
+ # @return Reward object filled with json data
23
+ #
24
+ #
25
+ def buildResponse(json)
26
+ rewardsJSONObj = getServiceJSONObject("rewards", json)
27
+ rewardJSONObj = rewardsJSONObj["reward"]
28
+ reward = buildRewardObject(rewardJSONObj);
29
+ reward.isResponseSuccess = isResponseSuccess(json)
30
+ reward.strResponse=json
31
+ return reward
32
+ end
33
+
34
+ #
35
+ # Converts the Reward JSON object to the value object i.e Reward
36
+ #
37
+ # @param rewardJSONObj
38
+ # - Reward data as JSONObject
39
+ #
40
+ # @return Reward object filled with json data
41
+ #
42
+ #
43
+
44
+ def buildRewardObject(rewardJSONObj)
45
+ reward = Reward.new()
46
+ buildObjectFromJSONTree(reward, rewardJSONObj);
47
+ return reward
48
+ end
49
+
50
+ #
51
+ # Converts the response in JSON format to the list of value objects i.e
52
+ # Reward
53
+ #
54
+ # @param json
55
+ # - response in JSON format
56
+ #
57
+ # @return List of Reward object filled with json data
58
+ #
59
+ #
60
+
61
+ def buildArrayRewards(json)
62
+ rewardList = Array.new
63
+ rewardsJSONObj = getServiceJSONObject("rewards", json)
64
+ rewardsJSONArray = rewardsJSONObj.fetch("reward");
65
+
66
+ if rewardsJSONObj["reward"].instance_of?(Array)
67
+ rewardsJSONArray.length.times do |i|
68
+ rewardJSONObj = rewardsJSONArray[i]
69
+ reward = buildRewardObject(rewardJSONObj);
70
+ reward.isResponseSuccess = isResponseSuccess(json)
71
+ reward.strResponse=json
72
+ rewardList.push(reward);
73
+ end
74
+ else
75
+ rewardJSONObj = rewardsJSONObj["reward"]
76
+ reward = buildRewardObject(rewardJSONObj);
77
+ reward.strResponse=json
78
+ reward.isResponseSuccess = isResponseSuccess(json)
79
+ rewardList.push(reward);
80
+ end
81
+ return rewardList
82
+ end
83
+ end
84
+ end
85
+ end