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,79 @@
1
+ # -----------------------------------------------------------------------
2
+ # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
3
+ # -----------------------------------------------------------------------
4
+
5
+ require 'App42_Ruby_API/App42Response'
6
+
7
+ #
8
+ #
9
+ # This Catalogue object is the value object which contains the properties of
10
+ # Catalogue.
11
+ #
12
+ #
13
+
14
+ module App42
15
+ module Shopping
16
+ class Catalogue < App42Response
17
+ attr_accessor :name, :description, :categoryList
18
+
19
+ @name
20
+ @description
21
+ @categoryList = Array.new
22
+ end
23
+
24
+ class Category
25
+ attr_accessor :name, :description, :itemList
26
+
27
+ @name
28
+ @description
29
+ @itemList = Array.new
30
+
31
+ #
32
+ # This is a constructor that takes no parameter
33
+ #
34
+ #
35
+ def initialize(catalogue)
36
+ catalogue.categoryList.push(self)
37
+ end
38
+
39
+ #
40
+ # Returns the Cart Response in JSON format.
41
+ #
42
+ # @return the response in JSON format.
43
+ #
44
+
45
+ def to_s
46
+ return "name : #{@name}" + "description : #{@description}";
47
+ end
48
+ end
49
+
50
+ class Item
51
+ attr_accessor :itemId, :name, :description, :url, :price, :tinyUrl
52
+
53
+ @itemId
54
+ @name
55
+ @description
56
+ @url
57
+ @price
58
+ @tinyUrl
59
+
60
+ #
61
+ # This is a constructor that takes no parameter
62
+ #
63
+ def initialize(category)
64
+ category.itemList.push(self)
65
+ end
66
+
67
+ #
68
+ # Returns the Cart Response in JSON format.
69
+ #
70
+ # @return the response in JSON format.
71
+ #
72
+ #
73
+
74
+ def toString
75
+ return "itemId : #{@itemId}" + "name : #{@name}" + "description : #{@description}" + "url : #{@url}" + "price : #{@price}";
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,170 @@
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 'shopping/Catalogue'
8
+
9
+ module App42
10
+ module Shopping
11
+
12
+ #
13
+ #
14
+ # CatalogueResponseBuilder class converts the JSON response retrieved from the
15
+ # server to the value object i.e Catalogue
16
+ #
17
+ #
18
+ class CatalogueResponseBuilder < App42ResponseBuilder
19
+
20
+ #
21
+ # Converts the response in JSON format to the value object i.e Catalogue
22
+ #
23
+ # @param json
24
+ # - response in JSON format
25
+ #
26
+ # @return Catalogue object filled with json data
27
+ #
28
+ #
29
+ def buildResponse(json)
30
+ puts "testing #{json}"
31
+ cataloguesJSONObject = getServiceJSONObject("catalogues", json);
32
+
33
+ catalogueJSONObject = cataloguesJSONObject.fetch("catalogue")
34
+ catalogue = buildCatalogueObject(catalogueJSONObject);
35
+
36
+ catalogue.strResponse=json
37
+ catalogue.isResponseSuccess = isResponseSuccess(json)
38
+
39
+ return catalogue
40
+ end
41
+
42
+ #
43
+ # Converts the response in JSON format to the list of value objects i.e
44
+ # Catalogue
45
+ #
46
+ # @param response
47
+ # - response in JSON format
48
+ #
49
+ # @return List of Catalogue object filled with json data
50
+ #
51
+ #
52
+
53
+ def buildArrayResponse(json)
54
+ cataloguesJSONObject = getServiceJSONObject("catalogues", json);
55
+ catalogueList = Array.new
56
+
57
+ if cataloguesJSONObject["catalogue"].instance_of?(Array)
58
+ catalogueJSONArray = cataloguesJSONObject.fetch("catalogue");
59
+ catalogueJSONArray.length.times do |i|
60
+ catalogueJSONObj = catalogueJSONArray[i]
61
+ # catalogue = Catalogue.new
62
+ catalogue = buildCatalogueObject(catalogueJSONObj);
63
+ catalogue.strResponse=json
64
+ catalogue.isResponseSuccess = isResponseSuccess(json)
65
+ catalogueList.push(catalogue)
66
+ end
67
+ else
68
+ catalogueJSONObj = cataloguesJSONObject["catalogue"]
69
+ catalogue = buildCatalogueObject(catalogueJSONObj);
70
+ catalogue.strResponse=json
71
+ catalogue.isResponseSuccess = isResponseSuccess(json)
72
+ catalogueList.push(catalogue)
73
+ end
74
+ return catalogueList
75
+ end
76
+
77
+ #
78
+ # Converts the User JSON object to the value object i.e Catalogue
79
+ #
80
+ # @param catalogueJSONObj
81
+ # - Catalogue data as JSONObject
82
+ #
83
+ # @return Catalogue object filled with json data
84
+ #
85
+
86
+ def buildCatalogueObject(catalogueJSONObj)
87
+ catalogue = Catalogue.new();
88
+ categoryList = Array.new
89
+ catalogue.categoryList = categoryList
90
+ buildObjectFromJSONTree(catalogue, catalogueJSONObj);
91
+
92
+ if catalogueJSONObj.key?("categories") && catalogueJSONObj.fetch("categories").key?("category")
93
+ #Fetch Category
94
+
95
+ if catalogueJSONObj.fetch("categories").fetch("category").instance_of?(Hash)
96
+ #Single Category
97
+
98
+ categoryJSONObj = catalogueJSONObj.fetch("categories").fetch("category");
99
+ catalogueCategory = App42::Shopping::Category.new(catalogue)
100
+ itemList = Array.new
101
+ catalogueCategory.itemList=(itemList)
102
+ buildObjectFromJSONTree(catalogueCategory, categoryJSONObj);
103
+
104
+ #Check for Items Now
105
+ if(categoryJSONObj.key?("items") && categoryJSONObj.fetch("items").key?("item"))
106
+
107
+ if categoryJSONObj.fetch("items").fetch("item").instance_of?(Hash)
108
+
109
+ #Single Item
110
+ itemJSONObj = categoryJSONObj.fetch("items").fetch("item");
111
+ item = App42::Shopping::Item.new(catalogueCategory)
112
+ buildObjectFromJSONTree(item, itemJSONObj);
113
+
114
+ else
115
+
116
+ # Multiple Items
117
+ categoryJSONArray = categoryJSONObj.fetch("items").fetch("item");
118
+
119
+ categoryJSONArray.length.times do |j|
120
+ itemJSONObj = categoryJSONArray[j]
121
+ item = App42::Shopping::Item.new(catalogueCategory)
122
+ buildObjectFromJSONTree(item, itemJSONObj);
123
+ end
124
+ end
125
+ end
126
+
127
+ else
128
+ #Multiple Categories
129
+
130
+ itemJSONArray = catalogueJSONObj.fetch("categories").fetch("category");
131
+
132
+ itemJSONArray.length.times do |j|
133
+ categoryJSONObj = itemJSONArray(j)
134
+ catalogueCategory = App42::Shopping::Category.new(catalogue)
135
+ buildObjectFromJSONTree(catalogueCategory, categoryJSONObj);
136
+
137
+ # Check for Items Now
138
+ if categoryJSONObj.key?("items") && categoryJSONObj.fetch("items").key?("item")
139
+
140
+ if categoryJSONObj.fetch("items").fetch("item").instance_of?(Hash)
141
+
142
+ #Single Item
143
+ itemJSONObj = categoryJSONObj.fetch("items").fetch("item");
144
+ item = App42::Shopping::Item.new(catalogueCategory)
145
+ itemList = Array.new
146
+ catalogueCategory.itemList=(itemList)
147
+ buildObjectFromJSONTree(item, itemJSONObj);
148
+
149
+ else
150
+
151
+ #Multiple Items
152
+ categoryJSONArray = categoryJSONObj.fetch("items").fetch("item");
153
+ categoryJSONArray.length.times do |j|
154
+ itemJSONObj = categoryJSONArray(j)
155
+ item = App42::Shopping::Item.new(catalogueCategory)
156
+ buildObjectFromJSONTree(item, itemJSONObj);
157
+ end
158
+
159
+ end
160
+ end
161
+ end
162
+ end
163
+ end
164
+
165
+ return catalogue;
166
+ end
167
+
168
+ end
169
+ end
170
+ end
@@ -0,0 +1,649 @@
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 'shopping/CatalogueResponseBuilder'
11
+ require 'App42_Ruby_API/App42Exception'
12
+ require 'shopping/Catalogue'
13
+ require 'shopping/ItemData'
14
+
15
+ module App42
16
+ module Shopping
17
+ #
18
+ # This Service provides a complete cloud based catalogue management. An app can keep
19
+ # all its items based on category on the Cloud. This service provides several utility
20
+ # methods to manage catalogue on the cloud.
21
+ #
22
+ # One can add items with its related information in a particular category. And there can
23
+ # be several categories in a catalogue. The App developer can create several catalogues if needed.
24
+ #
25
+ # The Cart service can be used along with Catalogue service to create an end to end Shopping feature for
26
+ # a Mobile and Web App.
27
+ #
28
+ # @see Cart, ItemData
29
+ #
30
+ class CatalogueService
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 "Shopping ->initialize"
40
+ @api_key = api_key
41
+ @secret_key = secret_key
42
+ @base_url = base_url
43
+ @resource = "catalogue"
44
+ @version = "1.0"
45
+ end
46
+
47
+ #
48
+ # Creates a Catalogue for a particular App. Categories can be added to the Catalogue
49
+ #
50
+ # @param catalogueName
51
+ # - Name of the Catalogue to be created
52
+ # @param catalogueDescription
53
+ # - Description of the catalogue to be createds
54
+ #
55
+ # @return Catalogue object
56
+ #
57
+ # @raise App42Exception
58
+ #
59
+
60
+ def create_catalogue(catalogueName, catalogueDescription)
61
+ puts "Create Catalogue Called "
62
+ puts "Base url #{catalogueDescription}"
63
+ response = nil;
64
+ catalogueObj = nil;
65
+ catalogueObj = Catalogue.new
66
+ util = Util.new
67
+ util.throwExceptionIfNullOrBlank(catalogueName, "catalogueName");
68
+ util.throwExceptionIfNullOrBlank(catalogueDescription, "catalogueDescription");
69
+ begin
70
+ connection = App42::Connection::RESTConnection.new(@base_url)
71
+ body = {'app42' => {"catalogue"=> {
72
+ "name" => catalogueName,
73
+ "description" => catalogueDescription
74
+ }}}.to_json
75
+ puts "Body #{body}"
76
+ query_params = Hash.new
77
+ params = {
78
+ 'apiKey'=> @api_key,
79
+ 'version' => @version,
80
+ 'timeStamp' => util.get_timestamp_utc,
81
+ }
82
+ query_params = params.clone
83
+ params.store("body", body)
84
+ signature = util.sign(@secret_key, params)
85
+ resource_url = "#{@version}/#{@resource}"
86
+ response = connection.post(signature, resource_url, query_params, body)
87
+ catalogue = CatalogueResponseBuilder.new()
88
+ catalogueObj = catalogue.buildResponse(response)
89
+ rescue App42Exception =>e
90
+ raise e
91
+ rescue Exception => e
92
+ raise App42Exception.new(e)
93
+ end
94
+ return catalogueObj
95
+ end
96
+
97
+ #
98
+ # Creates a Category for a particular Catalogue e.g. Books, Music etc.
99
+ #
100
+ # @param catalogueName
101
+ # - Name of the Catalogue for which Category has to be created
102
+ # @param categoryName
103
+ # - Name of the Category that has to be created
104
+ # @param categoryDescription
105
+ # - Description of the category to be created
106
+ #
107
+ # @return Catalogue object containing created category information
108
+ #
109
+ # @raise App42Exception
110
+ #
111
+
112
+ def create_category(catalogueName, categoryName, categoryDescription)
113
+ puts "Create Category Called "
114
+ puts "Base url #{@base_url}"
115
+ response = nil;
116
+ catalogueObj = nil;
117
+ catalogueObj = Catalogue.new
118
+ util = Util.new
119
+ util.throwExceptionIfNullOrBlank(catalogueName, "catalogueName");
120
+ util.throwExceptionIfNullOrBlank(categoryName, "categoryName");
121
+ util.throwExceptionIfNullOrBlank(categoryDescription, "categoryDescription");
122
+ begin
123
+ connection = App42::Connection::RESTConnection.new(@base_url)
124
+ body = {'app42' => {"catalogue"=> {"categories"=> {"category" =>
125
+ { "name" => categoryName,
126
+ "description" => categoryDescription,
127
+ }}}}}.to_json
128
+ puts "Body #{body}"
129
+ query_params = Hash.new
130
+ params = {
131
+ 'apiKey'=> @api_key,
132
+ 'version' => @version,
133
+ 'timeStamp' => util.get_timestamp_utc,
134
+ }
135
+ query_params = params.clone
136
+ params.store("body", body)
137
+ params.store("catalogueName", catalogueName)
138
+ signature = util.sign(@secret_key, params)
139
+ resource_url = "#{@version}/#{@resource}/#{catalogueName}/category"
140
+ response = connection.post(signature, resource_url, query_params, body)
141
+ catalogue = CatalogueResponseBuilder.new()
142
+ catalogueObj = catalogue.buildResponse(response)
143
+ rescue App42Exception =>e
144
+ raise e
145
+ rescue Exception => e
146
+ raise App42Exception.new(e)
147
+ end
148
+ return catalogueObj
149
+ end
150
+
151
+ #
152
+ # Creates a Item in a Category for a particular Catelogue
153
+ #
154
+ # @param catalogueName
155
+ # - Name of the Catalogue to which item has to be added
156
+ # @param categoryName
157
+ # - Name of the Category to which item has to be added
158
+ # @param itemData
159
+ # - Item Information that has to be added
160
+ #
161
+ # @return Catalogue object containing added item.
162
+ #
163
+ # @raise App42Exception
164
+ #
165
+ # @see ItemData
166
+ #
167
+
168
+ def add_item(catalogueName, categoryName, itemData)
169
+ puts "Add Item Called "
170
+ puts "Base url #{@base_url}"
171
+ response = nil;
172
+ catalogueObj = nil;
173
+ catalogueObj = Catalogue.new
174
+ util = Util.new
175
+ util.throwExceptionIfNullOrBlank(catalogueName, "CatalogueName");
176
+ util.throwExceptionIfNullOrBlank(categoryName, "CategoryName");
177
+ util.throwExceptionIfNullOrBlank(itemData, "ItemData");
178
+ file = File.new(itemData.image())
179
+ if (FileTest.exists?(file) == false)
180
+ raise App42Exception.new("The file with the name #{file} not found")
181
+ end
182
+ begin
183
+ puts "file is #{file} and #{itemData.itemId}"
184
+ connection = App42::Connection::RESTConnection.new(@base_url)
185
+ query_params = Hash.new
186
+ post_params=Hash.new
187
+ query_params = {
188
+ 'apiKey'=> @api_key,
189
+ 'version' => @version,
190
+ 'timeStamp' => util.get_timestamp_utc,
191
+ 'catalogueName' => catalogueName,
192
+ 'categoryName' => categoryName
193
+ }
194
+ params = query_params.clone
195
+ post_params.store("itemId",itemData.itemId)
196
+ post_params.store("name",itemData.name)
197
+ post_params.store("description",itemData.description)
198
+ post_params.store("price",(itemData.price.to_i).to_s)
199
+ params = params.merge(post_params)
200
+ signature = util.sign(@secret_key, params)
201
+ resource_url = "#{@version}/#{@resource}/#{catalogueName}/#{categoryName}/item"
202
+ response = connection.shopMultipart(signature, resource_url, query_params, params, file)
203
+ catalogue = CatalogueResponseBuilder.new()
204
+ catalogueObj = catalogue.buildResponse(response)
205
+ rescue App42Exception =>e
206
+ raise e
207
+ rescue Exception => e
208
+ raise App42Exception.new(e)
209
+ end
210
+ return catalogueObj
211
+ end
212
+
213
+ #
214
+ # Fetches all items for a Catalogue
215
+ #
216
+ # @param catalogueName
217
+ # - Name of the Catalogue from which item has to be fetched
218
+ #
219
+ # @return Catalogue object containing all Items
220
+ #
221
+ # @raise App42Exception
222
+ #
223
+
224
+ def get_items(catalogueName)
225
+ puts "Get Items Called "
226
+ puts "Base url #{@base_url}"
227
+ response = nil;
228
+ catalogueObj = nil;
229
+ catalogueObj = Catalogue.new
230
+ util = Util.new
231
+ util.throwExceptionIfNullOrBlank(catalogueName, "catalogueName");
232
+ begin
233
+ connection = App42::Connection::RESTConnection.new(@base_url)
234
+ query_params = Hash.new
235
+ params = {
236
+ 'apiKey'=> @api_key,
237
+ 'version' => @version,
238
+ 'timeStamp' => util.get_timestamp_utc,
239
+ }
240
+ query_params = params.clone
241
+ puts params
242
+ params.store("catalogueName", catalogueName)
243
+ puts query_params
244
+ signature = util.sign(@secret_key, params)
245
+ resource_url = "#{@version}/#{@resource}/#{catalogueName}"
246
+ response = connection.get(signature, resource_url, query_params)
247
+ catalogue = CatalogueResponseBuilder.new
248
+ catalogueObj = catalogue.buildResponse(response)
249
+ rescue App42Exception =>e
250
+ raise e
251
+ rescue Exception => e
252
+ raise App42Exception.new(e)
253
+ end
254
+ return catalogueObj
255
+ end
256
+
257
+ #
258
+ # Fetches all items for a Catalogue and Category
259
+ #
260
+ # @param catalogueName
261
+ # - Name of the Catalogue from which item has to be fetched
262
+ # @param categoryName
263
+ # - Name of the Category from which item has to be fetched
264
+ #
265
+ # @return Catalogue object
266
+ #
267
+ # @raise App42Exception
268
+ #
269
+
270
+ def get_items_by_category(catalogueName, categoryName)
271
+ puts "Get Items By Category Called "
272
+ puts "Base url #{@base_url}"
273
+ response = nil;
274
+ catalogueObj = nil;
275
+ catalogueObj = Catalogue.new
276
+ util = Util.new
277
+ util.throwExceptionIfNullOrBlank(catalogueName, "catalogueName");
278
+ util.throwExceptionIfNullOrBlank(categoryName, "categoryName");
279
+ begin
280
+ connection = App42::Connection::RESTConnection.new(@base_url)
281
+ query_params = Hash.new
282
+ params = {
283
+ 'apiKey'=> @api_key,
284
+ 'version' => @version,
285
+ 'timeStamp' => util.get_timestamp_utc,
286
+ }
287
+ query_params = params.clone
288
+ params.store("catalogueName", catalogueName)
289
+ params.store("categoryName", categoryName)
290
+ puts query_params
291
+ signature = util.sign(@secret_key, params)
292
+ resource_url = "#{@version}/#{@resource}/#{catalogueName}/#{categoryName}"
293
+ response = connection.get(signature, resource_url, query_params)
294
+ catalogue = CatalogueResponseBuilder.new
295
+ catalogueObj = catalogue.buildResponse(response)
296
+ rescue App42Exception =>e
297
+ raise e
298
+ rescue Exception => e
299
+ raise App42Exception.new(e)
300
+ end
301
+ return catalogueObj
302
+ end
303
+
304
+ #
305
+ # Fetches Item by id for a Catalogue and Category
306
+ #
307
+ # @param catalogueName
308
+ # - Name of the Catalogue from which item has to be fetched
309
+ # @param categoryName
310
+ # - Name of the Category from which item has to be fetched
311
+ # @param itemId
312
+ # - Item id for which information has to be fetched.
313
+ #
314
+ # @return Catalogue object
315
+ #
316
+ # @raise App42Exception
317
+ #
318
+
319
+ def get_item_by_id(catalogueName, categoryName, itemId)
320
+ puts "Get Items By ID Called "
321
+ puts "Base url #{@base_url}"
322
+ response = nil;
323
+ catalogueObj = nil;
324
+ catalogueObj = Catalogue.new
325
+ util = Util.new
326
+ util.throwExceptionIfNullOrBlank(catalogueName, "catalogueName");
327
+ util.throwExceptionIfNullOrBlank(categoryName, "categoryName");
328
+ util.throwExceptionIfNullOrBlank(itemId, "itemId");
329
+ begin
330
+ connection = App42::Connection::RESTConnection.new(@base_url)
331
+ query_params = Hash.new
332
+ params = {
333
+ 'apiKey'=> @api_key,
334
+ 'version' => @version,
335
+ 'timeStamp' => util.get_timestamp_utc,
336
+ }
337
+ query_params = params.clone
338
+ puts params
339
+ params.store("catalogueName", catalogueName)
340
+ params.store("categoryName", categoryName)
341
+ params.store("itemId", itemId)
342
+ puts query_params
343
+ signature = util.sign(@secret_key, params)
344
+ resource_url = "#{@version}/#{@resource}/#{catalogueName}/#{categoryName}/#{itemId}"
345
+ response = connection.get(signature, resource_url, query_params)
346
+ catalogue = CatalogueResponseBuilder.new
347
+ catalogueObj = catalogue.buildResponse(response)
348
+ rescue App42Exception =>e
349
+ raise e
350
+ rescue Exception => e
351
+ raise App42Exception.new(e)
352
+ end
353
+ return catalogueObj
354
+ end
355
+
356
+ #
357
+ # Removes all Items in a Catalogue
358
+ #
359
+ # @param catalogueName
360
+ # - Name of the Catalogue from which item has to be removed
361
+ #
362
+ # @return Catalogue object containing removed items
363
+ #
364
+ # @raise App42Exception
365
+ #
366
+
367
+ def remove_all_items(catalogueName)
368
+ puts "Remove All Items Called "
369
+ puts "Base url #{@base_url}"
370
+ response = nil;
371
+ responseObj = App42Response.new();
372
+ util = Util.new
373
+ util.throwExceptionIfNullOrBlank(catalogueName, "catalogueName");
374
+ begin
375
+ connection = App42::Connection::RESTConnection.new(@base_url)
376
+ query_params = Hash.new
377
+ params = {
378
+ 'apiKey'=> @api_key,
379
+ 'version' => @version,
380
+ 'timeStamp' => util.get_timestamp_utc,
381
+ }
382
+ query_params = params.clone
383
+ puts params
384
+ params.store("catalogueName", catalogueName)
385
+ puts query_params
386
+ signature = util.sign(@secret_key, params)
387
+ resource_url = "#{@version}/#{@resource}/#{catalogueName}"
388
+ response = connection.delete(signature, resource_url, query_params)
389
+ responseObj.strResponse=(response)
390
+ responseObj.isResponseSuccess=(true)
391
+ rescue App42Exception =>e
392
+ raise e
393
+ rescue Exception => e
394
+ raise App42Exception.new(e)
395
+ end
396
+ return responseObj
397
+ end
398
+
399
+ #
400
+ # Removes all Items from a Catalogue and Category
401
+ #
402
+ # @param catalogueName
403
+ # - Name of the Catalogue from which item has to be removed
404
+ # @param categoryName
405
+ # - Name of the Category from which item has to be removed
406
+ #
407
+ # @return Catalogue object containing removed item
408
+ #
409
+ # @raise App42Exception
410
+ #
411
+
412
+ def remove_items_by_category(catalogueName, categoryName)
413
+ puts "Remove Items By Category Called "
414
+ puts "Base url #{@base_url}"
415
+ response = nil;
416
+ responseObj = App42Response.new();
417
+ util = Util.new
418
+ util.throwExceptionIfNullOrBlank(catalogueName, "catalogueName");
419
+ util.throwExceptionIfNullOrBlank(categoryName, "categoryName");
420
+ begin
421
+ connection = App42::Connection::RESTConnection.new(@base_url)
422
+ query_params = Hash.new
423
+ params = {
424
+ 'apiKey'=> @api_key,
425
+ 'version' => @version,
426
+ 'timeStamp' => util.get_timestamp_utc,
427
+ }
428
+ query_params = params.clone
429
+ puts params
430
+ params.store("catalogueName", catalogueName)
431
+ params.store("categoryName", categoryName)
432
+ puts query_params
433
+ signature = util.sign(@secret_key, params)
434
+ resource_url = "#{@version}/#{@resource}/#{catalogueName}/#{categoryName}"
435
+ response = connection.delete(signature, resource_url, query_params)
436
+ responseObj.strResponse=(response)
437
+ responseObj.isResponseSuccess=(true)
438
+ rescue App42Exception =>e
439
+ raise e
440
+ rescue Exception => e
441
+ raise App42Exception.new(e)
442
+ end
443
+ return responseObj
444
+ end
445
+
446
+ #
447
+ # Removes Item by Id
448
+ #
449
+ # @param catalogueName
450
+ # - Name of the Catalogue from which item has to be removed
451
+ # @param categoryName
452
+ # - Name of the Category from which item has to be removed
453
+ # @param itemId
454
+ # - Item id which has to be removed
455
+ #
456
+ # @return Catalogue object containing removed item
457
+ #
458
+ # @raise App42Exception
459
+ #
460
+
461
+ def remove_item_by_id(catalogueName, categoryName, itemId)
462
+ puts "Remove Items By ID Called "
463
+ puts "Base url #{@base_url}"
464
+ response = nil;
465
+ responseObj = App42Response.new();
466
+ util = Util.new
467
+ util.throwExceptionIfNullOrBlank(catalogueName, "catalogueName");
468
+ util.throwExceptionIfNullOrBlank(categoryName, "categoryName");
469
+ util.throwExceptionIfNullOrBlank(itemId, "itemId");
470
+ begin
471
+ connection = App42::Connection::RESTConnection.new(@base_url)
472
+ query_params = Hash.new
473
+ params = {
474
+ 'apiKey'=> @api_key,
475
+ 'version' => @version,
476
+ 'timeStamp' => util.get_timestamp_utc,
477
+ }
478
+ query_params = params.clone
479
+ puts params
480
+ params.store("catalogueName", catalogueName)
481
+ params.store("categoryName", categoryName)
482
+ params.store("itemId", itemId)
483
+ puts query_params
484
+ signature = util.sign(@secret_key, params)
485
+ resource_url = "#{@version}/#{@resource}/#{catalogueName}/#{categoryName}/#{itemId}"
486
+ response = connection.delete(signature, resource_url, query_params)
487
+ responseObj.strResponse=(response)
488
+ responseObj.isResponseSuccess=(true)
489
+ rescue App42Exception =>e
490
+ raise e
491
+ rescue Exception => e
492
+ raise App42Exception.new(e)
493
+ end
494
+ return responseObj
495
+ end
496
+
497
+ #
498
+ # Fetches all items for a Catalogue and Category by paging.
499
+ #
500
+ # @param catalogueName
501
+ # - Name of the Catalogue from which item has to be fetched
502
+ # @param categoryName
503
+ # - Name of the Category from which item has to be fetched
504
+ # @param max
505
+ # - Maximum number of records to be fetched
506
+ # @param offset
507
+ # - From where the records are to be fetched
508
+ #
509
+ # @return Catalogue object
510
+ #
511
+ # @raise App42Exception
512
+ #
513
+
514
+ def get_items_by_category_by_paging(catalogueName, categoryName, max, offset)
515
+ puts "Get Items By Category Called "
516
+ puts "Base url #{@base_url}"
517
+ response = nil;
518
+ catalogueObj = nil;
519
+ catalogueObj = Catalogue.new
520
+ util = Util.new
521
+ util.validateMax(max);
522
+ util.throwExceptionIfNullOrBlank(catalogueName, "catalogueName");
523
+ util.throwExceptionIfNullOrBlank(categoryName, "categoryName");
524
+ util.throwExceptionIfNullOrBlank(max, "Max");
525
+ util.throwExceptionIfNullOrBlank(offset, "Offset");
526
+ begin
527
+ connection = App42::Connection::RESTConnection.new(@base_url)
528
+ query_params = Hash.new
529
+ params = {
530
+ 'apiKey'=> @api_key,
531
+ 'version' => @version,
532
+ 'timeStamp' => util.get_timestamp_utc,
533
+ }
534
+ query_params = params.clone
535
+ params.store("catalogueName", catalogueName)
536
+ params.store("categoryName", categoryName)
537
+ params.store("max", "" + (max.to_i).to_s);
538
+ params.store("offset", "" + (offset.to_i).to_s);
539
+ puts query_params
540
+ signature = util.sign(@secret_key, params)
541
+ resource_url = "#{@version}/#{@resource}/paging/#{catalogueName}/#{categoryName}/#{(max.to_i).to_s}/#{(offset.to_i).to_s}"
542
+ response = connection.get(signature, resource_url, query_params)
543
+ catalogue = CatalogueResponseBuilder.new
544
+ catalogueObj = catalogue.buildResponse(response)
545
+ rescue App42Exception =>e
546
+ raise e
547
+ rescue Exception => e
548
+ raise App42Exception.new(e)
549
+ end
550
+ return catalogueObj
551
+ end
552
+
553
+ #
554
+ # Fetches count of all items for a Catalogue and Category
555
+ #
556
+ # @param catalogueName
557
+ # - Name of the Catalogue from which count of item has to be fetched
558
+ # @param categoryName
559
+ # - Name of the Category from which count of item has to be fetched
560
+ #
561
+ # @return App42Response object
562
+ #
563
+ # @raise App42Exception
564
+ #
565
+
566
+ def get_items_count_by_category(catalogueName, categoryName)
567
+ puts "get_items_count_by_category Called "
568
+ puts "Base url #{@base_url}"
569
+ response = nil;
570
+ responseObj = App42Response.new
571
+ util = Util.new
572
+ util.throwExceptionIfNullOrBlank(catalogueName, "CatalogueName");
573
+ util.throwExceptionIfNullOrBlank(categoryName, "CategoryName");
574
+ begin
575
+ connection = App42::Connection::RESTConnection.new(@base_url)
576
+ query_params = Hash.new
577
+ params = {
578
+ 'apiKey'=> @api_key,
579
+ 'version' => @version,
580
+ 'timeStamp' => util.get_timestamp_utc,
581
+ }
582
+ query_params = params.clone
583
+ params.store("catalogueName", catalogueName);
584
+ params.store("categoryName", categoryName);
585
+ puts query_params
586
+ signature = util.sign(@secret_key, params)
587
+ resource_url = "#{@version}/#{@resource}/#{catalogueName}/#{categoryName}/count"
588
+ response = connection.get(signature, resource_url, query_params)
589
+ responseObj.strResponse = response
590
+ responseObj.isResponseSuccess = true
591
+ responseObj = CatalogueResponseBuilder.new()
592
+ responseObj.getTotalRecords(response);
593
+ rescue App42Exception =>e
594
+ raise e
595
+ rescue Exception => e
596
+ raise App42Exception.new(e)
597
+ end
598
+ return responseObj
599
+ end
600
+
601
+ #
602
+ # Deletes category
603
+ #
604
+ # @param catalogueName
605
+ # - Name of the Catalogue from which count of item has to be fetched
606
+ # @param categoryName
607
+ # - Name of the Category from which count of item has to be fetched
608
+ #
609
+ # @return App42Response object
610
+ #
611
+ # @raise App42Exception
612
+ #
613
+
614
+ def delete_category(catalogueName, categoryName)
615
+ puts "deleteCategory Called "
616
+ puts "Base url #{@base_url}"
617
+ response = nil;
618
+ responseObj = App42Response.new
619
+ util = Util.new
620
+ util.throwExceptionIfNullOrBlank(catalogueName, "CatalogueName");
621
+ util.throwExceptionIfNullOrBlank(categoryName, "CategoryName");
622
+ begin
623
+ connection = App42::Connection::RESTConnection.new(@base_url)
624
+ query_params = Hash.new
625
+ params = {
626
+ 'apiKey'=> @api_key,
627
+ 'version' => @version,
628
+ 'timeStamp' => util.get_timestamp_utc,
629
+ }
630
+ query_params = params.clone
631
+ params.store("catalogueName", catalogueName);
632
+ params.store("categoryName", categoryName);
633
+ puts query_params
634
+ signature = util.sign(@secret_key, params)
635
+ resource_url = "#{@version}/#{@resource}/#{catalogueName}/category/#{categoryName}"
636
+ response = connection.delete(signature, resource_url, query_params)
637
+ responseObj.strResponse = response
638
+ responseObj.isResponseSuccess = true
639
+ rescue App42Exception => e
640
+ raise e
641
+ rescue Exception => e
642
+ raise App42Exception.new(e)
643
+ end
644
+ return responseObj
645
+ end
646
+
647
+ end
648
+ end
649
+ end