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,591 @@
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 'gallery/AlbumResponseBuilder'
11
+ require 'gallery/Album'
12
+
13
+ module App42
14
+ module Gallery
15
+ #
16
+ # Adds Photo to the created Album on the Cloud
17
+ # All photos for a given Album can be managed through this service. Photos can be uploaded
18
+ # to the cloud. Uploaded photos are accessible through the generated URL.
19
+ # The service also creates a thumbnail for the Photo which has been uploaded.
20
+ #
21
+ # @see Album
22
+ # @see Photo
23
+ #
24
+ class PhotoService
25
+ #
26
+ # this is a constructor that takes
27
+ #
28
+ # @param apiKey
29
+ # @param secretKey
30
+ # @param baseURL
31
+ #
32
+ def initialize(api_key, secret_key, base_url)
33
+ puts "Photo Gallery->initialize"
34
+ @api_key = api_key
35
+ @secret_key = secret_key
36
+ @base_url = base_url
37
+ @resource = "gallery"
38
+ @version = "1.0"
39
+ end
40
+
41
+ #
42
+ # Adds Photo for a particular user and album. The Photo is uploaded on the cloud
43
+ #
44
+ # @param userName
45
+ # - Name of the User whose photo has to be added
46
+ # @param albumName
47
+ # - Name of the Album in which photo has to be added
48
+ # @param photoName
49
+ # - Name of the Photo that has to be added
50
+ # @param photoDescription
51
+ # - Description of the Photo that has to be added
52
+ # @param path
53
+ # - Path from where Photo has to be picked for addition
54
+ #
55
+ # @return Album object containing the Photo which has been added
56
+ #
57
+ # @raise App42Exception
58
+ #
59
+
60
+ def add_photo(userName, albumName, photoName, photoDescription, path)
61
+ puts "Add photo called "
62
+ puts "Base url #{@base_url}"
63
+ response = nil;
64
+ photoObj = nil;
65
+ photoObj = Album.new
66
+ util = Util.new
67
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
68
+ util.throwExceptionIfNullOrBlank(albumName, "Album Name");
69
+ util.throwExceptionIfNullOrBlank(photoName, "Photo Name");
70
+ util.throwExceptionIfNullOrBlank(photoDescription, "Description");
71
+ util.throwExceptionIfNullOrBlank(path, "Path");
72
+ if (FileTest.exists?(path) == false)
73
+ raise App42Exception.new("The file with the name #{path} not found")
74
+ end
75
+ begin
76
+ connection = App42::Connection::RESTConnection.new(@base_url)
77
+ params = Hash.new
78
+ query_params = Hash.new
79
+ query_params = {
80
+ 'apiKey'=> @api_key,
81
+ 'version' => @version,
82
+ 'timeStamp' => util.get_timestamp_utc,
83
+ }
84
+ params = query_params.clone
85
+ post_params = Hash.new
86
+ post_params.store("userName", userName);
87
+ post_params.store("albumName", albumName);
88
+ post_params.store("name", photoName);
89
+ post_params.store("description", photoDescription);
90
+ params = params.merge(post_params)
91
+ signature = util.sign(@secret_key, params)
92
+ resource_url = "#{@version}/#{@resource}/#{userName}"
93
+ response = connection.photoMultipart(signature, resource_url, query_params, params, path)
94
+ puts "Response is #{response}"
95
+ album = AlbumResponseBuilder.new()
96
+ photoObj = album.buildResponse(response)
97
+ rescue App42Exception =>e
98
+ raise e
99
+ rescue Exception => e
100
+ raise App42Exception.new(e)
101
+ end
102
+ return photoObj
103
+ end
104
+
105
+ #
106
+ # Adds Photo for a particular user and album via Stream. The Photo is uploaded on the cloud
107
+ #
108
+ # @param userName
109
+ # - Name of the User whose photo has to be added
110
+ # @param albumName
111
+ # - Name of the Album in which photo has to be added
112
+ # @param photoName
113
+ # - Name of the Photo that has to be added
114
+ # @param photoDescription
115
+ # - Description of the Photo that has to be added
116
+ # @param spath
117
+ # - Input Stream for the Photo that has to be added
118
+ #
119
+ # @return Album object containing the Photo which has been added
120
+ #
121
+ # @raise App42Exception
122
+ #
123
+
124
+ def add_photo_with_stream(userName, albumName, photoName, photoDescription, spath)
125
+ puts "Add photo with Stream called "
126
+ puts "Base url #{@base_url}"
127
+ response = nil;
128
+ photoObj = nil;
129
+ photoObj = Album.new
130
+ util = Util.new
131
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
132
+ util.throwExceptionIfNullOrBlank(albumName, "Album Name");
133
+ util.throwExceptionIfNullOrBlank(photoName, "Photo Name");
134
+ util.throwExceptionIfNullOrBlank(photoDescription, "Description");
135
+ util.throwExceptionIfNullOrBlank(spath, "Path");
136
+ if (FileTest.exists?(spath) == false)
137
+ raise App42Exception.new("The file with the name #{spath} not found")
138
+ end
139
+ begin
140
+ connection = App42::Connection::RESTConnection.new(@base_url)
141
+ params = Hash.new
142
+ query_params = Hash.new
143
+ query_params = {
144
+ 'apiKey'=> @api_key,
145
+ 'version' => @version,
146
+ 'timeStamp' => util.get_timestamp_utc,
147
+ }
148
+ params = query_params.clone
149
+ post_params = Hash.new
150
+ post_params.store("userName", userName);
151
+ post_params.store("albumName", albumName);
152
+ post_params.store("name", photoName);
153
+ post_params.store("description", photoDescription);
154
+ params = params.merge(post_params)
155
+ signature = util.sign(@secret_key, params)
156
+ resource_url = "#{@version}/#{@resource}/#{userName}"
157
+ response = connection.photoMultipartStream(signature, resource_url, query_params, params, spath)
158
+ puts "Response is #{response}"
159
+ album = AlbumResponseBuilder.new()
160
+ photoObj = album.buildResponse(response)
161
+ rescue App42Exception =>e
162
+ raise e
163
+ rescue Exception => e
164
+ raise App42Exception.new(e)
165
+ end
166
+ return photoObj
167
+ end
168
+
169
+ #
170
+ # Fetch all the Photos based on the userName
171
+ #
172
+ # @param userName
173
+ # - Name of the User whose photos have to be fetched
174
+ #
175
+ # @return ArrayList of Album object containing all the Photos for the given userName
176
+ #
177
+ # @raise App42Exception
178
+ #
179
+
180
+ def get_photos(userName)
181
+ puts "Get Photos Called "
182
+ puts "Base url #{@base_url}"
183
+ response = nil;
184
+ albumList = nil;
185
+ albumList = Array.new
186
+ util = Util.new
187
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
188
+ begin
189
+ connection = App42::Connection::RESTConnection.new(@base_url)
190
+ query_params = Hash.new
191
+ params = {
192
+ 'apiKey'=> @api_key,
193
+ 'version' => @version,
194
+ 'timeStamp' => util.get_timestamp_utc,
195
+ }
196
+ query_params = params.clone
197
+ params.store("userName", userName)
198
+ puts query_params
199
+ signature = util.sign(@secret_key, params)
200
+ resource_url = "#{@version}/#{@resource}/#{userName}"
201
+ response = connection.get(signature, resource_url, query_params)
202
+ photo = AlbumResponseBuilder.new()
203
+ albumList = photo.buildArrayResponse(response)
204
+ rescue App42Exception =>e
205
+ raise e
206
+ rescue Exception => e
207
+ raise App42Exception.new(e)
208
+ end
209
+ return albumList
210
+ end
211
+
212
+ #
213
+ # Fetch all Photos based on the userName and album name
214
+ #
215
+ # @param userName
216
+ # - Name of the User whose photos have to be fetched
217
+ # @param albumName
218
+ # - Name of the Album from which photos have to be fetched
219
+ #
220
+ # @return Album object containing all the Photos for the given userName and albumName
221
+ #
222
+ # @raise App42Exception
223
+ #
224
+
225
+ def get_photos_by_album_name(userName, albumName)
226
+ puts "Get Photos Called "
227
+ puts "Base url #{@base_url}"
228
+ response = nil;
229
+ photoObj = nil;
230
+ photoObj = Album.new
231
+ util = Util.new
232
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
233
+ util.throwExceptionIfNullOrBlank(albumName, "Album Name");
234
+ begin
235
+ connection = App42::Connection::RESTConnection.new(@base_url)
236
+ query_params = Hash.new
237
+ params = {
238
+ 'apiKey'=> @api_key,
239
+ 'version' => @version,
240
+ 'timeStamp' => util.get_timestamp_utc,
241
+ }
242
+ query_params = params.clone
243
+ params.store("userName", userName)
244
+ params.store("albumName", albumName)
245
+ puts query_params
246
+ signature = util.sign(@secret_key, params)
247
+ resource_url = "#{@version}/#{@resource}/#{userName}/#{albumName}"
248
+ response = connection.get(signature, resource_url, query_params)
249
+ puts "Response is #{response}"
250
+ photo = AlbumResponseBuilder.new()
251
+ photoObj = photo.buildResponse(response)
252
+ rescue App42Exception =>e
253
+ raise e
254
+ rescue Exception => e
255
+ raise App42Exception.new(e)
256
+ end
257
+ return photoObj
258
+ end
259
+
260
+ #
261
+ # Fetch all Photos based on the userName and album name by paging.
262
+ #
263
+ # @param userName
264
+ # - Name of the User whose photos have to be fetched
265
+ # @param albumName
266
+ # - Name of the Album from which photos have to be fetched
267
+ # @param max
268
+ # - Maximum number of records to be fetched
269
+ # @param offset
270
+ # - From where the records are to be fetched
271
+ #
272
+ # @return Album object containing all the Photos for the given userName and
273
+ # albumName
274
+ #
275
+ # @raise App42Exception
276
+ #
277
+
278
+ def get_photos_by_album_name_by_paging(userName, albumName, max, offset)
279
+ puts "getPhotosByAlbumNameByPaging Called "
280
+ puts "Base url #{@base_url}"
281
+ response = nil;
282
+ photoObj = nil;
283
+ photoObj = Album.new
284
+ util = Util.new
285
+ util.validateMax(max);
286
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
287
+ util.throwExceptionIfNullOrBlank(albumName, "Album Name");
288
+ util.throwExceptionIfNullOrBlank(max, "Max");
289
+ util.throwExceptionIfNullOrBlank(offset, "Offset");
290
+ begin
291
+ connection = App42::Connection::RESTConnection.new(@base_url)
292
+ query_params = Hash.new
293
+ params = {
294
+ 'apiKey'=> @api_key,
295
+ 'version' => @version,
296
+ 'timeStamp' => util.get_timestamp_utc,
297
+ }
298
+ query_params = params.clone
299
+ params.store("userName", userName)
300
+ params.store("albumName", albumName)
301
+ params.store("max", "" + (max.to_i).to_s);
302
+ params.store("offset", "" + (offset.to_i).to_s);
303
+ puts query_params
304
+ signature = util.sign(@secret_key, params)
305
+ resource_url = "#{@version}/#{@resource}/album/#{userName}/#{albumName}/paging/#{(max.to_i).to_s}/#{(offset.to_i).to_s}"
306
+ response = connection.get(signature, resource_url, query_params)
307
+ puts "Response is #{response}"
308
+ photo = AlbumResponseBuilder.new()
309
+ photoObj = photo.buildResponse(response)
310
+ rescue App42Exception =>e
311
+ raise e
312
+ rescue Exception => e
313
+ raise App42Exception.new(e)
314
+ end
315
+ return photoObj
316
+ end
317
+
318
+ #
319
+ # Fetch the particular photo based on the userName, album name and photo name
320
+ #
321
+ # @param userName
322
+ # - Name of the User whose photo has to be fetched
323
+ # @param albumName
324
+ # - Name of the Album from which photo has to be fetched
325
+ # @param photoName
326
+ # - Name of the Photo that has to be fetched
327
+ #
328
+ # @return Album object containing the Photo for the given userName, albumName and photoName
329
+ #
330
+ # @raise App42Exception
331
+ #
332
+
333
+ def get_photos_by_album_and_photo_name(userName, albumName, photoName)
334
+ puts "Get Photos Called "
335
+ puts "Base url #{@base_url}"
336
+ response = nil;
337
+ photoObj = nil;
338
+ photoObj = Album.new
339
+ util = Util.new
340
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
341
+ util.throwExceptionIfNullOrBlank(albumName, "Album Name");
342
+ util.throwExceptionIfNullOrBlank(photoName, "Photo Name");
343
+ begin
344
+ connection = App42::Connection::RESTConnection.new(@base_url)
345
+ query_params = Hash.new
346
+ params = {
347
+ 'apiKey'=> @api_key,
348
+ 'version' => @version,
349
+ 'timeStamp' => util.get_timestamp_utc,
350
+ }
351
+ query_params = params.clone
352
+ params.store("userName", userName)
353
+ params.store("albumName", albumName)
354
+ params.store("name", photoName)
355
+ puts query_params
356
+ signature = util.sign(@secret_key, params)
357
+ resource_url = "#{@version}/#{@resource}/#{userName}/#{albumName}/#{photoName}"
358
+ response = connection.get(signature, resource_url, query_params)
359
+ puts "Response is #{response}"
360
+ photo = AlbumResponseBuilder.new()
361
+ photoObj = photo.buildResponse(response)
362
+ rescue App42Exception =>e
363
+ raise e
364
+ rescue Exception => e
365
+ raise App42Exception.new(e)
366
+ end
367
+ return photoObj
368
+ end
369
+
370
+ #
371
+ # Removes the particular Photo from the specified Album for a particular user.
372
+ # Note: The Photo is removed from the cloud and wont be accessible in future
373
+ #
374
+ # @param userName
375
+ # - Name of the User whose photo has to be removed
376
+ # @param albumName
377
+ # - Name of the Album in which photo has to be removed
378
+ # @param photoName
379
+ # - Name of the Photo that has to be removed
380
+ #
381
+ # @return App42Response if removed successfully
382
+ #
383
+ # @raise App42Exception
384
+ #
385
+
386
+ def remove_photo(userName, albumName, photoName)
387
+ puts "Delete Photo Called "
388
+ puts "Base url #{@base_url}"
389
+ response = nil;
390
+ responseObj = App42Response.new();
391
+ util = Util.new
392
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
393
+ util.throwExceptionIfNullOrBlank(albumName, "Album Name");
394
+ util.throwExceptionIfNullOrBlank(photoName, "Photo Name");
395
+ begin
396
+ connection = App42::Connection::RESTConnection.new(@base_url)
397
+ query_params = Hash.new
398
+ params = {
399
+ 'apiKey'=> @api_key,
400
+ 'version' => @version,
401
+ 'timeStamp' => util.get_timestamp_utc,
402
+ }
403
+ query_params = params.clone
404
+ params.store("userName", userName)
405
+ params.store("albumName", albumName)
406
+ params.store("name", photoName)
407
+ puts query_params
408
+ signature = util.sign(@secret_key, params)
409
+ resource_url = "#{@version}/#{@resource}/#{userName}/#{albumName}/#{photoName}"
410
+ response = connection.delete(signature, resource_url, query_params)
411
+ responseObj.strResponse=(response)
412
+ responseObj.isResponseSuccess=(true)
413
+ rescue App42Exception =>e
414
+ raise e
415
+ rescue Exception => e
416
+ raise App42Exception.new(e)
417
+ end
418
+ return responseObj
419
+ end
420
+
421
+ #
422
+ # Fetch the count of all Photos based on the userName and album name
423
+ #
424
+ # @param userName
425
+ # - Name of the User whose count of photos have to be fetched
426
+ # @param albumName
427
+ # - Name of the Album from which count of photos have to be fetched
428
+ #
429
+ # @return App42Response object containing the count of all the Photos for the given userName and
430
+ # albumName
431
+ #
432
+ # @raise App42Exception
433
+ #
434
+
435
+ def get_photos_count_by_album_name(userName, albumName)
436
+ puts "getPhotosCountByAlbumName Called "
437
+ puts "Base url #{@base_url}"
438
+ response = nil;
439
+ responseObj = App42Response.new
440
+ util = Util.new
441
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
442
+ util.throwExceptionIfNullOrBlank(albumName, "Album Name");
443
+ begin
444
+ connection = App42::Connection::RESTConnection.new(@base_url)
445
+ query_params = Hash.new
446
+ params = {
447
+ 'apiKey'=> @api_key,
448
+ 'version' => @version,
449
+ 'timeStamp' => util.get_timestamp_utc,
450
+ }
451
+ query_params = params.clone
452
+ params.store("userName", userName);
453
+ params.store("albumName", albumName);
454
+ puts query_params
455
+ signature = util.sign(@secret_key, params)
456
+ resource_url = "#{@version}/#{@resource}/#{userName}/#{albumName}/count"
457
+ response = connection.get(signature, resource_url, query_params)
458
+ responseObj.strResponse=(response)
459
+ responseObj.isResponseSuccess=(true)
460
+ responseObj = AlbumResponseBuilder.new()
461
+ responseObj.getTotalRecords(response);
462
+ rescue App42Exception =>e
463
+ raise e
464
+ rescue Exception => e
465
+ raise App42Exception.new(e)
466
+ end
467
+ return responseObj
468
+ end
469
+
470
+ #
471
+ # Adds tag to the Photo of the user in the album.
472
+ #
473
+ # @param userName
474
+ # - Name of the User whose name has to be tagged to photo
475
+ # @param albumName
476
+ # - Album name whose photo is to be tagged
477
+ # @param photoName
478
+ # - Photo name to be tagged
479
+ # @param tagList
480
+ # - list of tages in Photo
481
+ #
482
+ # @return Album object containing the Photo which has been added
483
+ #
484
+ # @raise App42Exception
485
+ #
486
+
487
+ def add_tag_to_photo(userName, albumName, photoName, tagList)
488
+ puts "addTagToPhoto called "
489
+ puts "Base url #{@base_url}"
490
+ response = nil;
491
+ photoObj = nil;
492
+ photoObj = Album.new
493
+ util = Util.new
494
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
495
+ util.throwExceptionIfNullOrBlank(albumName, "Album Name");
496
+ util.throwExceptionIfNullOrBlank(photoName, "Photo Name");
497
+ util.throwExceptionIfNullOrBlank(tagList, "TagList");
498
+ if tagList.size() == 0
499
+ raise App42Exception.new("TagList cannot be empty. Please add the name to be tagged");
500
+ end
501
+ begin
502
+ connection = App42::Connection::RESTConnection.new(@base_url)
503
+ tagArray = Array.new()
504
+ for tag in tagList do
505
+ tagArray.push(tag)
506
+ end
507
+ body = {'app42' => {"photo"=> {
508
+ "userName" => userName,
509
+ "albumName" => albumName,
510
+ "photoName" => photoName, "tags" => {
511
+ "tag" => tagArray
512
+ }}}}.to_json
513
+ puts "Body #{body}"
514
+ params = Hash.new
515
+ query_params = Hash.new
516
+ query_params = {
517
+ 'apiKey'=> @api_key,
518
+ 'version' => @version,
519
+ 'timeStamp' => util.get_timestamp_utc,
520
+ }
521
+ params = query_params.clone
522
+ post_params = Hash.new
523
+ post_params.store("body", body);
524
+ params = params.merge(post_params)
525
+ signature = util.sign(@secret_key, params)
526
+ resource_url = "#{@version}/#{@resource}/tag"
527
+ response = connection.post(signature, resource_url, query_params, body)
528
+ puts "Response is #{response}"
529
+ album = AlbumResponseBuilder.new()
530
+ photoObj = album.buildResponse(response)
531
+ rescue App42Exception =>e
532
+ raise e
533
+ rescue Exception => e
534
+ raise App42Exception.new(e)
535
+ end
536
+ return photoObj
537
+ end
538
+
539
+ #
540
+ # Fetch all the Photos based on the userName and tag
541
+ #
542
+ # @param userName
543
+ # - Name of the User whose photos have to be fetched
544
+ # @param tag
545
+ # - tag on which basis photos have to be fetched
546
+ #
547
+ # @return ArrayList of Album object containing all the Photos for the given
548
+ # userName
549
+ #
550
+ # @raise App42Exception
551
+ #
552
+
553
+ def get_tagged_photos(userName, tag)
554
+ puts "getTaggedPhoto called "
555
+ puts "Base url #{@base_url}"
556
+ response = nil;
557
+ albumList = nil;
558
+ albumList = Array.new
559
+ util = Util.new
560
+ util.throwExceptionIfNullOrBlank(userName, "User Name");
561
+ util.throwExceptionIfNullOrBlank(tag, "Tag");
562
+ begin
563
+ connection = App42::Connection::RESTConnection.new(@base_url)
564
+ params = Hash.new
565
+ query_params = Hash.new
566
+ params = {
567
+ 'apiKey'=> @api_key,
568
+ 'version' => @version,
569
+ 'timeStamp' => util.get_timestamp_utc,
570
+ }
571
+ query_params = params.clone
572
+ params.store("userName", userName);
573
+ params.store("tag", tag)
574
+ puts query_params
575
+ signature = util.sign(@secret_key, params)
576
+ resource_url = "#{@version}/#{@resource}/tag/#{tag}/userName/#{userName}"
577
+ response = connection.get(signature, resource_url, query_params)
578
+ puts "Response is #{response}"
579
+ album = AlbumResponseBuilder.new()
580
+ albumList = album.buildArrayResponse(response)
581
+ rescue App42Exception =>e
582
+ raise e
583
+ rescue Exception => e
584
+ raise App42Exception.new(e)
585
+ end
586
+ return albumList
587
+ end
588
+
589
+ end
590
+ end
591
+ end