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,29 @@
1
+ # -----------------------------------------------------------------------
2
+ # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
3
+ # -----------------------------------------------------------------------
4
+
5
+ require 'App42_Ruby_API/App42Response'
6
+
7
+ module App42
8
+ module Storage
9
+ class OrderByType < App42Response
10
+
11
+ ASCENDING = "ASCENDING"
12
+ DESCENDING = "DESCENDING"
13
+ def enum(string)
14
+ return OrderByType.const_get(string)
15
+ end
16
+
17
+ def isAvailable(string)
18
+ if(string == "ASCENDING")
19
+ return "ASCENDING"
20
+ elsif(string == "DESCENDING")
21
+ return "DESCENDING";
22
+ else
23
+ return nil
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -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
+ module App42
8
+ module Storage
9
+ class Query < App42Response
10
+
11
+ attr_accessor :jsonObject, :jsonArray
12
+ @jsonObject
13
+ @jsonArray
14
+ def initialize(jsonQuery)
15
+ if jsonQuery.kind_of?(Hash)
16
+ self.jsonObject = jsonQuery;
17
+ else
18
+ self.jsonArray = jsonQuery;
19
+ end
20
+ end
21
+
22
+ def getStr
23
+ if (jsonObject != nil)
24
+ return "["+jsonObject.to_s()+"]"
25
+ else
26
+ return jsonArray.to_s()
27
+ end
28
+ end
29
+
30
+ def getType
31
+ if (jsonObject != nil)
32
+ return jsonObject
33
+ else
34
+ return jsonArray
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,118 @@
1
+ # -----------------------------------------------------------------------
2
+ # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
3
+ # -----------------------------------------------------------------------
4
+
5
+ require 'App42_Ruby_API/App42Response'
6
+ require 'storage/Query'
7
+ require 'storage/OrderByType'
8
+ require 'util/util'
9
+
10
+ module App42
11
+ module Storage
12
+ class QueryBuilder
13
+ class Operator < App42Response
14
+ attr_accessor :value
15
+ @value
16
+
17
+ unless (const_defined?(:EQUALS))
18
+ EQUALS = "\$eq"
19
+ end
20
+ unless (const_defined?(:NOT_EQUALS))
21
+ NOT_EQUALS = "\$ne"
22
+ end
23
+ unless (const_defined?(:GREATER_THAN))
24
+ GREATER_THAN = "\$gt"
25
+ end
26
+ unless (const_defined?(:LESS_THAN))
27
+ LESS_THAN = "\$lt"
28
+ end
29
+ unless (const_defined?(:GREATER_THAN_EQUALTO))
30
+ GREATER_THAN_EQUALTO = "\$gte"
31
+ end
32
+ unless (const_defined?(:LESS_THAN_EQUALTO))
33
+ LESS_THAN_EQUALTO = "\$lte"
34
+ end
35
+ unless (const_defined?(:LIKE))
36
+ LIKE = "\$lk"
37
+ end
38
+ unless (const_defined?(:AND))
39
+ AND = "\$and"
40
+ end
41
+ unless (const_defined?(:OR))
42
+ OR = "\$or"
43
+ end
44
+
45
+ def enum(string)
46
+ return Operator.const_get(string)
47
+ end
48
+
49
+ def isAvailable(string)
50
+ if(string == "\$eq")
51
+ return "EQUALS"
52
+ elsif(string == "\$ne")
53
+ return "NOT_EQUALS";
54
+ elsif(string == "\$gt")
55
+ return "GREATER_THAN"
56
+ elsif(string == "\$lt")
57
+ return "LESS_THAN"
58
+ elsif(string == "\$gte")
59
+ return "GREATER_THAN_EQUALTO"
60
+ elsif(string == "\$lte")
61
+ return "LESS_THAN_EQUALTO"
62
+ elsif(string == "\$lk")
63
+ return "LIKE"
64
+ elsif(string == "\$and")
65
+ return "AND"
66
+ elsif(string == "\$or")
67
+ return "OR";
68
+ else
69
+ return nil
70
+ end
71
+ end
72
+ end
73
+
74
+ def build(key, value, op)
75
+
76
+ query = nil
77
+ begin
78
+ jsonObj = Hash.new()
79
+ jsonObj.store("key", key);
80
+ jsonObj.store("value", value);
81
+ jsonObj.store("operator", op);
82
+ query = Query.new(jsonObj);
83
+ rescue Exception => ex
84
+ raise App42Exception.new(ex)
85
+ end
86
+ return query
87
+ end
88
+
89
+ def compoundOperator(q1, op, q2)
90
+ util = Util.new()
91
+ util.throwExceptionIfNullOrBlank(q1, "q1");
92
+ util.throwExceptionIfNullOrBlank(q2, "q2");
93
+ jsonArray = Array.new()
94
+ query = Query.new(jsonArray)
95
+ begin
96
+ if q1.getType().instance_of?(Hash)
97
+ jsonArray.push(q1.getType());
98
+ else
99
+ jsonArray.push(q1.getType());
100
+ end
101
+ jsonObj = Hash.new()
102
+ jsonObj.store("compoundOpt", op);
103
+ jsonArray.push(jsonObj);
104
+
105
+ if q2.getType().instance_of?(Hash)
106
+ jsonArray.push(q2.getType());
107
+ else
108
+ jsonArray.push(q2.getType());
109
+ end
110
+ rescue Exception => ex
111
+ raise App42Exception.new(ex)
112
+ end
113
+ return query
114
+ end
115
+ end
116
+
117
+ end
118
+ end
@@ -0,0 +1,45 @@
1
+ # -----------------------------------------------------------------------
2
+ # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
3
+ # -----------------------------------------------------------------------
4
+
5
+ require 'App42_Ruby_API/App42Response'
6
+
7
+ #
8
+ #
9
+ # This Storage object is the value object which contains the properties of
10
+ # Storage.
11
+ #
12
+ #
13
+
14
+ module App42
15
+ module Storage
16
+ class Storage < App42Response
17
+ attr_accessor :dbName, :collectionName,:jsonDocList
18
+ @dbName
19
+ @collectionName
20
+ @jsonDocList = Array.new
21
+ end
22
+
23
+ class JSONDocument
24
+ attr_accessor :jsonDoc, :docId
25
+ @jsonDoc
26
+ @docId
27
+ #
28
+ # This create the constructor and takes no parameter.
29
+ #
30
+ def initialize(storage)
31
+ storage.jsonDocList.push(self);
32
+ end
33
+
34
+ #
35
+ # Returns the Storage Response in JSON format.
36
+ #
37
+ # @return the response in JSON format.
38
+ #
39
+
40
+ def to_s
41
+ return "#{self.docId} : #{self.jsonDoc}"
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,86 @@
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 'storage/Storage'
8
+ require 'storage/Query'
9
+ require 'storage/OrderByType'
10
+
11
+ module App42
12
+ module Storage
13
+ #
14
+ #
15
+ # StorageResponseBuilder class converts the JSON response retrieved from the
16
+ # server to the value object i.e Storage
17
+ #
18
+ #
19
+ class StorageResponseBuilder < App42ResponseBuilder
20
+ #
21
+ # Converts the response in JSON format to the value object i.e Storage
22
+ #
23
+ # @param json
24
+ # - response in JSON format
25
+ #
26
+ # @return Storage object filled with json data
27
+ #
28
+ #
29
+ def buildResponse(json)
30
+ storageObj = Storage.new
31
+ jsonDocList = Array.new
32
+ storageObj.jsonDocList = (jsonDocList)
33
+ storageObj.strResponse = (json)
34
+ jsonObj = JSON.parse(json)
35
+ jsonObjApp42 = jsonObj["app42"]
36
+ jsonObjResponse = jsonObjApp42["response"]
37
+ storageObj.isResponseSuccess=(jsonObjResponse.fetch("success"))
38
+ jsonObjStorage = jsonObjResponse.fetch("storage");
39
+ buildObjectFromJSONTree(storageObj, jsonObjStorage);
40
+
41
+ if jsonObjStorage.key?("jsonDoc") == false
42
+ return storageObj;
43
+ end
44
+
45
+ if jsonObjStorage.fetch("jsonDoc").instance_of?(Hash)
46
+ # Only One attribute is there
47
+
48
+ jsonObjDoc = jsonObjStorage.fetch("jsonDoc");
49
+ document = App42::Storage::JSONDocument.new(storageObj)
50
+
51
+ buildJsonDocument(document, jsonObjDoc);
52
+ else
53
+ # There is an Array of attribute
54
+
55
+ jsonObjDocArray = jsonObjStorage.fetch("jsonDoc")
56
+ jsonObjDocArray.length.times do |i|
57
+ # Get Individual Attribute Node and set it into Object
58
+ jsonObjDoc = jsonObjDocArray[i]
59
+ document = App42::Storage::JSONDocument.new(storageObj)
60
+ buildJsonDocument(document, jsonObjDoc);
61
+ end
62
+ end
63
+ return storageObj
64
+ end
65
+
66
+ #
67
+ # Builds the Json Document for the storage w.r.t their docId
68
+ #
69
+ # @param document
70
+ # - document for storage
71
+ # @param jsonObjDoc
72
+ # - jsonDoc object for storage
73
+ #
74
+
75
+ def buildJsonDocument(document,jsonObjDoc)
76
+ if jsonObjDoc.fetch("_id").instance_of?(Hash)
77
+ idObj = jsonObjDoc.fetch("_id");
78
+ oIdObj = idObj.fetch("$oid")
79
+ document.docId = oIdObj
80
+ jsonObjDoc.delete("_id")
81
+ document.jsonDoc = jsonObjDoc.to_s
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,775 @@
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
+ require 'storage/StorageResponseBuilder'
9
+ require 'storage/Storage'
10
+ require 'storage/Query'
11
+ require 'storage/QueryBuilder'
12
+ require 'storage/OrderByType'
13
+
14
+ module App42
15
+ module Storage
16
+ #
17
+ # Storage service on cloud provides the way to store the JSON document in NoSQL database running on cloud.
18
+ # One can store the JSON document, update it , search it and can apply the map-reduce search on stored documents.
19
+ # Example : If one will store JSON doc {"date":"5Feb"} it will be stored with unique Object Id and stored JSON object will look like
20
+ # { "date" : "5Feb" , "_id" : { "$oid" : "4f423dcce1603b3f0bd560cf"}}. This oid can further be used to access/search the document.
21
+ #
22
+ # @see Storage
23
+ #
24
+ # @see App42Response
25
+ #
26
+ class StorageService
27
+ #
28
+ # this is a constructor that takes
29
+ #
30
+ # @param apiKey
31
+ # @param secretKey
32
+ # @param baseURL
33
+ #
34
+ def initialize(api_key, secret_key, base_url)
35
+ puts "StorageService->initialize"
36
+ @api_key = api_key
37
+ @secret_key = secret_key
38
+ @base_url = base_url
39
+ @resource = "storage"
40
+ @version = "1.0"
41
+ end
42
+
43
+ #
44
+ # Save the JSON document in given database name and collection name.
45
+ #
46
+ # @param dbName
47
+ # - Unique handler for storage name
48
+ # @param collectionName
49
+ # - Name of collection under which JSON doc has to be saved.
50
+ # @param json
51
+ # - Target JSON document to be saved
52
+ #
53
+ # @return Storage object
54
+ #
55
+ # @raise App42Exception
56
+ #
57
+
58
+ def insert_json_document(dbName, collectionName, json)
59
+ puts "Create Insert JSON Document Called "
60
+ puts "Base url #{@base_url}"
61
+ response = nil
62
+ storage = nil
63
+ storage = Storage.new
64
+ util = Util.new
65
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName")
66
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName")
67
+ util.throwExceptionIfNullOrBlank(json, "Json")
68
+ begin
69
+ connection = App42::Connection::RESTConnection.new(@base_url)
70
+ body = {'app42' => {"storage"=> {
71
+ "jsonDoc" => json
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
+ params.store("dbName", dbName)
81
+ params.store("collectionName", collectionName)
82
+ query_params = params.clone
83
+ params.store("body", body)
84
+ signature = util.sign(@secret_key, params)
85
+ resource_url = "#{@version}/#{@resource}/insert/dbName/#{dbName}/collectionName/#{collectionName}"
86
+ response = connection.post(signature, resource_url, query_params, body)
87
+ storageObj = StorageResponseBuilder.new
88
+ storage = storageObj.buildResponse(response)
89
+ rescue App42Exception => e
90
+ raise e
91
+ rescue Exception => e
92
+ raise App42Exception.new(e)
93
+ end
94
+ return storage
95
+ end
96
+
97
+ #
98
+ # Find all documents stored in given database and collection.
99
+ #
100
+ # @param dbName
101
+ # - Unique handler for storage name
102
+ # @param collectionName
103
+ # - Name of collection under which JSON doc needs to be searched.
104
+ #
105
+ # @return Storage object
106
+ #
107
+ # @raise App42Exception
108
+ #
109
+
110
+ def find_all_documents(dbName, collectionName)
111
+ puts "Find All Documents Called "
112
+ puts "Base url #{@base_url}"
113
+ response = nil
114
+ storage = nil
115
+ storage = Storage.new()
116
+ util = Util.new
117
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName");
118
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName");
119
+ begin
120
+ connection = App42::Connection::RESTConnection.new(@base_url)
121
+ query_params = Hash.new
122
+ params = {
123
+ 'apiKey'=> @api_key,
124
+ 'version' => @version,
125
+ 'timeStamp' => util.get_timestamp_utc,
126
+ }
127
+ query_params = params.clone
128
+ params.store("dbName", dbName)
129
+ params.store("collectionName", collectionName)
130
+ signature = util.sign(@secret_key, params)
131
+ resource_url = "#{@version}/#{@resource}/findAll/dbName/#{dbName}/collectionName/#{collectionName}"
132
+ response = connection.get(signature, resource_url, query_params)
133
+ storage = StorageResponseBuilder.new().buildResponse(response);
134
+ rescue App42Exception =>e
135
+ raise e
136
+ rescue Exception => e
137
+ raise App42Exception.new(e)
138
+ end
139
+ return storage
140
+ end
141
+
142
+ #
143
+ # Gets the count of all documents stored in given database and collection.
144
+ #
145
+ # @param dbName
146
+ # - Unique handler for storage name
147
+ # @param collectionName
148
+ # - Name of collection under which JSON doc needs to be searched.
149
+ #
150
+ # @return App42Response object
151
+ #
152
+ # @raise App42Exception
153
+ #
154
+
155
+ def find_all_documents_count(dbName, collectionName)
156
+ puts "Find All Documents Count Called "
157
+ puts "Base url #{@base_url}"
158
+ response = nil;
159
+ responseObj = App42Response.new();
160
+ util = Util.new
161
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName");
162
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName");
163
+ begin
164
+ connection = App42::Connection::RESTConnection.new(@base_url)
165
+ query_params = Hash.new
166
+ params = {
167
+ 'apiKey'=> @api_key,
168
+ 'version' => @version,
169
+ 'timeStamp' => util.get_timestamp_utc,
170
+ }
171
+ query_params = params.clone
172
+ params.store("dbName", dbName)
173
+ params.store("collectionName", collectionName)
174
+ signature = util.sign(@secret_key, params)
175
+ resource_url = "#{@version}/#{@resource}/findAll/count/dbName/#{dbName}/collectionName/#{collectionName}"
176
+ response = connection.get(signature, resource_url, query_params)
177
+ responseObj.strResponse=(response)
178
+ responseObj.isResponseSuccess=(true)
179
+ responseObj = StorageResponseBuilder.new()
180
+ responseObj.getTotalRecords(response);
181
+ rescue App42Exception =>e
182
+ raise e
183
+ rescue Exception => e
184
+ raise App42Exception.new(e)
185
+ end
186
+ return responseObj
187
+ end
188
+
189
+ #
190
+ # Find all documents stored in given database and collection.
191
+ #
192
+ # @param dbName
193
+ # - Unique handler for storage name
194
+ # @param collectionName
195
+ # - Name of collection under which JSON doc needs to be searched.
196
+ # @param max
197
+ # - Maximum number of records to be fetched
198
+ # @param offset
199
+ # - From where the records are to be fetched
200
+ #
201
+ # @return Storage object
202
+ #
203
+ # @raise App42Exception
204
+ #
205
+
206
+ def find_all_documents_by_paging(dbName, collectionName, max, offset)
207
+ puts "Find All Documents Called "
208
+ puts "Base url #{@base_url}"
209
+ response = nil
210
+ storageObj = nil
211
+ storageObj = Storage.new()
212
+ util = Util.new
213
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName");
214
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName");
215
+ begin
216
+ connection = App42::Connection::RESTConnection.new(@base_url)
217
+ query_params = Hash.new
218
+ params = {
219
+ 'apiKey'=> @api_key,
220
+ 'version' => @version,
221
+ 'timeStamp' => util.get_timestamp_utc,
222
+ }
223
+ query_params = params.clone
224
+ params.store("dbName", dbName)
225
+ params.store("collectionName", collectionName)
226
+ params.store("max", "" + (max.to_i).to_s);
227
+ params.store("offset", "" + (offset.to_i).to_s);
228
+ signature = util.sign(@secret_key, params)
229
+ resource_url = "#{@version}/#{@resource}/findAll/dbName/#{dbName}/collectionName/#{collectionName}/#{(max.to_i).to_s}/#{(offset.to_i).to_s}"
230
+ response = connection.get(signature, resource_url, query_params)
231
+ storageObj = StorageResponseBuilder.new().buildResponse(response);
232
+ rescue App42Exception =>e
233
+ raise e
234
+ rescue Exception => e
235
+ raise App42Exception.new(e)
236
+ end
237
+ return storageObj
238
+ end
239
+
240
+ #
241
+ # Find target document by given unique object id.
242
+ #
243
+ # @param dbName
244
+ # - Unique handler for storage name
245
+ # @param collectionName
246
+ # - Name of collection under which JSON doc needs to be searched.
247
+ # @param docId
248
+ # - Unique Object Id handler.
249
+ #
250
+ # @return Storage object
251
+ #
252
+ # @raise App42Exception
253
+ #
254
+
255
+ def find_document_by_id(dbName, collectionName, docId)
256
+ puts "Final Document By ID Called "
257
+ puts "Base url #{@base_url}"
258
+ response = nil
259
+ storage = nil
260
+ storage = Storage.new
261
+ util = Util.new
262
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName");
263
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName");
264
+ util.throwExceptionIfNullOrBlank(docId, "DocumentId");
265
+ begin
266
+ connection = App42::Connection::RESTConnection.new(@base_url)
267
+ query_params = Hash.new
268
+ params = {
269
+ 'apiKey'=> @api_key,
270
+ 'version' => @version,
271
+ 'timeStamp' => util.get_timestamp_utc,
272
+ }
273
+ query_params = params.clone
274
+ params.store("dbName", dbName)
275
+ params.store("collectionName", collectionName)
276
+ params.store("docId", docId)
277
+ signature = util.sign(@secret_key, params)
278
+ resource_url = "#{@version}/#{@resource}/findDocById/dbName/#{dbName}/collectionName/#{collectionName}/docId/#{docId}"
279
+ response = connection.get(signature, resource_url, query_params)
280
+ storage = StorageResponseBuilder.new().buildResponse(response);
281
+ rescue App42Exception =>e
282
+ raise e
283
+ rescue Exception => e
284
+ raise App42Exception.new(e)
285
+ end
286
+ return storage
287
+ end
288
+
289
+ #
290
+ # Find target document using key value search parameter.
291
+ # This key value pair will be searched in the JSON doc stored on the cloud and matching Doc will be returned as a result of this method.
292
+ #
293
+ # @param dbName
294
+ # - Unique handler for storage name
295
+ # @param collectionName
296
+ # - Name of collection under which JSON doc needs to be searched.
297
+ # @param key
298
+ # - Key to be searched for target JSON doc.
299
+ # @param value
300
+ # - Value to be searched for target JSON doc.
301
+ #
302
+ # @return Storage object
303
+ #
304
+ # @raise App42Exception
305
+ #
306
+
307
+ def find_document_by_key_value(dbName, collectionName, key, value)
308
+ puts "Find Document By Key Value Called"
309
+ puts "Base url #{@base_url}"
310
+ response = nil
311
+ storage = nil
312
+ storage = Storage.new
313
+ util = Util.new
314
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName");
315
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName");
316
+ util.throwExceptionIfNullOrBlank(key, "Key");
317
+ util.throwExceptionIfNullOrBlank(value, "Value");
318
+ begin
319
+ connection = App42::Connection::RESTConnection.new(@base_url)
320
+ query_params = Hash.new
321
+ params = {
322
+ 'apiKey'=> @api_key,
323
+ 'version' => @version,
324
+ 'timeStamp' => util.get_timestamp_utc,
325
+ }
326
+ query_params = params.clone
327
+ params.store("dbName", dbName)
328
+ params.store("collectionName", collectionName)
329
+ params.store("key", key)
330
+ params.store("value", value)
331
+ puts query_params
332
+ signature = util.sign(@secret_key, params)
333
+ resource_url = "#{@version}/#{@resource}/findDocByKV/dbName/#{dbName}/collectionName/#{collectionName}/#{key}/#{value}"
334
+ response = connection.get(signature, resource_url, query_params)
335
+ storage = StorageResponseBuilder.new().buildResponse(response);
336
+ rescue App42Exception =>e
337
+ raise e
338
+ rescue Exception => e
339
+ raise App42Exception.new(e)
340
+ end
341
+ return storage
342
+ end
343
+
344
+ #
345
+ # Update target document using key value search parameter.
346
+ #
347
+ # This key value pair will be searched in the JSON doc stored in the cloud and matching Doc will be updated with new value passed.
348
+ #
349
+ # @param dbName
350
+ # - Unique handler for storage name
351
+ # @param collectionName
352
+ # - Name of collection under which JSON doc needs to be searched.
353
+ # @param key
354
+ # - Key to be searched for target JSON doc.
355
+ # @param value
356
+ # - Value to be searched for target JSON doc.
357
+ # @param newJsonDoc
358
+ # - New Json document to be added.
359
+ #
360
+ # @return Storage object
361
+ #
362
+ # @raise App42Exception
363
+ #
364
+
365
+ def update_document_by_key_value(dbName, collectionName, key, value, newJsonDoc)
366
+ puts "Update Document By Key Value Called"
367
+ puts "Base url #{@base_url}"
368
+ response = nil
369
+ storageObj = nil
370
+ storageObj = Storage.new
371
+ util = Util.new
372
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName");
373
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName");
374
+ util.throwExceptionIfNullOrBlank(key, "Key");
375
+ util.throwExceptionIfNullOrBlank(value, "Value");
376
+ util.throwExceptionIfNullOrBlank(newJsonDoc, "NewJsonDocument");
377
+ begin
378
+ connection = App42::Connection::RESTConnection.new(@base_url)
379
+ body = {'app42' => {"storage"=> {
380
+ "jsonDoc" => newJsonDoc
381
+ }}}.to_json
382
+ puts "Body #{body}"
383
+ query_params = Hash.new
384
+ params = {
385
+ 'apiKey'=> @api_key,
386
+ 'version' => @version,
387
+ 'timeStamp' => util.get_timestamp_utc,
388
+ }
389
+ query_params = params.clone
390
+ params.store("body", body)
391
+ params.store("dbName", dbName)
392
+ params.store("collectionName", collectionName)
393
+ params.store("key", key)
394
+ params.store("value", value)
395
+ puts query_params
396
+ signature = util.sign(@secret_key, params)
397
+ resource_url = "#{@version}/#{@resource}/update/dbName/#{dbName}/collectionName/#{collectionName}/#{key}/#{value}"
398
+ response = connection.put(signature, resource_url, query_params,body)
399
+ storage = StorageResponseBuilder.new().buildResponse(response);
400
+ rescue App42Exception =>e
401
+ raise e
402
+ rescue Exception => e
403
+ raise App42Exception.new(e)
404
+ end
405
+ return storage
406
+ end
407
+
408
+ #
409
+ # Delete target document using Object Id from given db and collection.
410
+ # The Object Id will be searched in the JSON doc stored on the cloud and matching Doc will be deleted.
411
+ #
412
+ # @param dbName
413
+ # - Unique handler for storage name
414
+ # @param collectionName
415
+ # - Name of collection under which JSON doc needs to be searched.
416
+ # @param docId
417
+ # - Unique Object Id handler.
418
+ #
419
+ # @return App42Response object if deleted successfully
420
+ #
421
+ # @raise App42Exception
422
+ #
423
+
424
+ def delete_document_by_id(dbName, collectionName, docId)
425
+ puts "Delete Document By ID Called "
426
+ puts "Base url #{@base_url}"
427
+ response = nil
428
+ responseObj = App42Response.new();
429
+ util = Util.new
430
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName");
431
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName");
432
+ util.throwExceptionIfNullOrBlank(docId, "DocumentId");
433
+ begin
434
+ connection = App42::Connection::RESTConnection.new(@base_url)
435
+ util = Util.new
436
+ query_params = Hash.new
437
+ params = {
438
+ 'apiKey'=> @api_key,
439
+ 'version' => @version,
440
+ 'timeStamp' => util.get_timestamp_utc,
441
+ }
442
+ query_params = params.clone
443
+ puts params
444
+ params.store("dbName", dbName)
445
+ params.store("collectionName", collectionName)
446
+ params.store("docId", docId)
447
+ puts query_params
448
+ signature = util.sign(@secret_key, params)
449
+ resource_url = "#{@version}/#{@resource}/deleteDocById/dbName/#{dbName}/collectionName/#{collectionName}/docId/#{docId}"
450
+ response = connection.delete(signature, resource_url, query_params)
451
+ responseObj.strResponse=(response)
452
+ responseObj.isResponseSuccess=(true)
453
+ rescue App42Exception =>e
454
+ raise e
455
+ rescue Exception => e
456
+ raise App42Exception.new(e)
457
+ end
458
+ return responseObj
459
+ end
460
+
461
+ #
462
+ # @param map
463
+ #
464
+ # @return
465
+ #
466
+
467
+ def get_json_from_map(map)
468
+ return map.to_json
469
+ end
470
+
471
+ #
472
+ # Save the JSON document in given database name and collection name. It accepts the HashMap containing key-value and convert it into JSON.
473
+ # Converted JSON doc further saved on the cloud using given db name and collection name.
474
+ #
475
+ # @param dbName
476
+ # - Unique handler for storage name
477
+ # @param collectionName
478
+ # - Name of collection under which JSON doc has to be saved.
479
+ # @param map
480
+ # - HashMap containing key-value pairs
481
+ #
482
+ # @return Storage object
483
+ #
484
+ # @raise App42Exception
485
+ #
486
+
487
+ def insert_json_doc_using_map(dbName,collectionName,map)
488
+ puts "insert_json_doc_using_map Called "
489
+ puts "Base url #{@base_url}"
490
+ jsonBody = get_json_from_map(map);
491
+ return insert_json_document(dbName, collectionName, jsonBody)
492
+ end
493
+
494
+ #
495
+ # Map reduce function to search the target document.
496
+ #
497
+ # Please see detail information on map-reduce http://en.wikipedia.org/wiki/MapReduce
498
+ #
499
+ # @param dbName
500
+ # - Unique handler for storage name
501
+ # @param collectionName
502
+ # - Name of collection under which JSON doc needs to be searched.
503
+ # @param mapFunction
504
+ # - Map function to be used to search the document
505
+ # @param reduceFunction
506
+ # - Reduce function to be used to search the document
507
+ #
508
+ # @return Returns the target JSON document.
509
+ #
510
+ # @raise App42Exception
511
+ #
512
+
513
+ def map_reduce(dbName,collectionName,mapFunction,reduceFunction)
514
+ response = nil
515
+ util = Util.new
516
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName");
517
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName");
518
+ util.throwExceptionIfNullOrBlank(mapFunction, "MapFunction");
519
+ util.throwExceptionIfNullOrBlank(reduceFunction, "ReduceFunction");
520
+ begin
521
+ connection = App42::Connection::RESTConnection.new(@base_url)
522
+ body = {'app42' => {"storage"=> {
523
+ "map" => mapFunction,
524
+ "reduce" => reduceFunction
525
+ }}}.to_json
526
+ query_params = Hash.new
527
+ params = {
528
+ 'apiKey'=> @api_key,
529
+ 'version' => @version,
530
+ 'timeStamp' => util.get_timestamp_utc,
531
+ }
532
+ params.store("dbName", dbName)
533
+ params.store("collectionName", collectionName)
534
+ query_params = params.clone
535
+ params.store("body", body)
536
+ signature = util.sign(@secret_key, params)
537
+ resource_url = "#{@version}/#{@resource}/mapReduce/dbName/#{dbName}/collectionName/#{collectionName}"
538
+ response = connection.post(signature, resource_url, query_params, body)
539
+ rescue App42Exception =>e
540
+ raise e
541
+ rescue Exception => e
542
+ raise App42Exception.new(e)
543
+ end
544
+ return response
545
+ end
546
+
547
+ #
548
+ # Update target document using the document id.
549
+ #
550
+ # @param dbName
551
+ # - Unique handler for storage name
552
+ # @param collectionName
553
+ # - Name of collection under which JSON doc needs to be searched.
554
+ # @param docId
555
+ # - Id of the document to be searched for target JSON doc.
556
+ # @param newJsonDoc
557
+ # - New Json document to be added.
558
+ #
559
+ # @return Storage object
560
+ #
561
+ # @raise App42Exception
562
+ #
563
+
564
+ def update_document_by_doc_id(dbName, collectionName, docId, newJsonDoc)
565
+ puts "Update Document By Document Id Called "
566
+ puts "Base url #{@base_url}"
567
+ response = nil
568
+ storage = nil
569
+ storage = Storage.new
570
+ util = Util.new
571
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName")
572
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName")
573
+ util.throwExceptionIfNullOrBlank(docId, "DocId");
574
+ util.throwExceptionIfNullOrBlank(newJsonDoc, "NewJsonDocument");
575
+ begin
576
+ connection = App42::Connection::RESTConnection.new(@base_url)
577
+ body = {'app42' => {"storage"=> {
578
+ "jsonDoc" => newJsonDoc
579
+ }}}.to_json
580
+ puts "Body #{body}"
581
+ query_params = Hash.new
582
+ params = {
583
+ 'apiKey'=> @api_key,
584
+ 'version' => @version,
585
+ 'timeStamp' => util.get_timestamp_utc
586
+ }
587
+ params.store("body", body)
588
+ params.store("docId", docId)
589
+ params.store("dbName", dbName)
590
+ params.store("collectionName", collectionName)
591
+ query_params = params.clone
592
+ signature = util.sign(@secret_key, params)
593
+ resource_url = "#{@version}/#{@resource}/updateByDocId/dbName/#{dbName}/collectionName/#{collectionName}/docId/#{docId}"
594
+ response = connection.put(signature, resource_url, query_params, body)
595
+ storageObj = StorageResponseBuilder.new
596
+ storage = storageObj.buildResponse(response)
597
+ rescue App42Exception =>e
598
+ raise e
599
+ rescue Exception => e
600
+ raise App42Exception.new(e)
601
+ end
602
+ return storage
603
+ end
604
+
605
+ #
606
+ # Find target document using Custom Query.
607
+ #
608
+ # @param dbName
609
+ # - Unique handler for storage name
610
+ # @param collectionName
611
+ # - Name of collection under which JSON doc needs to be searched
612
+ # @param Query
613
+ # - Query Object containing custom query for searching docs
614
+ #
615
+ # @return Storage object
616
+ #
617
+ # @raise App42Exception
618
+ #
619
+
620
+ def find_document_by_query(dbName, collectionName, query)
621
+ puts "find_document_by_query Called "
622
+ puts "Base url #{@base_url}"
623
+ response = nil
624
+ storageObj = nil
625
+ storageObj = Storage.new()
626
+ util = Util.new
627
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName");
628
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName");
629
+ util.throwExceptionIfNullOrBlank(query, "query");
630
+ begin
631
+ connection = App42::Connection::RESTConnection.new(@base_url)
632
+ query_params = Hash.new
633
+ params = {
634
+ 'apiKey'=> @api_key,
635
+ 'version' => @version,
636
+ 'timeStamp' => util.get_timestamp_utc,
637
+ 'jsonQuery' => query.getStr()
638
+ }
639
+ params.store("dbName", dbName);
640
+ params.store("collectionName", collectionName);
641
+ query_params = params.clone
642
+ signature = util.sign(@secret_key, params)
643
+ resource_url = "#{@version}/#{@resource}/findDocsByQuery/dbName/#{dbName}/collectionName/#{collectionName}"
644
+ response = connection.get(signature, resource_url, query_params)
645
+ storage = StorageResponseBuilder.new
646
+ storageObj = storage.buildResponse(response)
647
+ rescue App42Exception =>e
648
+ raise e
649
+ rescue Exception => e
650
+ raise App42Exception.new(e)
651
+ end
652
+ return storageObj
653
+ end
654
+
655
+ #
656
+ # Find target document using Custom Query with paging.
657
+ #
658
+ # @param dbName
659
+ # - Unique handler for storage name
660
+ # @param collectionName
661
+ # - Name of collection under which JSON doc needs to be searched
662
+ # @param Query
663
+ # - Query Object containing custom query for searching docs
664
+ # @param max
665
+ # - max result parameter
666
+ # @param offset
667
+ # - offset result parameter
668
+ #
669
+ # @return Storage object
670
+ #
671
+ # @raise App42Exception
672
+ #
673
+
674
+ def find_documents_by_query_with_paging(dbName, collectionName, query, max, offset)
675
+ puts "findDocumentsByQueryWithPaging Called "
676
+ puts "Base url #{@base_url}"
677
+ response = nil
678
+ storageObj = nil
679
+ storageObj = Storage.new()
680
+ util = Util.new
681
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName");
682
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName");
683
+ util.throwExceptionIfNullOrBlank(query, "query");
684
+ begin
685
+ connection = App42::Connection::RESTConnection.new(@base_url)
686
+ query_params = Hash.new
687
+ params = {
688
+ 'apiKey'=> @api_key,
689
+ 'version' => @version,
690
+ 'timeStamp' => util.get_timestamp_utc,
691
+ 'jsonQuery' => query.getStr()
692
+ }
693
+ params.store("dbName", dbName);
694
+ params.store("collectionName", collectionName);
695
+ params.store("max", "" + (max.to_i).to_s)
696
+ params.store("offset", "" + (offset.to_i).to_s)
697
+ query_params = params.clone
698
+ signature = util.sign(@secret_key, params)
699
+ resource_url = "#{@version}/#{@resource}/findDocsByQuery/dbName/#{dbName}/collectionName/#{collectionName}/#{(max.to_i).to_s}/#{(offset.to_i).to_s}"
700
+ response = connection.get(signature, resource_url, query_params)
701
+ storage = StorageResponseBuilder.new
702
+ storageObj = storage.buildResponse(response)
703
+ rescue App42Exception =>e
704
+ raise e
705
+ rescue Exception => e
706
+ raise App42Exception.new(e)
707
+ end
708
+ return storageObj
709
+ end
710
+
711
+ #
712
+ # Find target document using Custom Query with paging and orderby.
713
+ #
714
+ # @param dbName
715
+ # - Unique handler for storage name
716
+ # @param collectionName
717
+ # - Name of collection under which JSON doc needs to be searched
718
+ # @param Query
719
+ # - Query Object containing custom query for searching docs
720
+ # @param max
721
+ # - max result parameter
722
+ # @param offset
723
+ # - offset result parameter
724
+ #
725
+ # @return Storage object
726
+ #
727
+ # @raise App42Exception
728
+ #
729
+
730
+ def find_docs_with_query_paging_order_by(dbName, collectionName, query, max, offset, orderByKey, type)
731
+ puts "findDocsWithQueryPagingOrderBy Called "
732
+ puts "Base url #{@base_url}"
733
+ response = nil
734
+ storageObj = nil
735
+ storageObj = Storage.new()
736
+ util = Util.new
737
+ util.throwExceptionIfNullOrBlank(dbName, "DataBaseName");
738
+ util.throwExceptionIfNullOrBlank(collectionName, "CollectionName");
739
+ util.throwExceptionIfNullOrBlank(query, "query");
740
+ begin
741
+ connection = App42::Connection::RESTConnection.new(@base_url)
742
+ query_params = Hash.new
743
+ params = {
744
+ 'apiKey'=> @api_key,
745
+ 'version' => @version,
746
+ 'timeStamp' => util.get_timestamp_utc,
747
+ 'jsonQuery' => query.getStr()
748
+ }
749
+ if (orderByKey != nil)
750
+ query_params.store("orderByKey", orderByKey);
751
+ end
752
+ if (type != nil)
753
+ query_params.store("orderByType", type);
754
+ end
755
+ params.store("dbName", dbName);
756
+ params.store("collectionName", collectionName);
757
+ params.store("max", "" + (max.to_i).to_s)
758
+ params.store("offset", "" + (offset.to_i).to_s)
759
+ query_params = params.clone
760
+ signature = util.sign(@secret_key, params)
761
+ resource_url = "#{@version}/#{@resource}/findDocsByQuery/dbName/#{dbName}/collectionName/#{collectionName}/#{(max.to_i).to_s}/#{(offset.to_i).to_s}"
762
+ response = connection.get(signature, resource_url, query_params)
763
+ storage = StorageResponseBuilder.new
764
+ storageObj = storage.buildResponse(response)
765
+ rescue App42Exception =>e
766
+ raise e
767
+ rescue Exception => e
768
+ raise App42Exception.new(e)
769
+ end
770
+ return storageObj
771
+ end
772
+
773
+ end
774
+ end
775
+ end