comprodls-sdk 2.11.7 → 2.12.1

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 (48) hide show
  1. package/.eslintrc +28 -28
  2. package/.npmignore +5 -0
  3. package/README.md +371 -371
  4. package/dist/comprodls-sdk.js +11493 -11301
  5. package/dist/comprodls-sdk.min.js +18 -18
  6. package/grunt/publish.js +148 -148
  7. package/lib/comprodls.js +146 -146
  8. package/lib/config/index.js +337 -336
  9. package/lib/helpers/index.js +29 -29
  10. package/lib/helpers/lib/api/converter.js +119 -119
  11. package/lib/helpers/lib/api/index.js +120 -120
  12. package/lib/helpers/lib/api/validations.js +72 -72
  13. package/lib/helpers/lib/errors.js +129 -129
  14. package/lib/helpers/lib/utils.js +23 -23
  15. package/lib/helpers/lib/validator.js +100 -100
  16. package/lib/open_access/index.js +121 -121
  17. package/lib/services/activity/activity.js +209 -209
  18. package/lib/services/activity/attempt.js +431 -431
  19. package/lib/services/activity/index.js +28 -28
  20. package/lib/services/analytics/index.js +1555 -1555
  21. package/lib/services/attempts/index.js +342 -342
  22. package/lib/services/auth/classProduct.js +37 -37
  23. package/lib/services/auth/index.js +2541 -2535
  24. package/lib/services/collab/index.js +468 -468
  25. package/lib/services/drive/index.js +144 -144
  26. package/lib/services/integrations/index.js +279 -116
  27. package/lib/services/invitations/index.js +313 -313
  28. package/lib/services/lrs/index.js +459 -459
  29. package/lib/services/product/index.js +267 -267
  30. package/lib/services/pub/index.js +407 -407
  31. package/lib/services/push/index.js +187 -187
  32. package/lib/services/push/pubnubClientWrapper.js +557 -557
  33. package/lib/services/push/sessionStorage.js +64 -64
  34. package/lib/services/pushX/index.js +190 -190
  35. package/lib/services/pushX/pubnubClientWrapper.js +211 -211
  36. package/lib/services/sisevents/index.js +113 -113
  37. package/lib/services/spaces/index.js +976 -929
  38. package/lib/services/superuser/index.js +175 -175
  39. package/lib/services/workflows/index.js +464 -464
  40. package/lib/services/xapi/index.js +232 -232
  41. package/lib/token/index.js +114 -114
  42. package/lib/token/validations.js +88 -88
  43. package/package-lock.json +5095 -0
  44. package/package.json +1 -1
  45. package/test.js +50 -50
  46. package/.vscode/launch.json +0 -23
  47. package/npm-debug.log.189866131 +0 -0
  48. package/npm-debug.log.712840116 +0 -26
@@ -1,2535 +1,2541 @@
1
- /*************************************************************************
2
- *
3
- * COMPRO CONFIDENTIAL
4
- * __________________
5
- *
6
- * [2015] - [2020] Compro Technologies Private Limited
7
- * All Rights Reserved.
8
- *
9
- * NOTICE: All information contained herein is, and remains
10
- * the property of Compro Technologies Private Limited. The
11
- * intellectual and technical concepts contained herein are
12
- * proprietary to Compro Technologies Private Limited and may
13
- * be covered by U.S. and Foreign Patents, patents in process,
14
- * and are protected by trade secret or copyright law.
15
- *
16
- * Dissemination of this information or reproduction of this material
17
- * is strictly forbidden unless prior written permission is obtained
18
- * from Compro Technologies Pvt. Ltd..
19
- ***************************************************************************/
20
-
21
- /***********************************************************
22
- * comproDLS SDK AUTH API Adaptor
23
- * Functions for calling AUTH API.
24
- ************************************************************/
25
-
26
- var q = require('q');
27
- var request = require('superagent');
28
-
29
- var helpers = require('../../helpers');
30
- var converter = require('../../helpers/lib/api/converter');
31
-
32
- var DLSError = helpers.errors.DLSError;
33
-
34
- /*********************************
35
- * Setting Up Module Entry Point
36
- **********************************/
37
- module.exports = auth;
38
- //Auth Adaptor Contsructor
39
- function auth() {
40
- return {
41
- pisImport: pisImport.bind(this),
42
-
43
- getAllUsers: getAllUsers.bind(this),
44
- getUserProfile: getUserProfile.bind(this),
45
- deleteUserProfile: deleteUserProfile.bind(this),
46
- updateUserRole: updateUserRole.bind(this),
47
- getUserClasses: getUserClasses.bind(this),
48
- getClassUsers: getClassUsers.bind(this),
49
- enrollUsertoClass: enrollUsertoClass.bind(this),
50
- enrollSelftoClass: enrollSelftoClass.bind(this),
51
- enrollMultiUserstoClass: enrollMultiUserstoClass.bind(this),
52
- unEnrollMultiUserstoClass: unEnrollMultiUserstoClass.bind(this),
53
- unEnrollUsertoClass: unEnrollUsertoClass.bind(this),
54
-
55
- getOrgSettings: getOrgSettings.bind(this),
56
- updateOrgSettings: updateOrgSettings.bind(this),
57
- generateClassCode: generateClassCode.bind(this),
58
-
59
- getAllJobs: getAllJobs.bind(this),
60
- getJob: getJob.bind(this),
61
-
62
- createClass: createClass.bind(this),
63
- updateClass: updateClass.bind(this),
64
- createMultipleClasses: createMultipleClasses.bind(this),
65
- getAllClasses: getAllClasses.bind(this),
66
- getParticularClass: getParticularClass.bind(this),
67
- getParticularShadowClass: getParticularShadowClass.bind(this),
68
- createClassProductAssociation: createClassProductAssociation.bind(this),
69
- removeClassProductAssociation: removeClassProductAssociation.bind(this),
70
- addItemsToShowcaseOfAClass: addItemsToShowcaseOfAClass.bind(this),
71
- deleteItemsFromShowcaseOfAClass: deleteItemsFromShowcaseOfAClass.bind(this),
72
-
73
- getClassAppdata: getClassAppdata.bind(this),
74
- putClassAppdata: putClassAppdata.bind(this),
75
- deleteClassAppdata: deleteClassAppdata.bind(this),
76
-
77
- encodeURLParameter: encodeURLParameter.bind(this),
78
-
79
- createAssignedPath: createAssignedPath.bind(this),
80
- deleteAssignedPath: deleteAssignedPath.bind(this),
81
- updateAssignedPath: updateAssignedPath.bind(this),
82
-
83
- //Groups related APIs
84
- createGroup: createGroup.bind(this),
85
- getAllGroupsByPath: getAllGroupsByPath.bind(this),
86
- getAGroup: getAGroup.bind(this),
87
- updateGroup: updateGroup.bind(this),
88
- deleteGroup: deleteGroup.bind(this),
89
- getAllMembersOfAGroup: getAllMembersOfAGroup.bind(this),
90
- getAllGroupMembersByPath: getAllGroupMembersByPath.bind(this),
91
- createMultiUserGroupMembership: createMultiUserGroupMembership.bind(this),
92
- deleteMultiUserGroupMembership: deleteMultiUserGroupMembership.bind(this),
93
- getMyAllMemberships: getMyAllMemberships.bind(this),
94
- archiveGroup: archiveGroup.bind(this),
95
- unarchiveGroup: unarchiveGroup.bind(this)
96
- };
97
- }
98
-
99
- /*********************************
100
- * Public Function definitions
101
- **********************************/
102
-
103
- //options = {
104
- // userid: 'uuid or username', //optional.
105
- //}
106
- function getUserProfile(options) {
107
- /* Reference to comproDLS SDK object , contains the following properties
108
- * 1. self.orgId [String] : organization Id
109
- * 2. self.token [Object] : DLS token. It has following structure
110
- * {
111
- * "access_token" : [String]
112
- * }
113
- */
114
- var self = this;
115
- // Initializing promise
116
- var dfd = q.defer();
117
- // Validations
118
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
119
- if(err) { dfd.reject(err); }
120
- else {
121
- var userid = 'me';
122
- if(options) {
123
- if(options.userid) { userid = options.userid; }
124
- }
125
- // Passed all validations, Contruct API url
126
- var url = self.config.DEFAULT_HOSTS.AUTH +
127
- self.config.AUTH_API_URLS.userInfoAPI;
128
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, userId: userid });
129
-
130
- // Contruct parameters
131
- var params = {};
132
-
133
- // Setup request with URL and Params
134
- var requestAPI = request.get(url).query(params);
135
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
136
-
137
- // Setup token in Authorization header
138
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
139
- // Call GET USER INFO Api
140
- requestAPI.end(function(err, response) {
141
- if(err) {
142
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
143
- dfd.reject(err);
144
- }
145
- else {
146
- var res = converter.convertUserResponse({data: response.body});
147
- dfd.resolve(res);
148
- }
149
- });
150
- }
151
- return dfd.promise;
152
- }
153
-
154
- /**
155
- * options = {
156
- * userid : "" // dls user id, mandatory
157
- * }
158
- */
159
-
160
- function deleteUserProfile(options) {
161
- var self = this;
162
- var dfd = q.defer();
163
-
164
- // Validations
165
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
166
- if(err) { dfd.reject(err); }
167
- else {
168
- if (options.userid) {
169
- var userid = options.userid;
170
-
171
- // Passed all validations, Contruct API url
172
- var url = self.config.DEFAULT_HOSTS.AUTH +
173
- self.config.AUTH_API_URLS.userInfoAPI;
174
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, userId: userid });
175
-
176
- // Setup request with URL
177
- var requestAPI = request.delete(url);
178
- if (self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
179
-
180
- // Setup token in Authorization header
181
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
182
-
183
- // Call DELETE USER API
184
- requestAPI.end(function (error, response) {
185
- if (error) {
186
- error = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
187
- dfd.reject(error);
188
- }
189
- else { dfd.resolve(response.body); }
190
- });
191
- } else {
192
- err = {};
193
- err.message = err.description = 'Mandatory parameter userid not found in request options.';
194
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
195
- dfd.reject(err);
196
- }
197
- }
198
- return dfd.promise;
199
- }
200
-
201
- //options = {
202
- // search: 'search string', //optional.
203
- // lookup: 'string', // Search query (',' separated key value pairs), e.g. key1:val1,key2:val2,key3:val3
204
- // lookup-operator: 'AND'/'OR', // Operator to use while lookup. Current Possible Value - AND, OR
205
- // cursor: 'cursor', //optional, cursor to get next set of groups.
206
- // limit: number, //optional, limit the number of Users to fetch at a time.
207
- // role: 'string' //optional, to search Users by Role
208
- // sortField: ['first_name', 'last_name', 'ext_email', 'created', 'roles', ... (other fields of response entity)]
209
- // Sort the result according to given field. By default is 'last_name’, followed by ‘first_name’ in asc order.
210
- // sortOrder: ['desc', 'asc'] //optional, By default is 'desc’.
211
- //}
212
- function getAllUsers(options) {
213
- var self = this;
214
- // Initializing promise
215
- var dfd = q.defer();
216
- // Validations
217
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
218
- if(err) { dfd.reject(err); }
219
- else {
220
- var queryStr = 'orgid:' + self.orgId;
221
-
222
- if(options.lookup && options['lookup-operator']) {
223
- var lookupString = options.lookup;
224
- lookupString = lookupString.replace(/ext_/ig, '');
225
- var lookupArray = lookupString.split(',').map(function(item) { return item.trim(); });
226
- queryStr = queryStr + ' AND (' + lookupArray.join(' ' + options['lookup-operator'] + ' ') + ')';
227
- }
228
-
229
- if(options.role) {
230
- var roleNameString = options.role;
231
- var roleNameArray = roleNameString.split(',').map(function(item) { return item.trim(); });
232
- for(var idx in roleNameArray){
233
- roleNameArray[idx] = 'roles:' + roleNameArray[idx];
234
- }
235
- queryStr = queryStr + ' AND (' + roleNameArray.join(' OR ') + ')';
236
- }
237
-
238
- if(options.search) {
239
- queryStr = queryStr + ' AND (email:"' + options.search + '" OR first_name:"' + options.search + '" OR last_name:"'
240
- + options.search + '" OR username:"' + options.search + '" OR userid:"' + options.search + '")';
241
- }
242
-
243
- var sortField = options.sortField || 'last_name';
244
- var sortOrder = options.sortOrder || 'asc';
245
- if(sortField === 'ext_email') {
246
- sortField = 'email';
247
- }
248
- if(sortField !== 'created') {
249
- sortField = sortField + '.keyword';
250
- }
251
- var sortObj = {}, sortArr = [];
252
- sortObj[sortField] = sortOrder;
253
- sortArr.push(sortObj);
254
-
255
- var queryObj = {
256
- query: { query_string: { query: queryStr } },
257
- sort: sortArr
258
- };
259
-
260
- if(options.cursor) { queryObj.search_after = JSON.parse(options.cursor); }
261
- if(options.limit) { queryObj.size = options.limit; }
262
-
263
- //Passed all validations, Construct API url
264
- var url = self.config.DEFAULT_HOSTS.INTEGRATION +
265
- self.config.INTEGRATIONS_API_URLS.queryDataFromSearch;
266
- url = helpers.api.constructAPIUrl(url, { index: 'users' });
267
-
268
- // Contruct parameters
269
- var params = {
270
- query: JSON.stringify(queryObj)
271
- };
272
-
273
- // Setup request with URL and Params
274
- var requestAPI = request.get(url).query(params);
275
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
276
-
277
- // Setup token in Authorization header
278
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
279
-
280
- // Call GET ALL USER Api
281
- requestAPI.end(function(err, response) {
282
- if(err) {
283
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
284
- dfd.reject(err);
285
- }
286
- else {
287
- var responseObject = { entities: [] };
288
- responseObject.count = response.body.hits.hits.length;
289
- if(responseObject.count) {
290
- var cursor = response.body.hits.hits[response.body.hits.hits.length - 1].sort;
291
- responseObject.cursor = JSON.stringify(cursor);
292
- }
293
-
294
- for(var index in response.body.hits.hits) {
295
- var userEntity = response.body.hits.hits[index]._source;
296
- var userObj = {
297
- uuid: userEntity.dls_user_id,
298
- name: userEntity.first_name + ' ' + userEntity.last_name,
299
- email: userEntity.email || userEntity.ext_email,
300
- username: userEntity.userid + '--ACCOUNT',
301
- created: userEntity.created,
302
- org: { id: self.orgId }
303
- };
304
- if(userEntity.roles) {
305
- userObj.roles = userEntity.roles;
306
- }
307
- if(userEntity.provision_method) {
308
- userObj.provision_method = userEntity.provision_method;
309
- }
310
- if(userEntity.first_name) {
311
- userObj.first_name = userEntity.first_name;
312
- }
313
- if(userEntity.last_name) {
314
- userObj.last_name = userEntity.last_name;
315
- }
316
- if(userEntity.ext_parent_id) {
317
- userObj.ext_parent_id = userEntity.ext_parent_id;
318
- }
319
- if(userEntity.username) {
320
- userObj.ext_username = userEntity.username;
321
- }
322
- if(userEntity.userid) {
323
- userObj.ext_user_id = userEntity.userid;
324
- }
325
- if(userEntity.address) {
326
- userObj.address = userEntity.address;
327
- }
328
- responseObject.entities.push(userObj);
329
- }
330
- dfd.resolve(responseObject);
331
- }
332
- });
333
- }
334
- return dfd.promise;
335
- }
336
-
337
- //options = {
338
- // userid: 'dlsUserId', //mandatory
339
- // target_role: 'string', //mandatory
340
- // ext_data: { email_template_id: string } //optional
341
- //}
342
- function updateUserRole(options) {
343
- var self = this;
344
-
345
- // Initializing promise
346
- var dfd = q.defer();
347
- // Validations
348
- var error = helpers.validations.isAuthenticated(self.orgId, self.token);
349
- if(error) { dfd.reject(error); }
350
- else {
351
- if(options && options.userid && options.target_role) {
352
- // Passed all validations, Contruct API url
353
- var url = self.config.DEFAULT_HOSTS.AUTH +
354
- self.config.AUTH_API_URLS.updateUserRoleAPI;
355
- url = helpers.api.constructAPIUrl(url, { orgId : self.orgId, userId: options.userid });
356
- var bodyParams = { ext_data: options.ext_data, target_role: options.target_role };
357
- // Setup request with URL and Params
358
- var requestAPI = request.put(url)
359
- .set('Content-Type', 'application/json')
360
- .set('Accept', 'application/json')
361
- .send(bodyParams);
362
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
363
- // Setup token in Authorization header
364
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
365
-
366
- requestAPI.end(function(err, response) {
367
- if(err) {
368
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
369
- dfd.reject(err);
370
- }
371
- else { dfd.resolve(response); }
372
- });
373
- } else {
374
- var err = {};
375
- err.message = err.description = 'Mandatory parameter options, userid or target_role, not found in request options.';
376
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
377
- dfd.reject(err);
378
- }
379
- }
380
-
381
- return dfd.promise;
382
- }
383
-
384
- //options = {
385
- // userid: 'uuid or username', //optional.
386
- // search: 'search string', //optional.
387
- // details: true/false, //optional, includes products & assignments information of class.
388
- // sortField: ['startdate', 'enddate', 'title'] //optional, By default is 'title’.
389
- // sortOrder: ['desc', 'asc'] //optional, By default is 'desc’.
390
- // enrollmentType: ['creator', 'teacher', 'student'] //optional, bydefault send all classes.
391
- // teacherId: 'string' //optional, get classes of a particular teacher only.
392
- // cursor: 'cursor' //optional, cursor to get next set of classes
393
- // limit: integer //optional, Number of entities to fetch at once
394
- // bundleDetails: true/false //optional
395
- //}
396
- function getUserClasses(options) {
397
- var self = this;
398
- // Initializing promise
399
- var dfd = q.defer();
400
- // Validations
401
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
402
- if(err) { dfd.reject(err); }
403
- else {
404
- var userid = 'me';
405
- if(options) {
406
- if(options.userid) { userid = options.userid; }
407
- }
408
- // Passed all validations, Construct API url
409
- var url = self.config.DEFAULT_HOSTS.AUTH +
410
- self.config.AUTH_API_URLS.getUserClassesAPI;
411
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, userId: userid });
412
-
413
- // Contruct parameters
414
- var params = {};
415
- if(options) {
416
- if(options.search) { params.search = 'title:' + options.search; }
417
- if(options.details) { params.details = options.details; }
418
- if(options.enrollmentType) { params.enrollmentType = options.enrollmentType; }
419
- if(options.sortField) { params.sortField = options.sortField; }
420
- if(options.sortOrder) { params.sortOrder = options.sortOrder; }
421
- if(options.cursor) { params.cursor = options.cursor; }
422
- if(options.limit) { params.limit = options.limit; }
423
- if(options.teacherId) { params.lookup = 'class.class.instructor.uuid:' + options.teacherId; }
424
- if(options.bundleDetails) { params.bundleDetails = options.bundleDetails; }
425
- }
426
-
427
- // Setup request with URL and Params
428
- var requestAPI = request.get(url).query(params);
429
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
430
-
431
- // Setup token in Authorization header
432
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
433
-
434
- // Call GET ALL USER Api
435
- requestAPI.end(function(err, response) {
436
- if(err) {
437
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
438
- dfd.reject(err);
439
- }
440
- else { dfd.resolve(response.body); }
441
- });
442
- }
443
- return dfd.promise;
444
- }
445
-
446
- /**
447
- * options = {
448
- * classid: 'classid',
449
- * search: 'string', // (optional) Search Query
450
- * cursor: 'string', // (optional) Cursor string to fetch next set of Users
451
- * limit: 'integer' // (optional) Number of users to fetch at a time.
452
- * sortField: 'string' // (optional) Sort the result according to given field. By default is 'email’.
453
- * sortOrder: 'string' // (optional) Sort the result according to given order. By default is 'desc’.
454
- * }
455
- */
456
- function getClassUsers(options) {
457
- var self = this;
458
- // Initializing promise
459
- var dfd = q.defer();
460
- // Validations
461
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
462
- if(err) { dfd.reject(err); }
463
- else {
464
- if(options && options.classid) {
465
- // Passed all validations, Construct API url
466
- var url = self.config.DEFAULT_HOSTS.AUTH +
467
- self.config.AUTH_API_URLS.getClassUsersAPI;
468
- url = helpers.api.constructAPIUrl(url, {
469
- orgId: self.orgId, classId: options.classid
470
- });
471
-
472
- // Setup params
473
- var params = {};
474
- if(options.search) { params.search = options.search; }
475
- if(options.cursor) { params.cursor = options.cursor; }
476
- if(options.limit) { params.limit = options.limit; }
477
- if(options.sortField) { params.sortField = options.sortField; }
478
- if(options.sortOrder) { params.sortOrder = options.sortOrder; }
479
-
480
- // Setup request with URL and Params
481
- var requestAPI = request.get(url).query(params);
482
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
483
-
484
- // Setup token in Authorization header
485
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
486
-
487
- // Call GET ALL USER Api
488
- requestAPI.end(function(err, response) {
489
- if(err) {
490
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
491
- dfd.reject(err);
492
- }
493
- else {
494
- response.body.entities = converter.convertEnrollmetsResponse({data: response.body.entities}) ;
495
- dfd.resolve(response.body);
496
- }
497
- });
498
- } else {
499
- err = {};
500
- err.message = err.description = 'Required parameter classid is not defined.';
501
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
502
- dfd.reject(err);
503
- }
504
- }
505
- return dfd.promise;
506
- }
507
-
508
- //options = {
509
- // extension: 'csv',
510
- // import_type: 'users'/'groups'/'user-group-enrollment',
511
- // upFile: '' // path to csv file to be uploaded
512
- //}
513
- function pisImport(options) {
514
- var self = this;
515
- // Initializing promise
516
- var dfd = q.defer();
517
- // Validations
518
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
519
- if(err) { dfd.reject(err); }
520
- else {
521
- // Passed all validations, Construct API url
522
- var url = self.config.DEFAULT_HOSTS.AUTH +
523
- self.config.AUTH_API_URLS.pisImportAPI;
524
- url = helpers.api.constructAPIUrl(url, {"orgId" : self.orgId});
525
- // Contruct parameters
526
- var params = {};
527
- var upfile;
528
- if(options) {
529
- if(options.extension) { params.extension = options.extension; }
530
- if(options.import_type) { params.import_type = options.import_type; }
531
- if(options.upfile) { upfile = options.upfile; }
532
- }
533
-
534
- // Setup request with URL and Params
535
- var requestAPI = request.post(url).query(params)
536
- .set('Content-Type', 'multipart/form-data')
537
- .attach('upfile', upfile);
538
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
539
-
540
- // Setup token in Authorization header
541
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
542
-
543
- // Call PIS IMPORT Api
544
- requestAPI.end(function(err, response) {
545
- if(err) {
546
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
547
- dfd.reject(err);
548
- }
549
- else { dfd.resolve(response.body); }
550
- });
551
- }
552
- return dfd.promise;
553
- }
554
-
555
- //options = {
556
- // field: '' // apps / lti / sis / pis / product[ANY ONE]
557
- //}
558
- function getOrgSettings(options) {
559
- var self = this;
560
- // Initializing promise
561
- var dfd = q.defer();
562
- // Validations
563
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
564
- if(err) { dfd.reject(err); }
565
- else {
566
- // Passed all validations, Construct API url
567
- var url = self.config.DEFAULT_HOSTS.AUTH +
568
- self.config.AUTH_API_URLS.getSettings;
569
- url = helpers.api.constructAPIUrl(url, {orgId: self.orgId});
570
-
571
- // Contruct parameters
572
- var params = {};
573
- if(options && options.field) {
574
- url = self.config.DEFAULT_HOSTS.AUTH +
575
- self.config.AUTH_API_URLS.getSettingsField;
576
- url = helpers.api.constructAPIUrl(url, {
577
- orgId: self.orgId, field: options.field
578
- });
579
- }
580
-
581
- // Setup request with URL and Params
582
- var requestAPI = request.get(url).query(params);
583
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
584
-
585
- // Setup token in Authorization header
586
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
587
-
588
- // Call SIS IMPORT Api
589
- requestAPI.end(function(err, response) {
590
- if(err) {
591
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
592
- dfd.reject(err);
593
- }
594
- else { dfd.resolve(response.body); }
595
- });
596
- }
597
- return dfd.promise;
598
- }
599
-
600
- //options = {
601
- // body: {} // the top level settings field to be updated.
602
- //}
603
- function updateOrgSettings(options) {
604
- var self = this;
605
- // Initializing promise
606
- var dfd = q.defer();
607
- // Validations
608
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
609
- if(err) { dfd.reject(err); }
610
- else {
611
- // Passed all validations, Construct API url
612
- var url = self.config.DEFAULT_HOSTS.AUTH +
613
- self.config.AUTH_API_URLS.getSettings;
614
- url = helpers.api.constructAPIUrl(url, {orgId: self.orgId});
615
- // Setup request with URL and Params
616
- var requestAPI = request.put(url);
617
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
618
-
619
- if(options.body) {
620
- if(options.body.sis && (! options.body.sis.productid)) {
621
- options.body.sis.productid = [];
622
- }
623
- requestAPI.send(options.body);
624
- }
625
- // Setup token in Authorization header
626
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
627
-
628
- // Call SIS IMPORT Api
629
- requestAPI.end(function(err, response) {
630
- if(err) {
631
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
632
- dfd.reject(err);
633
- }
634
- else { dfd.resolve(response.body); }
635
- });
636
- }
637
- return dfd.promise;
638
- }
639
-
640
- //options = {
641
- // classid: "string"
642
- //}
643
- function generateClassCode(options) {
644
- var self = this, err;
645
- // Initializing promise
646
- var dfd = q.defer();
647
- if(options && options.classid) {
648
- // Validations
649
- err = helpers.validations.isAuthenticated(self.orgId, self.token);
650
- if(err) { dfd.reject(err); }
651
- else {
652
- // Passed all validations, Construct API url
653
- var url = self.config.DEFAULT_HOSTS.AUTH +
654
- self.config.AUTH_API_URLS.generateClassCode;
655
- url = helpers.api.constructAPIUrl(url, {
656
- orgId: self.orgId, classId: options.classid
657
- });
658
- // Setup request with URL and Params
659
- var requestAPI = request.post(url);
660
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
661
-
662
- // Setup token in Authorization header
663
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
664
-
665
- // Call Update class settings Api
666
- requestAPI.end(function(err, response) {
667
- if(err) {
668
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
669
- dfd.reject(err);
670
- }
671
- else { dfd.resolve(response.body); }
672
- });
673
- }
674
- } else {
675
- err = {};
676
- err.message = err.description = 'classid not found in request options.';
677
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
678
- dfd.reject(err);
679
- }
680
- return dfd.promise;
681
- }
682
-
683
- /**
684
- * {
685
- accountId: 'string' //mandatory
686
- extUserId: 'string', //mandatory
687
- jobType: 'string' //optional queryParam, Use this param to get All Jobs of a particular jobType.
688
- }
689
- */
690
- function getAllJobs(options) {
691
- var self = this;
692
- // Initializing promise
693
- var dfd = q.defer();
694
-
695
- if(options && options.accountId && options.extUserId) {
696
- // Passed all validations, Contruct API url
697
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.getAllJobs;
698
- url = helpers.api.constructAPIUrl(url, { accountId : options.accountId, extUserId: options.extUserId });
699
-
700
- var params = {};
701
- if(options.jobType) { params.jobType = options.jobType; }
702
-
703
- // Setup request with URL and Params
704
- var requestAPI = request.get(url).query(params);
705
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
706
-
707
- requestAPI.end(function(error, response) {
708
- if(error) {
709
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
710
- dfd.reject(error);
711
- }
712
- else { dfd.resolve(response.body); }
713
- });
714
- } else {
715
- var err = {};
716
- err.message = err.description = 'accountId or extUserId not found in request options.';
717
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
718
- dfd.reject(err);
719
- }
720
-
721
- return dfd.promise;
722
- }
723
-
724
- /**
725
- * options = {
726
- accountId: 'string', //mandatory
727
- extUserId: 'string', //mandatory
728
- jobId: 'string', //mandatory
729
- jobType: 'string' //mandatory
730
- }
731
- */
732
- function getJob(options) {
733
- var self = this;
734
- // Initializing promise
735
- var dfd = q.defer();
736
-
737
- if(options && options.accountId && options.extUserId && options.jobId && options.jobType) {
738
- // Passed all validations, Contruct API url
739
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.getJob;
740
- url = helpers.api.constructAPIUrl(url, { accountId : options.accountId, extUserId: options.extUserId,
741
- jobId: options.jobId });
742
- var params = { jobType: options.jobType };
743
-
744
- // Setup request with URL and Params
745
- var requestAPI = request.get(url).query(params);
746
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
747
-
748
- requestAPI.end(function(error, response) {
749
- if(error) {
750
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
751
- dfd.reject(error);
752
- }
753
- else { dfd.resolve(response.body); }
754
- });
755
- } else {
756
- var err = {};
757
- err.message = err.description = 'accountId or extUserId or jobType or jobId or not found in request options.';
758
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
759
- dfd.reject(err);
760
- }
761
-
762
- return dfd.promise;
763
- }
764
-
765
- //options = {
766
- // search: 'search string', //optional.
767
- // sortField: ['startdate', 'enddate', 'title', 'created'] //optional, By default is 'created’.
768
- // sortOrder: ['desc', 'asc'] //optional, By default is 'desc’.
769
- // cursor: 'cursor' //optional, cursor to get next set of groups.
770
- // limit: integer, // (optional) limit number of Classes in response.
771
- // lookup: 'string', // (optional) Search query (',' separated key value pairs),
772
- // Eg. key1:val1,key2:val2
773
- //}
774
- function getAllClasses(options) {
775
- var self = this;
776
-
777
- //Initializing promise
778
- var dfd = q.defer();
779
-
780
- //Validations
781
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
782
- if(err) {
783
- dfd.reject(err);
784
- } else {
785
- var queryStr = 'orgid:' + self.orgId;
786
-
787
- if(options.search) {
788
- queryStr = queryStr + ' AND (title:"' + options.search + '" OR class.instructor.first_name:"' + options.search +
789
- '" OR class.instructor.last_name:"' + options.search + '" OR description:"' + options.search + '")';
790
- }
791
-
792
- var sortField = options.sortField || 'created';
793
- if(sortField === 'enddate' || sortField === 'startdate') {
794
- sortField = 'class.' + sortField;
795
- }
796
- if(sortField === 'title') {
797
- sortField = sortField + '.keyword';
798
- }
799
- var sortOrder = options.sortOrder || 'desc';
800
- var sortObj = {}, sortArr = [];
801
- sortObj[sortField] = sortOrder;
802
- sortArr.push(sortObj);
803
-
804
- var queryObj = {
805
- query: { query_string: { query: queryStr } },
806
- sort: sortArr
807
- };
808
-
809
- if(options.cursor) { queryObj.search_after = JSON.parse(options.cursor); }
810
- if(options.limit) { queryObj.size = options.limit; }
811
-
812
- //Passed all validations, Construct API url
813
- var url = self.config.DEFAULT_HOSTS.INTEGRATION +
814
- self.config.INTEGRATIONS_API_URLS.queryDataFromSearch;
815
- url = helpers.api.constructAPIUrl(url, { index: 'classes' });
816
-
817
- // Contruct parameters
818
- var params = {
819
- query: JSON.stringify(queryObj)
820
- };
821
-
822
- //Setup request with URL and Params
823
- var requestAPI = request.get(url).query(params);
824
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
825
-
826
- //Setup token in Authorization header
827
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
828
-
829
- //Call GET ALL USER Api
830
- requestAPI.end(function(err, response) {
831
- if(err) {
832
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
833
- dfd.reject(err);
834
- } else {
835
- var responseObject = { entities: [] };
836
- responseObject.count = response.body.hits.hits.length;
837
- if(responseObject.count) {
838
- var cursor = response.body.hits.hits[response.body.hits.hits.length - 1].sort;
839
- responseObject.cursor = JSON.stringify(cursor);
840
- }
841
- for(var index in response.body.hits.hits) {
842
- var classEntity = response.body.hits.hits[index]._source;
843
- var classObj = {
844
- uuid: classEntity.classid,
845
- created: classEntity.created,
846
- modified: classEntity.modified,
847
- path: classEntity.path,
848
- category: classEntity.category,
849
- class: {
850
- enddate: classEntity.class.enddate,
851
- instructor: {
852
- name: classEntity.class.instructor.first_name + ' ' + classEntity.class.instructor.last_name,
853
- last_name: classEntity.class.instructor.last_name,
854
- first_name: classEntity.class.instructor.first_name,
855
- uuid: classEntity.class.instructor.dls_user_id,
856
- email: classEntity.class.instructor.email,
857
- username: classEntity.class.instructor.userid + '--ACCOUNT'
858
- },
859
- startdate: classEntity.class.startdate
860
- },
861
- 'class.settings.active': classEntity['class.settings.active'],
862
- class_code: classEntity.class_code,
863
- class_ownership: classEntity.class_ownership || { owner_status: 'ENROLLED', model: 'STRICT' },
864
- description: classEntity.description,
865
- provision_method: classEntity.class.provision_method,
866
- title: classEntity.title
867
- };
868
- responseObject.entities.push(classObj);
869
- }
870
- dfd.resolve(responseObject);
871
- }
872
- });
873
- }
874
- return dfd.promise;
875
- }
876
-
877
-
878
- //options = {
879
- // classId: 'class uuid'
880
- //}
881
- function getParticularClass(options) {
882
- var self = this;
883
-
884
- //Initializing promise
885
- var dfd = q.defer();
886
-
887
- //Validations
888
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
889
- if(err) {
890
- dfd.reject(err);
891
- } else {
892
- if(options && options.classId) {
893
- //Passed all validations, Contruct API url
894
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.getParticularClassAPI;
895
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classId } );
896
-
897
- var requestAPI = request.get(url);
898
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
899
-
900
- //Setup token in Authorization header
901
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
902
-
903
- requestAPI.end(function(err, response) {
904
- if(err) {
905
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
906
- dfd.reject(err);
907
- } else {
908
- dfd.resolve(response.body);
909
- }
910
- });
911
- } else {
912
- err = {};
913
- err.message = err.description = 'classId not found in request options.';
914
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
915
- dfd.reject(err);
916
- }
917
- }
918
- return dfd.promise;
919
- }
920
-
921
- //options = {
922
- // ext_classid: 'ext classid' //mandatory
923
- //}
924
- function getParticularShadowClass(options) {
925
- var self = this;
926
-
927
- //Initializing promise
928
- var dfd = q.defer();
929
-
930
- // Validations
931
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
932
- if(err) {
933
- dfd.reject(err);
934
- }
935
- else {
936
- if(options && options.ext_classid) {
937
- //Passed all validations, Contruct API url
938
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.getParticularShadowClassAPI;
939
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, extClassId: options.ext_classid } );
940
-
941
- var requestAPI = request.get(url);
942
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
943
-
944
- //Setup token in Authorization header
945
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
946
-
947
- requestAPI.end(function(err, response) {
948
- if(err) {
949
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
950
- dfd.reject(err);
951
- }
952
- else {
953
- dfd.resolve(response.body);
954
- }
955
- });
956
- } else {
957
- err = {};
958
- err.message = err.description = 'ext_classid not found in request options.';
959
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
960
- dfd.reject(err);
961
- }
962
- }
963
- return dfd.promise;
964
- }
965
-
966
- //options = {
967
- // classId: 'class uuid',
968
- // productcode: 'productcode'
969
- //}
970
- function createClassProductAssociation(options) {
971
- var self = this;
972
- // Initializing promise
973
- var dfd = q.defer();
974
- // Validations
975
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
976
- if(err) { dfd.reject(err); }
977
- else {
978
- if(options && options.classId && options.productcode) {
979
- // Passed all validations, Contruct API url
980
- var url = self.config.DEFAULT_HOSTS.AUTH +
981
- self.config.AUTH_API_URLS.classProductAssociation;
982
- url = helpers.api.constructAPIUrl(url, {
983
- orgId: self.orgId, classId: options.classId, productcode: options.productcode
984
- });
985
-
986
- // Setup request with URL and Params
987
- var requestAPI = request.post(url)
988
- .set('Content-Type', 'application/json')
989
- .set('Accept', 'application/json');
990
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
991
-
992
- // Setup token in Authorization header
993
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
994
-
995
- requestAPI.end(function(err, response) {
996
- if(err) {
997
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
998
- dfd.reject(err);
999
- }
1000
- else { dfd.resolve(response.body); }
1001
- });
1002
- } else {
1003
- err = {};
1004
- err.message = err.description = 'classId or productcode not found in request options.';
1005
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1006
- dfd.reject(err);
1007
- }
1008
- }
1009
- return dfd.promise;
1010
- }
1011
-
1012
- //options = {
1013
- // classId: 'class uuid',
1014
- // productcode: 'product code'
1015
- //}
1016
- function removeClassProductAssociation(options) {
1017
- var self = this;
1018
- // Initializing promise
1019
- var dfd = q.defer();
1020
- // Validations
1021
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1022
- if(err) { dfd.reject(err); }
1023
- else {
1024
- if(options && options.classId && options.productcode) {
1025
- // Passed all validations, Contruct API url
1026
- var url = self.config.DEFAULT_HOSTS.AUTH +
1027
- self.config.AUTH_API_URLS.classProductAssociation;
1028
- url = helpers.api.constructAPIUrl(url, {
1029
- orgId: self.orgId, classId: options.classId, productcode: options.productcode
1030
- });
1031
-
1032
- // Contruct parameters
1033
- var params = {};
1034
-
1035
- // Setup request with URL and Params
1036
- var requestAPI = request.delete(url).query(params);
1037
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1038
-
1039
- // Setup token in Authorization header
1040
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1041
-
1042
- requestAPI.end(function(err, response) {
1043
- if(err) {
1044
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1045
- dfd.reject(err);
1046
- }
1047
- else { dfd.resolve(response.body); }
1048
- });
1049
- } else {
1050
- err = {};
1051
- err.message = err.description = 'classId or productcode not found in request options.';
1052
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1053
- dfd.reject(err);
1054
- }
1055
- }
1056
- return dfd.promise;
1057
- }
1058
-
1059
- /*options = {
1060
- classid: 'string'
1061
- }*/
1062
- function getClassAppdata(options) {
1063
- var self = this;
1064
- // Initializing promise
1065
- var dfd = q.defer();
1066
- // Validations
1067
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1068
- if(err) { dfd.reject(err); }
1069
- else {
1070
- if(options && options.classid) {
1071
- // Passed all validations, Contruct API url
1072
- var url = self.config.DEFAULT_HOSTS.AUTH +
1073
- self.config.AUTH_API_URLS.ClassAppdata;
1074
- url = helpers.api.constructAPIUrl(url, {
1075
- orgId: self.orgId, classid: options.classid
1076
- });
1077
- //Setup request with URL
1078
- var requestAPI = request.get(url);
1079
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1080
-
1081
- //Setup token in Authorization header
1082
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1083
-
1084
- //Call Class Appdata Api
1085
- requestAPI.end(function(err, response) {
1086
- if(err) {
1087
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1088
- dfd.reject(err);
1089
- } else {
1090
- dfd.resolve(response.body);
1091
- }
1092
- });
1093
- } else {
1094
- err = {};
1095
- err.message = err.description = 'classid not found in request options.';
1096
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1097
- dfd.reject(err);
1098
- }
1099
- }
1100
- return dfd.promise;
1101
- }
1102
-
1103
- /*options = {
1104
- classid: 'string',
1105
- appdata: {}
1106
- }*/
1107
-
1108
- function putClassAppdata(options) {
1109
- var self = this;
1110
- // Initializing promise
1111
- var dfd = q.defer();
1112
- // Validations
1113
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1114
- if(err) { dfd.reject(err); }
1115
- else {
1116
- if(options && options.classid && options.appdata) {
1117
- // Passed all validations, Contruct API url
1118
- var url = self.config.DEFAULT_HOSTS.AUTH +
1119
- self.config.AUTH_API_URLS.ClassAppdata;
1120
- url = helpers.api.constructAPIUrl(url, {
1121
- orgId: self.orgId, classid: options.classid
1122
- });
1123
-
1124
- // Setup request with URL and Params
1125
- var requestAPI = request.put(url)
1126
- .set('Content-Type', 'application/json')
1127
- .set('Accept', 'application/json')
1128
- .send(options.appdata);
1129
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1130
-
1131
- // Setup token in Authorization header
1132
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1133
-
1134
- requestAPI.end(function(err, response) {
1135
- if(err) {
1136
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1137
- dfd.reject(err);
1138
- }
1139
- else { dfd.resolve(response.body); }
1140
- });
1141
- } else {
1142
- err = {};
1143
- err.message = err.description = 'classid or appdata not found in request options.';
1144
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1145
- dfd.reject(err);
1146
- }
1147
- }
1148
- return dfd.promise;
1149
- }
1150
-
1151
- /*options = {
1152
- classid: 'string'
1153
- }*/
1154
-
1155
- function deleteClassAppdata(options) {
1156
- var self = this;
1157
- // Initializing promise
1158
- var dfd = q.defer();
1159
- // Validations
1160
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1161
- if(err) { dfd.reject(err); }
1162
- else {
1163
- if(options && options.classid) {
1164
- // Passed all validations, Contruct API url
1165
- var url = self.config.DEFAULT_HOSTS.AUTH +
1166
- self.config.AUTH_API_URLS.ClassAppdata;
1167
- url = helpers.api.constructAPIUrl(url, {
1168
- orgId: self.orgId, classid: options.classid
1169
- });
1170
-
1171
- // Setup request with URL and Params
1172
- var requestAPI = request.delete(url);
1173
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1174
-
1175
- // Setup token in Authorization header
1176
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1177
-
1178
- requestAPI.end(function(err, response) {
1179
- if(err) {
1180
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1181
- dfd.reject(err);
1182
- }
1183
- else { dfd.resolve(response.body); }
1184
- });
1185
- } else {
1186
- err = {};
1187
- err.message = err.description = 'classid not found in request options.';
1188
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1189
- dfd.reject(err);
1190
- }
1191
- }
1192
- return dfd.promise;
1193
- }
1194
-
1195
- //options = {
1196
- // classid: '', //Class Id
1197
- // userid: '', //User Id
1198
- //};
1199
- function enrollUsertoClass(options) {
1200
- var self = this;
1201
- var err = {};
1202
- //Initializing promise
1203
- var dfd = q.defer();
1204
- if(options && options.classid && options.userid) {
1205
- //Validations
1206
- err = helpers.validations.isAuthenticated(self.orgId, self.token);
1207
- if(err) {
1208
- dfd.reject(err);
1209
- } else {
1210
- //Passed all validations, Construct API url
1211
- var url = self.config.DEFAULT_HOSTS.AUTH +
1212
- self.config.AUTH_API_URLS.enrollUsertoClass;
1213
- url = helpers.api.constructAPIUrl(url, {
1214
- orgId: self.orgId,
1215
- classId: options.classid,
1216
- userId: options.userid
1217
- });
1218
-
1219
- //Contruct parameters
1220
- var params = {};
1221
-
1222
- //Setup request with URL and Params
1223
- var requestAPI = request.post(url)
1224
- .set('Content-Type', 'application/json')
1225
- .set('Accept', 'application/json')
1226
- .query(params);
1227
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1228
-
1229
- //Setup token in Authorization header
1230
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1231
-
1232
- //Call GET Product by it's code Api
1233
- requestAPI.end(function(err, response) {
1234
- if(err) {
1235
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1236
- dfd.reject(err);
1237
- } else {
1238
- dfd.resolve(response.body);
1239
- }
1240
- });
1241
- }
1242
- } else {
1243
- err.message = err.description = 'Mandatory parameter classid or userid not found in request options';
1244
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1245
- dfd.reject(err);
1246
- }
1247
- return dfd.promise;
1248
- }
1249
-
1250
- //options = {
1251
- // classid: '', //Class Id
1252
- //};
1253
- function enrollSelftoClass(options) {
1254
- var self = this;
1255
- var err = {};
1256
- //Initializing promise
1257
- var dfd = q.defer();
1258
- if(options && options.classid) {
1259
- //Validations
1260
- err = helpers.validations.isAuthenticated(self.orgId, self.token);
1261
- if(err) {
1262
- dfd.reject(err);
1263
- } else {
1264
- //Passed all validations, Construct API url
1265
- var url = self.config.DEFAULT_HOSTS.AUTH +
1266
- self.config.AUTH_API_URLS.enrollSelftoClass;
1267
- url = helpers.api.constructAPIUrl(url, {
1268
- orgId: self.orgId,
1269
- classId: options.classid
1270
- });
1271
-
1272
- //Setup request with URL and Params
1273
- var requestAPI = request.post(url);
1274
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1275
-
1276
- //Setup token in Authorization header
1277
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1278
-
1279
- //Call GET Product by it's code Api
1280
- requestAPI.end(function(err, response) {
1281
- if(err) {
1282
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1283
- dfd.reject(err);
1284
- } else {
1285
- dfd.resolve(response.body);
1286
- }
1287
- });
1288
- }
1289
- }
1290
- else {
1291
- err.message = err.description = 'Mandatory parameter classid not found in request options';
1292
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1293
- dfd.reject(err);
1294
- }
1295
- return dfd.promise;
1296
- }
1297
-
1298
- //options = {
1299
- // classid: '', //Class Id
1300
- // users: ['dls-userid1', 'dls-userid-2'] //Users Id
1301
- //};
1302
- function enrollMultiUserstoClass(options) {
1303
- var self = this;
1304
- var err = {};
1305
- //Initializing promise
1306
- var dfd = q.defer();
1307
- if(options && options.classid && options.users) {
1308
- //Validations
1309
- err = helpers.validations.isAuthenticated(self.orgId, self.token);
1310
- if(err) {
1311
- dfd.reject(err);
1312
- } else {
1313
- //Passed all validations, Construct API url
1314
- var url = self.config.DEFAULT_HOSTS.AUTH +
1315
- self.config.AUTH_API_URLS.enrollMultiUserstoClass;
1316
- url = helpers.api.constructAPIUrl(url, {
1317
- orgId: self.orgId,
1318
- classId: options.classid
1319
- });
1320
-
1321
- //Contruct parameters
1322
- var params = {
1323
- users: options.users
1324
- };
1325
- //Setup request with URL and Params
1326
- var requestAPI = request.post(url)
1327
- .set('Content-Type', 'application/json')
1328
- .set('Accept', 'application/json')
1329
- .send(params);
1330
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1331
-
1332
- //Setup token in Authorization header
1333
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1334
-
1335
- //Call GET Product by it's code Api
1336
- requestAPI.end(function(err, response) {
1337
- if(err) {
1338
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1339
- dfd.reject(err);
1340
- } else {
1341
- dfd.resolve(response.body);
1342
- }
1343
- });
1344
- }
1345
- } else {
1346
- err.message = err.description = 'Mandatory parameter classid or users ' +
1347
- 'array not found in request options';
1348
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1349
- dfd.reject(err);
1350
- }
1351
- return dfd.promise;
1352
- }
1353
-
1354
- //options = {
1355
- // classid: '', //Class Id
1356
- // users: ['dls-userid1', 'dls-userid-2'] //Users Id
1357
- //};
1358
- function unEnrollMultiUserstoClass(options) {
1359
- var self = this;
1360
- var err = {};
1361
- //Initializing promise
1362
- var dfd = q.defer();
1363
- if(options && options.classid && options.users) {
1364
- //Validations
1365
- err = helpers.validations.isAuthenticated(self.orgId, self.token);
1366
- if(err) {
1367
- dfd.reject(err);
1368
- } else {
1369
- //Passed all validations, Construct API url
1370
- var url = self.config.DEFAULT_HOSTS.AUTH +
1371
- self.config.AUTH_API_URLS.enrollMultiUserstoClass;
1372
- url = helpers.api.constructAPIUrl(url, {
1373
- orgId: self.orgId,
1374
- classId: options.classid
1375
- });
1376
-
1377
- //Contruct parameters
1378
- var params = {
1379
- users: options.users
1380
- };
1381
- //Setup request with URL and Params
1382
- var requestAPI = request.delete(url)
1383
- .set('Content-Type', 'application/json')
1384
- .set('Accept', 'application/json')
1385
- .send(params);
1386
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1387
-
1388
- //Setup token in Authorization header
1389
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1390
-
1391
- //Call GET Product by it's code Api
1392
- requestAPI.end(function(err, response) {
1393
- if(err) {
1394
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1395
- dfd.reject(err);
1396
- } else {
1397
- dfd.resolve(response.body);
1398
- }
1399
- });
1400
- }
1401
- } else {
1402
- err.message = err.description = 'Mandatory parameter classid or users ' +
1403
- 'array not found in request options';
1404
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1405
- dfd.reject(err);
1406
- }
1407
- return dfd.promise;
1408
- }
1409
-
1410
- //options = {
1411
- // classid: '', //Class Id
1412
- // userid: '', //User Id
1413
- //};
1414
- function unEnrollUsertoClass(options) {
1415
- var self = this;
1416
- var err = {};
1417
- //Initializing promise
1418
- var dfd = q.defer();
1419
- if(options && options.classid && options.userid) {
1420
- //Validations
1421
- err = helpers.validations.isAuthenticated(self.orgId, self.token);
1422
- if(err) {
1423
- dfd.reject(err);
1424
- } else {
1425
- //Passed all validations, Construct API url
1426
- var url = self.config.DEFAULT_HOSTS.AUTH +
1427
- self.config.AUTH_API_URLS.enrollUsertoClass;
1428
- url = helpers.api.constructAPIUrl(url, {
1429
- orgId: self.orgId,
1430
- classId: options.classid,
1431
- userId: options.userid
1432
- });
1433
-
1434
- //Contruct parameters
1435
- var params = {};
1436
-
1437
- //Setup request with URL and Params
1438
- var requestAPI = request.delete(url).query(params);
1439
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1440
-
1441
- //Setup token in Authorization header
1442
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1443
-
1444
- //Call GET Product by it's code Api
1445
- requestAPI.end(function(err, response) {
1446
- if(err) {
1447
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1448
- dfd.reject(err);
1449
- } else {
1450
- dfd.resolve(response.body);
1451
- }
1452
- });
1453
- }
1454
- } else {
1455
- err.message = err.description = 'Mandatory parameter classid or userid not found in request options';
1456
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1457
- dfd.reject(err);
1458
- }
1459
- return dfd.promise;
1460
- }
1461
-
1462
- //options = ['parameter1', 'parameter2']
1463
- function encodeURLParameter(options) {
1464
- var response = {};
1465
- for(var param in options) {
1466
- response[options[param]] = encodeURIComponent(options[param]);
1467
- }
1468
- return response;
1469
- }
1470
-
1471
- /**
1472
- * options = {
1473
- * title: 'class title',
1474
- * startdate: 'Epoch(Unix) timestamp in milliseconds',
1475
- * enddate: 'Epoch(Unix) timestamp in milliseconds',
1476
- * description: '' // Optional field
1477
- * class_ownership: 'STRICT' / 'NO_OWNER' // Default - STRICT, Optional field
1478
- * }
1479
- */
1480
- function createClass(options) {
1481
- var self = this;
1482
-
1483
- //Initializing promise
1484
- var dfd = q.defer();
1485
-
1486
- //Validations
1487
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1488
- if(err) {
1489
- dfd.reject(err);
1490
- } else {
1491
- if(options && options.title && options.startdate && options.enddate) {
1492
- //Passed all validations, Contruct API url
1493
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.createClass;
1494
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId });
1495
-
1496
- //Contruct parameters
1497
- var params = {
1498
- title: options.title,
1499
- startdate: options.startdate,
1500
- enddate: options.enddate
1501
- };
1502
-
1503
- if(options.description){ params.description = options.description; }
1504
- if(options.class_ownership){ params.class_ownership = options.class_ownership; }
1505
-
1506
- //Setup request with URL and Params
1507
- var requestAPI = request.post(url).send(params);
1508
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1509
-
1510
- //Setup token in Authorization header
1511
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1512
-
1513
- requestAPI.end(function(err, response) {
1514
- if(err) {
1515
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1516
- dfd.reject(err);
1517
- } else {
1518
- var res = converter.convertClassResponse({data: response.body}) ;
1519
- dfd.resolve(res);
1520
- }
1521
- });
1522
- } else {
1523
- err = {};
1524
- err.message = err.description = 'title or startdate or enddate not found in request options.';
1525
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1526
- dfd.reject(err);
1527
- }
1528
- }
1529
- return dfd.promise;
1530
- }
1531
-
1532
- //options = {
1533
- // classid: 'class id',
1534
- // title: 'class title', //Optional field
1535
- // startdate: 'Epoch(Unix) timestamp in milliseconds', //Optional field
1536
- // enddate: 'Epoch(Unix) timestamp in milliseconds', //Optional field
1537
- // description: '' //Optional field
1538
- //}
1539
- function updateClass(options) {
1540
- var self = this;
1541
-
1542
- //Initializing promise
1543
- var dfd = q.defer();
1544
-
1545
- //Validations
1546
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1547
- if(err) {
1548
- dfd.reject(err);
1549
- } else {
1550
- if(options && options.classid &&
1551
- (options.title || options.startdate || options.enddate || options.description))
1552
- {
1553
- //Passed all validations, Contruct API url
1554
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.specificClass;
1555
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classid });
1556
-
1557
- //Contruct parameters
1558
- var params = {};
1559
-
1560
- //Setup request with URL and Params
1561
- var requestAPI = request.put(url).send(options);
1562
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1563
-
1564
- //Setup token in Authorization header
1565
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1566
-
1567
- requestAPI.end(function(err, response) {
1568
- if(err) {
1569
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1570
- dfd.reject(err);
1571
- } else {
1572
- dfd.resolve(response.body);
1573
- }
1574
- });
1575
- } else {
1576
- err = {};
1577
- err.message = err.description = 'classid and atleast one of update field (title or startdate or enddate or description) required in request options.';
1578
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1579
- dfd.reject(err);
1580
- }
1581
- }
1582
- return dfd.promise;
1583
- }
1584
-
1585
- /** options =
1586
- *{
1587
- "space_title": "string",
1588
- "classes": [
1589
- {
1590
- "title": "class tiltle",
1591
- "startdate": 'Epoch(Unix) timestamp in milliseconds',
1592
- "enddate": 'Epoch(Unix) timestamp in milliseconds',
1593
- "rowId": 'string with max limit 3 characters,
1594
- "description": "string",
1595
- "model": "STRICT",
1596
- "owner": {
1597
- "userid": "string" //Mandatory if model is 'STRICT'
1598
- },
1599
- "teachers": [
1600
- {
1601
- "userid": "string",
1602
- "email": "string"
1603
- "first_name": "string"
1604
- "last_name": "string"
1605
- "userid": "string" // optional
1606
- "ext_user_id": "string" // optional
1607
- "dls_org_status": "string" // optional
1608
- "ext_account_status": "string" // optional
1609
- ],
1610
- "products": [ // optional
1611
- {
1612
- "productcode": "string", //mandatory
1613
- "title": ""
1614
- },
1615
- {
1616
- "productcode": "string", //mandatory
1617
- "title": ""
1618
- }
1619
- ]
1620
- }
1621
- ]
1622
- }
1623
- */
1624
- function createMultipleClasses(options) {
1625
- var self = this;
1626
-
1627
- //Initializing promise
1628
- var dfd = q.defer();
1629
-
1630
- //Validations
1631
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1632
- if (err) { dfd.reject(err); }
1633
- else {
1634
- if (options.classes.length > 0) {
1635
-
1636
- //Passed all validations, Contruct API url
1637
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.createMultipleClasses;
1638
- url = helpers.api.constructAPIUrl(url, {
1639
- orgId: self.orgId
1640
- });
1641
-
1642
- //Setup request with URL and Params and Query
1643
- var requestAPI = request.post(url).send(options);
1644
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1645
-
1646
- //Setup token in Authorization header
1647
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1648
-
1649
- requestAPI.end(function (err, response) {
1650
- if (err) {
1651
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1652
- dfd.reject(err);
1653
- }
1654
- else { dfd.resolve(response.body); }
1655
- });
1656
- }
1657
- else {
1658
- err = {};
1659
- err.message = err.description = 'Mandatory parameter classes not found in request options';
1660
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1661
- dfd.reject(err);
1662
- }
1663
- }
1664
- return dfd.promise;
1665
- }
1666
-
1667
- /*
1668
- options = {
1669
- "classid": "classid", //mandatory
1670
- "data": {
1671
- "title": "assigned path title", //mandatory
1672
- "duedate": "epoch due date", //mandatory
1673
- "startdate": "epoch start date", //optional
1674
- "shared_progress": true, //optional, default=true
1675
- "path_type": ‘flat’, //optional, default=flat , ['flat', 'hierarchical']
1676
- "rules": {}, //optional
1677
- "items": [ //mandatory
1678
- {
1679
- "item-code": "required_item-code", //mandatory
1680
- "item_type": "required_item-type", //mandatory, ['dls-internal','external']
1681
- "dls_product_code": "product_code" //mandatory only if item_type is 'dls-internal'
1682
- }
1683
- ],
1684
- "context": {
1685
- "bundle-code": "string",
1686
- "space_key": "string"
1687
- }
1688
- }
1689
- }
1690
- */
1691
- function createAssignedPath(options) {
1692
- var self = this;
1693
- var dfd = q.defer();
1694
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1695
- if(err) { dfd.reject(err); }
1696
- else {
1697
- if(options && options.classid && options.data && options.data.title &&
1698
- options.data.duedate && options.data.items && options.data.items.length > 0) {
1699
-
1700
- // Passed all validations, Contruct API url
1701
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.createAssignedPath;
1702
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classid });
1703
-
1704
- // Setup request with URL and Params
1705
- var requestAPI = request.post(url)
1706
- .set('Content-Type', 'application/json')
1707
- .set('Accept', 'application/json')
1708
- .send(options.data);
1709
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1710
-
1711
- //Setup token in Authorization header
1712
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1713
-
1714
- requestAPI.end(function (error, response) {
1715
- if(error) {
1716
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1717
- dfd.reject(err);
1718
- }
1719
- else { dfd.resolve(response.body); }
1720
- });
1721
- }
1722
- else {
1723
- err = {};
1724
- err.message = err.description = 'Mandatory params - title or classid or duedate or items ' +
1725
- 'not found in request options.';
1726
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1727
- dfd.reject(err);
1728
- }
1729
- }
1730
- return dfd.promise;
1731
- }
1732
-
1733
- /*
1734
- options = {
1735
- classid: 'string' //mandatory
1736
- assignedpathid: 'string' //mandatory
1737
- }
1738
- */
1739
- function deleteAssignedPath(options) {
1740
- var self = this;
1741
- var dfd = q.defer();
1742
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1743
- if(err) { dfd.reject(err); }
1744
- else {
1745
- if(options && options.classid && options.assignedpathid) {
1746
-
1747
- // Passed all validations, Contruct API url
1748
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.deleteAssignedPath;
1749
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classid, assignedPathId: options.assignedpathid });
1750
-
1751
- // Setup request with URL and Params
1752
- var requestAPI = request.delete(url);
1753
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1754
-
1755
- //Setup token in Authorization header
1756
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1757
-
1758
- requestAPI.end(function (error, response) {
1759
- if(error) {
1760
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1761
- dfd.reject(err);
1762
- }
1763
- else { dfd.resolve(response.body); }
1764
- });
1765
- }
1766
- else {
1767
- err = {};
1768
- err.message = err.description = 'Mandatory params - classid or assignedpathid ' +
1769
- 'not found in request options.';
1770
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1771
- dfd.reject(err);
1772
- }
1773
- }
1774
- return dfd.promise;
1775
- }
1776
-
1777
- /*
1778
- options = {
1779
- classid: 'string' //mandatory
1780
- assignedpathid: 'string' //mandatory
1781
- data:
1782
- {
1783
- title: 'string' //optional
1784
- startdate: 'string' //optional
1785
- duedate: 'string' //optional
1786
- }
1787
- }
1788
- */
1789
- function updateAssignedPath(options) {
1790
- var self = this;
1791
- var dfd = q.defer();
1792
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1793
- if(err) { dfd.reject(err); }
1794
- else {
1795
- if(options && options.classid && options.assignedpathid) {
1796
-
1797
- // Passed all validations, Contruct API url
1798
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.deleteAssignedPath;
1799
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classid, assignedPathId: options.assignedpathid });
1800
-
1801
- // Setup request with URL and Params
1802
- var requestAPI = request.put(url);
1803
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1804
- if(options.data) { requestAPI.send(options.data); }
1805
-
1806
- //Setup token in Authorization header
1807
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1808
-
1809
- requestAPI.end(function (error, response) {
1810
- if(error) {
1811
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1812
- dfd.reject(err);
1813
- }
1814
- else { dfd.resolve(response.body); }
1815
- });
1816
- }
1817
- else {
1818
- err = {};
1819
- err.message = err.description = 'Mandatory params - classid or assignedpathid ' +
1820
- 'not found in request options.';
1821
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1822
- dfd.reject(err);
1823
- }
1824
- }
1825
- return dfd.promise;
1826
- }
1827
-
1828
- /**
1829
- * options={
1830
- "title": "string", //mandatory
1831
- "startdate": 0, //mandatory
1832
- "enddate": 0, //mandatory
1833
- "path": "string"
1834
- }
1835
- */
1836
- function createGroup(options) {
1837
- var self = this;
1838
- // Initializing promise
1839
- var dfd = q.defer();
1840
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1841
- if(err) { dfd.reject(err); }
1842
- else {
1843
- // Validations
1844
-
1845
- if(options && options.title && options.startdate && options.enddate) {
1846
- // Passed all validations, Contruct API url
1847
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.allGroups;
1848
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId });
1849
-
1850
- // Setup request with URL and Params
1851
- var requestAPI = request.post(url)
1852
- .set('Content-Type', 'application/json')
1853
- .set('Accept', 'application/json')
1854
- .send(options);
1855
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1856
-
1857
- //Setup token in Authorization header
1858
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1859
-
1860
- requestAPI.end(function(error, response) {
1861
- if(error) {
1862
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1863
- dfd.reject(error);
1864
- }
1865
- else { dfd.resolve(response); }
1866
- });
1867
- }
1868
- else {
1869
- err = {};
1870
- err.message = err.description = 'title or startdate or enddate not found in request options.';
1871
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1872
- dfd.reject(err);
1873
- }
1874
- }
1875
- return dfd.promise;
1876
- }
1877
-
1878
- /* options = {
1879
- "path": "string" //mandatory, Path of the group(this path group will also be returned,
1880
- "cursor": "string"
1881
- };
1882
- */
1883
- function getAllGroupsByPath(options) {
1884
- var self = this;
1885
- // Initializing promise
1886
- var dfd = q.defer();
1887
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1888
- if(err) { dfd.reject(err); }
1889
- else {
1890
- if(options && options.path) {
1891
-
1892
- // Passed all validations, Contruct API url
1893
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.allGroups;
1894
- url = helpers.api.constructAPIUrl(url,{ orgId: self.orgId });
1895
-
1896
- var queryParams = { path: options.path };
1897
- if(options.cursor) { queryParams.cursor = options.cursor; }
1898
-
1899
- // Setup request with URL and Params
1900
- var requestAPI = request.get(url).query(queryParams);
1901
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1902
-
1903
- //Setup token in Authorization header
1904
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1905
-
1906
- requestAPI.end(function (error, response) {
1907
- if(error) {
1908
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1909
- dfd.reject(err);
1910
- }
1911
- else { dfd.resolve(response); }
1912
- });
1913
- }
1914
- else {
1915
- err = {};
1916
- err.message = err.description = 'Mandatory params - path not found in request options.';
1917
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1918
- dfd.reject(err);
1919
- }
1920
- }
1921
- return dfd.promise;
1922
- }
1923
-
1924
- /* options = {
1925
- "groupId": "string" //mandatory
1926
- };
1927
- */
1928
- function getAGroup(options) {
1929
- var self = this;
1930
- // Initializing promise
1931
- var dfd = q.defer();
1932
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1933
- if(err) { dfd.reject(err); }
1934
- else {
1935
- if(options && options.groupId) {
1936
-
1937
- // Passed all validations, Contruct API url
1938
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.aParticularGroup;
1939
- url = helpers.api.constructAPIUrl(url,{ orgId: self.orgId, groupId: options.groupId });
1940
-
1941
- // Setup request with URL and Params
1942
- var requestAPI = request.get(url);
1943
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1944
-
1945
- //Setup token in Authorization header
1946
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1947
-
1948
- requestAPI.end(function (error, response) {
1949
- if(error) {
1950
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1951
- dfd.reject(err);
1952
- }
1953
- else { dfd.resolve(response); }
1954
- });
1955
- }
1956
- else {
1957
- err = {};
1958
- err.message = err.description = 'Mandatory params - groupId not found in request options.';
1959
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1960
- dfd.reject(err);
1961
- }
1962
- }
1963
- return dfd.promise;
1964
- }
1965
-
1966
- /* options = {
1967
- "groupId": "string" //mandatory
1968
- "body": {
1969
- "title": "string"
1970
- "startdate": "string",
1971
- "enddate":"string"
1972
- }
1973
- };
1974
- */
1975
- function updateGroup(options) {
1976
- var self = this;
1977
- // Initializing promise
1978
- var dfd = q.defer();
1979
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1980
- if(err) { dfd.reject(err); }
1981
- else {
1982
- if(options && options.groupId) {
1983
-
1984
- // Passed all validations, Contruct API url
1985
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.aParticularGroup;
1986
- url = helpers.api.constructAPIUrl(url,{ orgId: self.orgId, groupId: options.groupId });
1987
-
1988
- // Setup request with URL and Params
1989
- var requestAPI = request.put(url)
1990
- .set('Content-Type', 'application/json')
1991
- .set('Accept', 'application/json')
1992
- .send(options.body);
1993
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1994
-
1995
- //Setup token in Authorization header
1996
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1997
-
1998
- requestAPI.end(function (error, response) {
1999
- if(error) {
2000
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2001
- dfd.reject(err);
2002
- }
2003
- else { dfd.resolve(response); }
2004
- });
2005
- }
2006
- else {
2007
- err = {};
2008
- err.message = err.description = 'Mandatory params - groupId not found in ' +
2009
- 'request options.';
2010
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2011
- dfd.reject(err);
2012
- }
2013
- }
2014
- return dfd.promise;
2015
- }
2016
-
2017
- /* options = {
2018
- "groupId": "string" //mandatory
2019
- };
2020
- */
2021
- function deleteGroup(options) {
2022
- var self = this;
2023
- // Initializing promise
2024
- var dfd = q.defer();
2025
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2026
- if(err) { dfd.reject(err); }
2027
- else {
2028
- if(options && options.groupId) {
2029
-
2030
- // Passed all validations, Contruct API url
2031
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.aParticularGroup;
2032
- url = helpers.api.constructAPIUrl(url,{ orgId: self.orgId, groupId: options.groupId });
2033
-
2034
- // Setup request with URL and Params
2035
- var requestAPI = request.delete(url);
2036
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2037
-
2038
- //Setup token in Authorization header
2039
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2040
-
2041
- requestAPI.end(function (error, response) {
2042
- if(error) {
2043
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2044
- dfd.reject(err);
2045
- }
2046
- else { dfd.resolve(response); }
2047
- });
2048
- }
2049
- else {
2050
- err = {};
2051
- err.message = err.description = 'Mandatory params - groupId not found in ' +
2052
- 'request options.';
2053
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2054
- dfd.reject(err);
2055
- }
2056
- }
2057
- return dfd.promise;
2058
- }
2059
-
2060
- /*
2061
- options = {
2062
- groupId: "string", //mandatory
2063
- cursor: "cursor"
2064
- }
2065
- */
2066
- function getAllMembersOfAGroup(options) {
2067
- var self = this;
2068
- // Initializing promise
2069
- var dfd = q.defer(), params = {};
2070
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2071
- if(err) { dfd.reject(err); }
2072
- // Validations
2073
- else{
2074
- if(options && options.groupId) {
2075
- // Passed all validations, Contruct API url
2076
- var url = self.config.DEFAULT_HOSTS.AUTH +
2077
- self.config.AUTH_API_URLS.getAllMembersOfAGroup;
2078
- url = helpers.api.constructAPIUrl(url, {
2079
- orgId: self.orgId,
2080
- groupId: options.groupId
2081
- });
2082
-
2083
- // Setup request with URL and Param
2084
- if(options.cursor){ params.cursor = options.cursor };
2085
-
2086
- var requestAPI = request.get(url)
2087
- .set('Content-Type', 'application/json')
2088
- .set('Accept', 'application/json')
2089
- .send(params);
2090
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2091
-
2092
- //Setup token in Authorization header
2093
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2094
-
2095
- requestAPI.end(function(error, response) {
2096
- if(error) {
2097
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2098
- dfd.reject(error);
2099
- }
2100
- else { dfd.resolve(response); }
2101
- });
2102
- } else {
2103
- err = {};
2104
- err.message = err.description = 'Mandatory param - groupId not found in request options.';
2105
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2106
- dfd.reject(err);
2107
- }
2108
- }
2109
- return dfd.promise;
2110
- }
2111
-
2112
- /*
2113
- options = {
2114
- path: "string", //mandatory
2115
- cursor: "string"
2116
- }
2117
- */
2118
- function getAllGroupMembersByPath(options) {
2119
- var self = this;
2120
- // Initializing promise
2121
- var dfd = q.defer(), params = {};
2122
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2123
- if(err) { dfd.reject(err); }
2124
- // Validations
2125
- else {
2126
- if(options && options.path) {
2127
- // Passed all validations, Contruct API url
2128
- var url = self.config.DEFAULT_HOSTS.AUTH +
2129
- self.config.AUTH_API_URLS.getAllGroupMembersByPath;
2130
- url = helpers.api.constructAPIUrl(url, {
2131
- orgId: self.orgId
2132
- });
2133
-
2134
- // Setup request with URL and Params
2135
- params.path = options.path;
2136
- if(options.cursor){ params.cursor = options.cursor };
2137
-
2138
- var requestAPI = request.get(url)
2139
- .set('Content-Type', 'application/json')
2140
- .set('Accept', 'application/json')
2141
- .query(params);
2142
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2143
-
2144
- //Setup token in Authorization header
2145
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2146
-
2147
- requestAPI.end(function(error, response) {
2148
- if(error) {
2149
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2150
- dfd.reject(error);
2151
- }
2152
- else { dfd.resolve(response); }
2153
- });
2154
- } else {
2155
- err = {};
2156
- err.message = err.description = 'Mandatory param - path not found in request options.';
2157
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2158
- dfd.reject(err);
2159
- }
2160
- }
2161
- return dfd.promise;
2162
- }
2163
-
2164
- /*
2165
- options = {
2166
-
2167
- groupId: "string", //mandatory
2168
- body: {
2169
- users: [
2170
- {
2171
- id: "string", // User’s external id - mandatory
2172
- dls_user_id: "string", // User’s dls id - mandatory
2173
- email: "string", //mandatory
2174
- first_name: "string", //mandatory
2175
- last_name: "string", //mandatory
2176
- name: "string", //mandatory
2177
- role: "string" //mandatory
2178
- }
2179
- ]
2180
- }
2181
- }
2182
- */
2183
- function createMultiUserGroupMembership(options) {
2184
- var self = this;
2185
- // Initializing promise
2186
- var dfd = q.defer(), params = {};
2187
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2188
- if(err) { dfd.reject(err); }
2189
- // Validations
2190
-
2191
- else {
2192
- if(options && options.groupId && options.body && options.body.users && (options.body.users.length > 0)) {
2193
- // Passed all validations, Contruct API url
2194
- var url = self.config.DEFAULT_HOSTS.AUTH +
2195
- self.config.AUTH_API_URLS.userGroupMembership;
2196
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, groupId: options.groupId });
2197
-
2198
- // Setup request with URL and Params
2199
- params = options.body;
2200
-
2201
- var requestAPI = request.post(url)
2202
- .set('Content-Type', 'application/json')
2203
- .set('Accept', 'application/json')
2204
- .send(params);
2205
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2206
- //Setup token in Authorization header
2207
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2208
-
2209
- requestAPI.end(function(error, response) {
2210
- if(error) {
2211
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2212
- dfd.reject(error);
2213
- }
2214
- else { dfd.resolve(response); }
2215
- });
2216
- } else {
2217
- err = {};
2218
- err.message = err.description = 'Mandatory param - groupId or body or body.users(min. 1 user) ' +
2219
- 'not found in request options.'
2220
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2221
- dfd.reject(err);
2222
- }
2223
- }
2224
- return dfd.promise;
2225
- }
2226
-
2227
- /*
2228
- options = {
2229
- "groupId": "string", //mandatory
2230
- "body": { //mandatory
2231
- users: [ //mandatory
2232
- {
2233
- id: "string" // User’s external id - mandatory
2234
- }
2235
- ]
2236
- }
2237
- */
2238
- function deleteMultiUserGroupMembership(options) {
2239
- var self = this;
2240
- // Initializing promise
2241
- var dfd = q.defer(), params = {};
2242
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2243
- if(err) { dfd.reject(err); }
2244
- // Validations
2245
- else {
2246
- if(options && options.groupId && options.body && options.body.users && (options.body.users.length > 0)) {
2247
- // Passed all validations, Contruct API url
2248
- var url = self.config.DEFAULT_HOSTS.AUTH +
2249
- self.config.AUTH_API_URLS.userGroupMembership;
2250
- url = helpers.api.constructAPIUrl(url, {
2251
- orgId: self.orgId,
2252
- groupId: options.groupId
2253
- });
2254
-
2255
- // Setup request with URL and Params
2256
- params = options.body;
2257
- var requestAPI = request.delete(url)
2258
- .set('Content-Type', 'application/json')
2259
- .set('Accept', 'application/json')
2260
- .send(params);
2261
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2262
-
2263
- //Setup token in Authorization header
2264
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2265
- requestAPI.end(function(error, response) {
2266
- if(error) {
2267
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2268
- dfd.reject(error);
2269
- }
2270
- else { dfd.resolve(response); }
2271
- });
2272
- } else {
2273
- err = {};
2274
- err.message = err.description = 'Mandatory param - groupId or body or body.users(min. 1 user) ' +
2275
- 'not found in request options.'
2276
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2277
- dfd.reject(err);
2278
- }
2279
- }
2280
- return dfd.promise;
2281
- }
2282
-
2283
- /* options= {
2284
- "groupId": "string", //mandatory
2285
- };
2286
- */
2287
- function archiveGroup(options) {
2288
- var self = this;
2289
- // Initializing promise
2290
- var dfd = q.defer();
2291
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2292
- if(err) { dfd.reject(err); }
2293
- else {
2294
- if (options && options.groupId) {
2295
- // Passed all validations, Contruct API url
2296
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.archiveAParticularGroup;
2297
- url = helpers.api.constructAPIUrl(url, {
2298
- orgId: self.orgId,
2299
- groupId: options.groupId
2300
- });
2301
-
2302
- // Setup request with URL and Params
2303
- var requestAPI = request.put(url)
2304
- .set('Content-Type', 'application/json')
2305
- .set('Accept', 'application/json')
2306
- .send({});
2307
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2308
-
2309
- //Setup token in Authorization header
2310
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2311
-
2312
- requestAPI.end(function (error, response) {
2313
- if (error) {
2314
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2315
- dfd.reject(err);
2316
- } else {
2317
- dfd.resolve(response.body);
2318
- }
2319
- });
2320
- }
2321
- else {
2322
- err = {};
2323
- err.message = err.description = 'Mandatory param - groupId not found in request options.';
2324
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2325
- dfd.reject(err);
2326
- }
2327
- }
2328
- return dfd.promise;
2329
- }
2330
-
2331
- /* options= {
2332
- "groupId": "string", //mandatory
2333
- };
2334
- */
2335
- function unarchiveGroup(options) {
2336
- var self = this;
2337
- // Initializing promise
2338
- var dfd = q.defer();
2339
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2340
- if(err) { dfd.reject(err); }
2341
- else {
2342
- if (options && options.groupId) {
2343
- // Passed all validations, Contruct API url
2344
- var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.unarchiveAParticularGroup;
2345
- url = helpers.api.constructAPIUrl(url, {
2346
- orgId: self.orgId,
2347
- groupId: options.groupId
2348
- });
2349
-
2350
- // Setup request with URL and Params
2351
- var requestAPI = request.put(url)
2352
- .set('Content-Type', 'application/json')
2353
- .set('Accept', 'application/json')
2354
- .send({});
2355
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2356
-
2357
- //Setup token in Authorization header
2358
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2359
-
2360
- requestAPI.end(function (error, response) {
2361
- if (error) {
2362
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2363
- dfd.reject(err);
2364
- } else {
2365
- dfd.resolve(response.body);
2366
- }
2367
- });
2368
- }
2369
- else {
2370
- err = {};
2371
- err.message = err.description = 'Mandatory param - groupId not found in request options.';
2372
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2373
- dfd.reject(err);
2374
- }
2375
- }
2376
- return dfd.promise;
2377
- }
2378
-
2379
- /*
2380
- options = {
2381
- userId: "string", //mandatory
2382
- path: "string", //mandatory
2383
- cursor: "string", // optional
2384
- }
2385
- */
2386
- function getMyAllMemberships(options) {
2387
- var self = this;
2388
- // Initializing promise
2389
- var dfd = q.defer(), params = {};
2390
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2391
- if(err) { dfd.reject(err); }
2392
- // Validations
2393
- else {
2394
- if(options && options.userId && options.path) {
2395
- // Passed all validations, Contruct API url
2396
- var url = self.config.DEFAULT_HOSTS.AUTH +
2397
- self.config.AUTH_API_URLS.getMyAllMemberships;
2398
- url = helpers.api.constructAPIUrl(url, {
2399
- orgId: self.orgId,
2400
- userId: options.userId
2401
- });
2402
-
2403
- // Setup request with URL and Params
2404
- params.path = options.path;
2405
- if(options.cursor){ params.cursor = options.cursor };
2406
-
2407
- var requestAPI = request.get(url)
2408
- .set('Content-Type', 'application/json')
2409
- .set('Accept', 'application/json')
2410
- .query(params);
2411
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2412
-
2413
- //Setup token in Authorization header
2414
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2415
-
2416
- requestAPI.end(function(error, response) {
2417
- if(error) {
2418
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2419
- dfd.reject(error);
2420
- }
2421
- else { dfd.resolve(response); }
2422
- });
2423
- } else {
2424
- err = {};
2425
- err.message = err.description = 'Mandatory param - userId or path not found in request options.';
2426
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2427
- dfd.reject(err);
2428
- }
2429
- }
2430
- return dfd.promise;
2431
- }
2432
-
2433
- /*
2434
- options = {
2435
- classId: "string", //mandatory
2436
- body : {
2437
- items : //mandatory, Min: 1, Max: 200
2438
- [{
2439
- "productcode": "string",
2440
- "item-code": "string",
2441
- "link-statementid": "string",
2442
- "groupid": "string",
2443
- “type”: “dls-internal”, //mandatory
2444
- "data": { ... }
2445
- }]
2446
- }
2447
- }
2448
- */
2449
- function addItemsToShowcaseOfAClass(options){
2450
- var self = this;
2451
- // Initializing promise
2452
- var dfd = q.defer();
2453
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2454
- if(err) { dfd.reject(err); }
2455
- // Validations
2456
- else {
2457
- if(options && options.classId && options.body) {
2458
- // Passed all validations, Contruct API url
2459
- var url = self.config.DEFAULT_HOSTS.AUTH +
2460
- self.config.AUTH_API_URLS.showcaseItems;
2461
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classId });
2462
-
2463
- // Setup request with URL and Params
2464
- var requestAPI = request.post(url);
2465
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2466
- requestAPI.send(options.body);
2467
-
2468
- // Setup token in Authorization header
2469
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2470
-
2471
- // Call Add items to showcase API
2472
- requestAPI.end(function(err, response) {
2473
- if(err) {
2474
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
2475
- dfd.reject(err);
2476
- }
2477
- else { dfd.resolve(response.body); }
2478
- });
2479
- } else {
2480
- err = {};
2481
- err.message = err.description = 'Mandatory param - classId or body not found in request options.';
2482
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2483
- dfd.reject(err);
2484
- }
2485
- }
2486
- return dfd.promise;
2487
- }
2488
-
2489
- /*
2490
- options = {
2491
- classId: "string", //mandatory
2492
- body : {
2493
- items : [ "id1", "id2", "id3", ... ] //mandatory
2494
- }
2495
- }
2496
- */
2497
- function deleteItemsFromShowcaseOfAClass(options){
2498
- var self = this;
2499
- // Initializing promise
2500
- var dfd = q.defer();
2501
- var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2502
- if(err) { dfd.reject(err); }
2503
- // Validations
2504
- else {
2505
- if(options && options.classId && options.body) {
2506
- // Passed all validations, Contruct API url
2507
- var url = self.config.DEFAULT_HOSTS.AUTH +
2508
- self.config.AUTH_API_URLS.showcaseItems;
2509
- url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classId });
2510
-
2511
- // Setup request with URL and Params
2512
- var requestAPI = request.delete(url);
2513
- if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2514
- requestAPI.send(options.body);
2515
-
2516
- // Setup token in Authorization header
2517
- requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2518
-
2519
- // Call delete items from showcase API
2520
- requestAPI.end(function(err, response) {
2521
- if(err) {
2522
- err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
2523
- dfd.reject(err);
2524
- }
2525
- else { dfd.resolve(response.body); }
2526
- });
2527
- } else {
2528
- err = {};
2529
- err.message = err.description = 'Mandatory param - classId or body not found in request options.';
2530
- err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2531
- dfd.reject(err);
2532
- }
2533
- }
2534
- return dfd.promise;
2535
- }
1
+ /*************************************************************************
2
+ *
3
+ * COMPRO CONFIDENTIAL
4
+ * __________________
5
+ *
6
+ * [2015] - [2020] Compro Technologies Private Limited
7
+ * All Rights Reserved.
8
+ *
9
+ * NOTICE: All information contained herein is, and remains
10
+ * the property of Compro Technologies Private Limited. The
11
+ * intellectual and technical concepts contained herein are
12
+ * proprietary to Compro Technologies Private Limited and may
13
+ * be covered by U.S. and Foreign Patents, patents in process,
14
+ * and are protected by trade secret or copyright law.
15
+ *
16
+ * Dissemination of this information or reproduction of this material
17
+ * is strictly forbidden unless prior written permission is obtained
18
+ * from Compro Technologies Pvt. Ltd..
19
+ ***************************************************************************/
20
+
21
+ /***********************************************************
22
+ * comproDLS SDK AUTH API Adaptor
23
+ * Functions for calling AUTH API.
24
+ ************************************************************/
25
+
26
+ var q = require('q');
27
+ var request = require('superagent');
28
+
29
+ var helpers = require('../../helpers');
30
+ var converter = require('../../helpers/lib/api/converter');
31
+
32
+ var DLSError = helpers.errors.DLSError;
33
+
34
+ /*********************************
35
+ * Setting Up Module Entry Point
36
+ **********************************/
37
+ module.exports = auth;
38
+ //Auth Adaptor Contsructor
39
+ function auth() {
40
+ return {
41
+ pisImport: pisImport.bind(this),
42
+
43
+ getAllUsers: getAllUsers.bind(this),
44
+ getUserProfile: getUserProfile.bind(this),
45
+ deleteUserProfile: deleteUserProfile.bind(this),
46
+ updateUserRole: updateUserRole.bind(this),
47
+ getUserClasses: getUserClasses.bind(this),
48
+ getClassUsers: getClassUsers.bind(this),
49
+ enrollUsertoClass: enrollUsertoClass.bind(this),
50
+ enrollSelftoClass: enrollSelftoClass.bind(this),
51
+ enrollMultiUserstoClass: enrollMultiUserstoClass.bind(this),
52
+ unEnrollMultiUserstoClass: unEnrollMultiUserstoClass.bind(this),
53
+ unEnrollUsertoClass: unEnrollUsertoClass.bind(this),
54
+
55
+ getOrgSettings: getOrgSettings.bind(this),
56
+ updateOrgSettings: updateOrgSettings.bind(this),
57
+ generateClassCode: generateClassCode.bind(this),
58
+
59
+ getAllJobs: getAllJobs.bind(this),
60
+ getJob: getJob.bind(this),
61
+
62
+ createClass: createClass.bind(this),
63
+ updateClass: updateClass.bind(this),
64
+ createMultipleClasses: createMultipleClasses.bind(this),
65
+ getAllClasses: getAllClasses.bind(this),
66
+ getParticularClass: getParticularClass.bind(this),
67
+ getParticularShadowClass: getParticularShadowClass.bind(this),
68
+ createClassProductAssociation: createClassProductAssociation.bind(this),
69
+ removeClassProductAssociation: removeClassProductAssociation.bind(this),
70
+ addItemsToShowcaseOfAClass: addItemsToShowcaseOfAClass.bind(this),
71
+ deleteItemsFromShowcaseOfAClass: deleteItemsFromShowcaseOfAClass.bind(this),
72
+
73
+ getClassAppdata: getClassAppdata.bind(this),
74
+ putClassAppdata: putClassAppdata.bind(this),
75
+ deleteClassAppdata: deleteClassAppdata.bind(this),
76
+
77
+ encodeURLParameter: encodeURLParameter.bind(this),
78
+
79
+ createAssignedPath: createAssignedPath.bind(this),
80
+ deleteAssignedPath: deleteAssignedPath.bind(this),
81
+ updateAssignedPath: updateAssignedPath.bind(this),
82
+
83
+ //Groups related APIs
84
+ createGroup: createGroup.bind(this),
85
+ getAllGroupsByPath: getAllGroupsByPath.bind(this),
86
+ getAGroup: getAGroup.bind(this),
87
+ updateGroup: updateGroup.bind(this),
88
+ deleteGroup: deleteGroup.bind(this),
89
+ getAllMembersOfAGroup: getAllMembersOfAGroup.bind(this),
90
+ getAllGroupMembersByPath: getAllGroupMembersByPath.bind(this),
91
+ createMultiUserGroupMembership: createMultiUserGroupMembership.bind(this),
92
+ deleteMultiUserGroupMembership: deleteMultiUserGroupMembership.bind(this),
93
+ getMyAllMemberships: getMyAllMemberships.bind(this),
94
+ archiveGroup: archiveGroup.bind(this),
95
+ unarchiveGroup: unarchiveGroup.bind(this)
96
+ };
97
+ }
98
+
99
+ /*********************************
100
+ * Public Function definitions
101
+ **********************************/
102
+
103
+ //options = {
104
+ // userid: 'uuid or username', //optional.
105
+ //}
106
+ function getUserProfile(options) {
107
+ /* Reference to comproDLS SDK object , contains the following properties
108
+ * 1. self.orgId [String] : organization Id
109
+ * 2. self.token [Object] : DLS token. It has following structure
110
+ * {
111
+ * "access_token" : [String]
112
+ * }
113
+ */
114
+ var self = this;
115
+ // Initializing promise
116
+ var dfd = q.defer();
117
+ // Validations
118
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
119
+ if(err) { dfd.reject(err); }
120
+ else {
121
+ var userid = 'me';
122
+ if(options) {
123
+ if(options.userid) { userid = options.userid; }
124
+ }
125
+ // Passed all validations, Contruct API url
126
+ var url = self.config.DEFAULT_HOSTS.AUTH +
127
+ self.config.AUTH_API_URLS.userInfoAPI;
128
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, userId: userid });
129
+
130
+ // Contruct parameters
131
+ var params = {};
132
+
133
+ // Setup request with URL and Params
134
+ var requestAPI = request.get(url).query(params);
135
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
136
+
137
+ // Setup token in Authorization header
138
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
139
+ // Call GET USER INFO Api
140
+ requestAPI.end(function(err, response) {
141
+ if(err) {
142
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
143
+ dfd.reject(err);
144
+ }
145
+ else {
146
+ var res = converter.convertUserResponse({data: response.body});
147
+ dfd.resolve(res);
148
+ }
149
+ });
150
+ }
151
+ return dfd.promise;
152
+ }
153
+
154
+ /**
155
+ * options = {
156
+ * userid : "" // dls user id, mandatory
157
+ * }
158
+ */
159
+
160
+ function deleteUserProfile(options) {
161
+ var self = this;
162
+ var dfd = q.defer();
163
+
164
+ // Validations
165
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
166
+ if(err) { dfd.reject(err); }
167
+ else {
168
+ if (options.userid) {
169
+ var userid = options.userid;
170
+
171
+ // Passed all validations, Contruct API url
172
+ var url = self.config.DEFAULT_HOSTS.AUTH +
173
+ self.config.AUTH_API_URLS.userInfoAPI;
174
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, userId: userid });
175
+
176
+ // Setup request with URL
177
+ var requestAPI = request.delete(url);
178
+ if (self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
179
+
180
+ // Setup token in Authorization header
181
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
182
+
183
+ // Call DELETE USER API
184
+ requestAPI.end(function (error, response) {
185
+ if (error) {
186
+ error = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
187
+ dfd.reject(error);
188
+ }
189
+ else { dfd.resolve(response.body); }
190
+ });
191
+ } else {
192
+ err = {};
193
+ err.message = err.description = 'Mandatory parameter userid not found in request options.';
194
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
195
+ dfd.reject(err);
196
+ }
197
+ }
198
+ return dfd.promise;
199
+ }
200
+
201
+ //options = {
202
+ // search: 'search string', //optional.
203
+ // lookup: 'string', // Search query (',' separated key value pairs), e.g. key1:val1,key2:val2,key3:val3
204
+ // lookup-operator: 'AND'/'OR', // Operator to use while lookup. Current Possible Value - AND, OR
205
+ // cursor: 'cursor', //optional, cursor to get next set of groups.
206
+ // limit: number, //optional, limit the number of Users to fetch at a time.
207
+ // role: 'string' //optional, to search Users by Role
208
+ // sortField: ['first_name', 'last_name', 'ext_email', 'created', 'roles', ... (other fields of response entity)]
209
+ // Sort the result according to given field. By default is 'last_name’, followed by ‘first_name’ in asc order.
210
+ // sortOrder: ['desc', 'asc'] //optional, By default is 'desc’.
211
+ //}
212
+ function getAllUsers(options) {
213
+ var self = this;
214
+ // Initializing promise
215
+ var dfd = q.defer();
216
+ // Validations
217
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
218
+ if(err) { dfd.reject(err); }
219
+ else {
220
+ var queryStr = 'orgid:"' + self.orgId + '"';
221
+
222
+ if(options.lookup && options['lookup-operator']) {
223
+ var lookupString = options.lookup;
224
+ lookupString = lookupString.replace(/ext_/ig, '');
225
+ var lookupArray = lookupString.split(',').map(function(item) {
226
+ var lookupItem = item.trim();
227
+ var tempArr = lookupItem.split(':');
228
+ lookupItem = '(' + lookupItem + ' OR ' + tempArr[0] + '.keyword:' + tempArr[1] + ')';
229
+ return lookupItem;
230
+ });
231
+ queryStr = queryStr + ' AND (' + lookupArray.join(' ' + options['lookup-operator'] + ' ') + ')';
232
+ }
233
+
234
+ if(options.role) {
235
+ var roleNameString = options.role;
236
+ var roleNameArray = roleNameString.split(',').map(function(item) { return item.trim(); });
237
+ for(var idx in roleNameArray){
238
+ roleNameArray[idx] = 'roles:' + roleNameArray[idx];
239
+ }
240
+ queryStr = queryStr + ' AND (' + roleNameArray.join(' OR ') + ')';
241
+ }
242
+
243
+ if(options.search) {
244
+ queryStr = queryStr + ' AND (email:"' + options.search + '" OR first_name:"' + options.search + '" OR last_name:"'
245
+ + options.search + '" OR username:"' + options.search + '" OR userid:"' + options.search + '")';
246
+ }
247
+
248
+ var sortField = options.sortField || '';
249
+ sortField = sortField.replace(/ext_/ig, '').split(',').shift().trim() || 'last_name';
250
+ var sortOrder = options.sortOrder || 'asc';
251
+ if(sortField !== 'created') {
252
+ sortField = sortField + '.keyword';
253
+ }
254
+ var sortObj = {}, sortArr = [];
255
+ sortObj[sortField] = sortOrder;
256
+ sortArr.push(sortObj);
257
+
258
+ var queryObj = {
259
+ query: { query_string: { query: queryStr } },
260
+ sort: sortArr
261
+ };
262
+
263
+ if(options.cursor) { queryObj.search_after = JSON.parse(options.cursor); }
264
+ if(options.limit) { queryObj.size = options.limit; }
265
+ else { options.limit = 10; } // by default ES returns only 10 elements at max.
266
+
267
+ //Passed all validations, Construct API url
268
+ var url = self.config.DEFAULT_HOSTS.INTEGRATION +
269
+ self.config.INTEGRATIONS_API_URLS.queryDataFromSearch;
270
+ url = helpers.api.constructAPIUrl(url, { index: 'users' });
271
+
272
+ // Contruct parameters
273
+ var params = {
274
+ query: JSON.stringify(queryObj)
275
+ };
276
+
277
+ // Setup request with URL and Params
278
+ var requestAPI = request.get(url).query(params);
279
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
280
+
281
+ // Setup token in Authorization header
282
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
283
+
284
+ // Call GET ALL USER Api
285
+ requestAPI.end(function(err, response) {
286
+ if(err) {
287
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
288
+ dfd.reject(err);
289
+ }
290
+ else {
291
+ var responseObject = { entities: [] };
292
+ responseObject.count = response.body.hits.hits.length;
293
+ if(responseObject.count && (options.limit === responseObject.count)) {
294
+ var cursor = response.body.hits.hits[response.body.hits.hits.length - 1].sort;
295
+ responseObject.cursor = JSON.stringify(cursor);
296
+ }
297
+
298
+ for(var index in response.body.hits.hits) {
299
+ var userEntity = response.body.hits.hits[index]._source;
300
+ var userObj = {
301
+ uuid: userEntity.dls_user_id,
302
+ name: userEntity.first_name + ' ' + userEntity.last_name,
303
+ email: userEntity.email || userEntity.ext_email,
304
+ username: userEntity.userid + '--ACCOUNT',
305
+ created: userEntity.created,
306
+ org: { id: self.orgId }
307
+ };
308
+ if(userEntity.roles) {
309
+ userObj.roles = userEntity.roles;
310
+ }
311
+ if(userEntity.provision_method) {
312
+ userObj.provision_method = userEntity.provision_method;
313
+ }
314
+ if(userEntity.first_name) {
315
+ userObj.first_name = userEntity.first_name;
316
+ }
317
+ if(userEntity.last_name) {
318
+ userObj.last_name = userEntity.last_name;
319
+ }
320
+ if(userEntity.ext_parent_id) {
321
+ userObj.ext_parent_id = userEntity.ext_parent_id;
322
+ }
323
+ if(userEntity.username) {
324
+ userObj.ext_username = userEntity.username;
325
+ }
326
+ if(userEntity.userid) {
327
+ userObj.ext_user_id = userEntity.userid;
328
+ }
329
+ if(userEntity.address) {
330
+ userObj.address = userEntity.address;
331
+ }
332
+ responseObject.entities.push(userObj);
333
+ }
334
+ dfd.resolve(responseObject);
335
+ }
336
+ });
337
+ }
338
+ return dfd.promise;
339
+ }
340
+
341
+ //options = {
342
+ // userid: 'dlsUserId', //mandatory
343
+ // target_role: 'string', //mandatory
344
+ // ext_data: { email_template_id: string } //optional
345
+ //}
346
+ function updateUserRole(options) {
347
+ var self = this;
348
+
349
+ // Initializing promise
350
+ var dfd = q.defer();
351
+ // Validations
352
+ var error = helpers.validations.isAuthenticated(self.orgId, self.token);
353
+ if(error) { dfd.reject(error); }
354
+ else {
355
+ if(options && options.userid && options.target_role) {
356
+ // Passed all validations, Contruct API url
357
+ var url = self.config.DEFAULT_HOSTS.AUTH +
358
+ self.config.AUTH_API_URLS.updateUserRoleAPI;
359
+ url = helpers.api.constructAPIUrl(url, { orgId : self.orgId, userId: options.userid });
360
+ var bodyParams = { ext_data: options.ext_data, target_role: options.target_role };
361
+ // Setup request with URL and Params
362
+ var requestAPI = request.put(url)
363
+ .set('Content-Type', 'application/json')
364
+ .set('Accept', 'application/json')
365
+ .send(bodyParams);
366
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
367
+ // Setup token in Authorization header
368
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
369
+
370
+ requestAPI.end(function(err, response) {
371
+ if(err) {
372
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
373
+ dfd.reject(err);
374
+ }
375
+ else { dfd.resolve(response); }
376
+ });
377
+ } else {
378
+ var err = {};
379
+ err.message = err.description = 'Mandatory parameter options, userid or target_role, not found in request options.';
380
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
381
+ dfd.reject(err);
382
+ }
383
+ }
384
+
385
+ return dfd.promise;
386
+ }
387
+
388
+ //options = {
389
+ // userid: 'uuid or username', //optional.
390
+ // search: 'search string', //optional.
391
+ // details: true/false, //optional, includes products & assignments information of class.
392
+ // sortField: ['startdate', 'enddate', 'title'] //optional, By default is 'title’.
393
+ // sortOrder: ['desc', 'asc'] //optional, By default is 'desc’.
394
+ // enrollmentType: ['creator', 'teacher', 'student'] //optional, bydefault send all classes.
395
+ // teacherId: 'string' //optional, get classes of a particular teacher only.
396
+ // cursor: 'cursor' //optional, cursor to get next set of classes
397
+ // limit: integer //optional, Number of entities to fetch at once
398
+ // bundleDetails: true/false //optional
399
+ //}
400
+ function getUserClasses(options) {
401
+ var self = this;
402
+ // Initializing promise
403
+ var dfd = q.defer();
404
+ // Validations
405
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
406
+ if(err) { dfd.reject(err); }
407
+ else {
408
+ var userid = 'me';
409
+ if(options) {
410
+ if(options.userid) { userid = options.userid; }
411
+ }
412
+ // Passed all validations, Construct API url
413
+ var url = self.config.DEFAULT_HOSTS.AUTH +
414
+ self.config.AUTH_API_URLS.getUserClassesAPI;
415
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, userId: userid });
416
+
417
+ // Contruct parameters
418
+ var params = {};
419
+ if(options) {
420
+ if(options.search) { params.search = 'title:' + options.search; }
421
+ if(options.details) { params.details = options.details; }
422
+ if(options.enrollmentType) { params.enrollmentType = options.enrollmentType; }
423
+ if(options.sortField) { params.sortField = options.sortField; }
424
+ if(options.sortOrder) { params.sortOrder = options.sortOrder; }
425
+ if(options.cursor) { params.cursor = options.cursor; }
426
+ if(options.limit) { params.limit = options.limit; }
427
+ if(options.teacherId) { params.lookup = 'class.class.instructor.uuid:' + options.teacherId; }
428
+ if(options.bundleDetails) { params.bundleDetails = options.bundleDetails; }
429
+ }
430
+
431
+ // Setup request with URL and Params
432
+ var requestAPI = request.get(url).query(params);
433
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
434
+
435
+ // Setup token in Authorization header
436
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
437
+
438
+ // Call GET ALL USER Api
439
+ requestAPI.end(function(err, response) {
440
+ if(err) {
441
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
442
+ dfd.reject(err);
443
+ }
444
+ else { dfd.resolve(response.body); }
445
+ });
446
+ }
447
+ return dfd.promise;
448
+ }
449
+
450
+ /**
451
+ * options = {
452
+ * classid: 'classid',
453
+ * search: 'string', // (optional) Search Query
454
+ * cursor: 'string', // (optional) Cursor string to fetch next set of Users
455
+ * limit: 'integer' // (optional) Number of users to fetch at a time.
456
+ * sortField: 'string' // (optional) Sort the result according to given field. By default is 'email’.
457
+ * sortOrder: 'string' // (optional) Sort the result according to given order. By default is 'desc’.
458
+ * }
459
+ */
460
+ function getClassUsers(options) {
461
+ var self = this;
462
+ // Initializing promise
463
+ var dfd = q.defer();
464
+ // Validations
465
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
466
+ if(err) { dfd.reject(err); }
467
+ else {
468
+ if(options && options.classid) {
469
+ // Passed all validations, Construct API url
470
+ var url = self.config.DEFAULT_HOSTS.AUTH +
471
+ self.config.AUTH_API_URLS.getClassUsersAPI;
472
+ url = helpers.api.constructAPIUrl(url, {
473
+ orgId: self.orgId, classId: options.classid
474
+ });
475
+
476
+ // Setup params
477
+ var params = {};
478
+ if(options.search) { params.search = options.search; }
479
+ if(options.cursor) { params.cursor = options.cursor; }
480
+ if(options.limit) { params.limit = options.limit; }
481
+ if(options.sortField) { params.sortField = options.sortField; }
482
+ if(options.sortOrder) { params.sortOrder = options.sortOrder; }
483
+
484
+ // Setup request with URL and Params
485
+ var requestAPI = request.get(url).query(params);
486
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
487
+
488
+ // Setup token in Authorization header
489
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
490
+
491
+ // Call GET ALL USER Api
492
+ requestAPI.end(function(err, response) {
493
+ if(err) {
494
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
495
+ dfd.reject(err);
496
+ }
497
+ else {
498
+ response.body.entities = converter.convertEnrollmetsResponse({data: response.body.entities}) ;
499
+ dfd.resolve(response.body);
500
+ }
501
+ });
502
+ } else {
503
+ err = {};
504
+ err.message = err.description = 'Required parameter classid is not defined.';
505
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
506
+ dfd.reject(err);
507
+ }
508
+ }
509
+ return dfd.promise;
510
+ }
511
+
512
+ //options = {
513
+ // extension: 'csv',
514
+ // import_type: 'users'/'groups'/'user-group-enrollment',
515
+ // upFile: '' // path to csv file to be uploaded
516
+ //}
517
+ function pisImport(options) {
518
+ var self = this;
519
+ // Initializing promise
520
+ var dfd = q.defer();
521
+ // Validations
522
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
523
+ if(err) { dfd.reject(err); }
524
+ else {
525
+ // Passed all validations, Construct API url
526
+ var url = self.config.DEFAULT_HOSTS.AUTH +
527
+ self.config.AUTH_API_URLS.pisImportAPI;
528
+ url = helpers.api.constructAPIUrl(url, {"orgId" : self.orgId});
529
+ // Contruct parameters
530
+ var params = {};
531
+ var upfile;
532
+ if(options) {
533
+ if(options.extension) { params.extension = options.extension; }
534
+ if(options.import_type) { params.import_type = options.import_type; }
535
+ if(options.upfile) { upfile = options.upfile; }
536
+ }
537
+
538
+ // Setup request with URL and Params
539
+ var requestAPI = request.post(url).query(params)
540
+ .set('Content-Type', 'multipart/form-data')
541
+ .attach('upfile', upfile);
542
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
543
+
544
+ // Setup token in Authorization header
545
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
546
+
547
+ // Call PIS IMPORT Api
548
+ requestAPI.end(function(err, response) {
549
+ if(err) {
550
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
551
+ dfd.reject(err);
552
+ }
553
+ else { dfd.resolve(response.body); }
554
+ });
555
+ }
556
+ return dfd.promise;
557
+ }
558
+
559
+ //options = {
560
+ // field: '' // apps / lti / sis / pis / product[ANY ONE]
561
+ //}
562
+ function getOrgSettings(options) {
563
+ var self = this;
564
+ // Initializing promise
565
+ var dfd = q.defer();
566
+ // Validations
567
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
568
+ if(err) { dfd.reject(err); }
569
+ else {
570
+ // Passed all validations, Construct API url
571
+ var url = self.config.DEFAULT_HOSTS.AUTH +
572
+ self.config.AUTH_API_URLS.getSettings;
573
+ url = helpers.api.constructAPIUrl(url, {orgId: self.orgId});
574
+
575
+ // Contruct parameters
576
+ var params = {};
577
+ if(options && options.field) {
578
+ url = self.config.DEFAULT_HOSTS.AUTH +
579
+ self.config.AUTH_API_URLS.getSettingsField;
580
+ url = helpers.api.constructAPIUrl(url, {
581
+ orgId: self.orgId, field: options.field
582
+ });
583
+ }
584
+
585
+ // Setup request with URL and Params
586
+ var requestAPI = request.get(url).query(params);
587
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
588
+
589
+ // Setup token in Authorization header
590
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
591
+
592
+ // Call SIS IMPORT Api
593
+ requestAPI.end(function(err, response) {
594
+ if(err) {
595
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
596
+ dfd.reject(err);
597
+ }
598
+ else { dfd.resolve(response.body); }
599
+ });
600
+ }
601
+ return dfd.promise;
602
+ }
603
+
604
+ //options = {
605
+ // body: {} // the top level settings field to be updated.
606
+ //}
607
+ function updateOrgSettings(options) {
608
+ var self = this;
609
+ // Initializing promise
610
+ var dfd = q.defer();
611
+ // Validations
612
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
613
+ if(err) { dfd.reject(err); }
614
+ else {
615
+ // Passed all validations, Construct API url
616
+ var url = self.config.DEFAULT_HOSTS.AUTH +
617
+ self.config.AUTH_API_URLS.getSettings;
618
+ url = helpers.api.constructAPIUrl(url, {orgId: self.orgId});
619
+ // Setup request with URL and Params
620
+ var requestAPI = request.put(url);
621
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
622
+
623
+ if(options.body) {
624
+ if(options.body.sis && (! options.body.sis.productid)) {
625
+ options.body.sis.productid = [];
626
+ }
627
+ requestAPI.send(options.body);
628
+ }
629
+ // Setup token in Authorization header
630
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
631
+
632
+ // Call SIS IMPORT Api
633
+ requestAPI.end(function(err, response) {
634
+ if(err) {
635
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
636
+ dfd.reject(err);
637
+ }
638
+ else { dfd.resolve(response.body); }
639
+ });
640
+ }
641
+ return dfd.promise;
642
+ }
643
+
644
+ //options = {
645
+ // classid: "string"
646
+ //}
647
+ function generateClassCode(options) {
648
+ var self = this, err;
649
+ // Initializing promise
650
+ var dfd = q.defer();
651
+ if(options && options.classid) {
652
+ // Validations
653
+ err = helpers.validations.isAuthenticated(self.orgId, self.token);
654
+ if(err) { dfd.reject(err); }
655
+ else {
656
+ // Passed all validations, Construct API url
657
+ var url = self.config.DEFAULT_HOSTS.AUTH +
658
+ self.config.AUTH_API_URLS.generateClassCode;
659
+ url = helpers.api.constructAPIUrl(url, {
660
+ orgId: self.orgId, classId: options.classid
661
+ });
662
+ // Setup request with URL and Params
663
+ var requestAPI = request.post(url);
664
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
665
+
666
+ // Setup token in Authorization header
667
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
668
+
669
+ // Call Update class settings Api
670
+ requestAPI.end(function(err, response) {
671
+ if(err) {
672
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
673
+ dfd.reject(err);
674
+ }
675
+ else { dfd.resolve(response.body); }
676
+ });
677
+ }
678
+ } else {
679
+ err = {};
680
+ err.message = err.description = 'classid not found in request options.';
681
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
682
+ dfd.reject(err);
683
+ }
684
+ return dfd.promise;
685
+ }
686
+
687
+ /**
688
+ * {
689
+ accountId: 'string' //mandatory
690
+ extUserId: 'string', //mandatory
691
+ jobType: 'string' //optional queryParam, Use this param to get All Jobs of a particular jobType.
692
+ }
693
+ */
694
+ function getAllJobs(options) {
695
+ var self = this;
696
+ // Initializing promise
697
+ var dfd = q.defer();
698
+
699
+ if(options && options.accountId && options.extUserId) {
700
+ // Passed all validations, Contruct API url
701
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.getAllJobs;
702
+ url = helpers.api.constructAPIUrl(url, { accountId : options.accountId, extUserId: options.extUserId });
703
+
704
+ var params = {};
705
+ if(options.jobType) { params.jobType = options.jobType; }
706
+
707
+ // Setup request with URL and Params
708
+ var requestAPI = request.get(url).query(params);
709
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
710
+
711
+ requestAPI.end(function(error, response) {
712
+ if(error) {
713
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
714
+ dfd.reject(error);
715
+ }
716
+ else { dfd.resolve(response.body); }
717
+ });
718
+ } else {
719
+ var err = {};
720
+ err.message = err.description = 'accountId or extUserId not found in request options.';
721
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
722
+ dfd.reject(err);
723
+ }
724
+
725
+ return dfd.promise;
726
+ }
727
+
728
+ /**
729
+ * options = {
730
+ accountId: 'string', //mandatory
731
+ extUserId: 'string', //mandatory
732
+ jobId: 'string', //mandatory
733
+ jobType: 'string' //mandatory
734
+ }
735
+ */
736
+ function getJob(options) {
737
+ var self = this;
738
+ // Initializing promise
739
+ var dfd = q.defer();
740
+
741
+ if(options && options.accountId && options.extUserId && options.jobId && options.jobType) {
742
+ // Passed all validations, Contruct API url
743
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.getJob;
744
+ url = helpers.api.constructAPIUrl(url, { accountId : options.accountId, extUserId: options.extUserId,
745
+ jobId: options.jobId });
746
+ var params = { jobType: options.jobType };
747
+
748
+ // Setup request with URL and Params
749
+ var requestAPI = request.get(url).query(params);
750
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
751
+
752
+ requestAPI.end(function(error, response) {
753
+ if(error) {
754
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
755
+ dfd.reject(error);
756
+ }
757
+ else { dfd.resolve(response.body); }
758
+ });
759
+ } else {
760
+ var err = {};
761
+ err.message = err.description = 'accountId or extUserId or jobType or jobId or not found in request options.';
762
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
763
+ dfd.reject(err);
764
+ }
765
+
766
+ return dfd.promise;
767
+ }
768
+
769
+ //options = {
770
+ // search: 'search string', //optional.
771
+ // sortField: ['startdate', 'enddate', 'title', 'created'] //optional, By default is 'created’.
772
+ // sortOrder: ['desc', 'asc'] //optional, By default is 'desc’.
773
+ // cursor: 'cursor' //optional, cursor to get next set of groups.
774
+ // limit: integer, // (optional) limit number of Classes in response.
775
+ // lookup: 'string', // (optional) Search query (',' separated key value pairs),
776
+ // Eg. key1:val1,key2:val2
777
+ //}
778
+ function getAllClasses(options) {
779
+ var self = this;
780
+
781
+ //Initializing promise
782
+ var dfd = q.defer();
783
+
784
+ //Validations
785
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
786
+ if(err) {
787
+ dfd.reject(err);
788
+ } else {
789
+ var queryStr = 'orgid:"' + self.orgId + '"';
790
+
791
+ if(options.search) {
792
+ queryStr = queryStr + ' AND (title:"' + options.search + '" OR class.instructor.first_name:"' + options.search +
793
+ '" OR class.instructor.last_name:"' + options.search + '" OR description:"' + options.search + '")';
794
+ }
795
+
796
+ var sortField = options.sortField || '';
797
+ sortField = sortField.replace(/ext_/ig, '').split(',').shift().trim() || 'created';
798
+ if(sortField === 'enddate' || sortField === 'startdate') {
799
+ sortField = 'class.' + sortField;
800
+ }
801
+ if(sortField === 'title') {
802
+ sortField = sortField + '.keyword';
803
+ }
804
+ var sortOrder = options.sortOrder || 'desc';
805
+ var sortObj = {}, sortArr = [];
806
+ sortObj[sortField] = sortOrder;
807
+ sortArr.push(sortObj);
808
+
809
+ var queryObj = {
810
+ query: { query_string: { query: queryStr } },
811
+ sort: sortArr
812
+ };
813
+
814
+ if(options.cursor) { queryObj.search_after = JSON.parse(options.cursor); }
815
+ if(options.limit) { queryObj.size = options.limit; }
816
+ else { options.limit = 10; } // by default ES returns only 10 elements at max.
817
+
818
+ //Passed all validations, Construct API url
819
+ var url = self.config.DEFAULT_HOSTS.INTEGRATION +
820
+ self.config.INTEGRATIONS_API_URLS.queryDataFromSearch;
821
+ url = helpers.api.constructAPIUrl(url, { index: 'classes' });
822
+
823
+ // Contruct parameters
824
+ var params = {
825
+ query: JSON.stringify(queryObj)
826
+ };
827
+
828
+ //Setup request with URL and Params
829
+ var requestAPI = request.get(url).query(params);
830
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
831
+
832
+ //Setup token in Authorization header
833
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
834
+
835
+ //Call GET ALL USER Api
836
+ requestAPI.end(function(err, response) {
837
+ if(err) {
838
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
839
+ dfd.reject(err);
840
+ } else {
841
+ var responseObject = { entities: [] };
842
+ responseObject.count = response.body.hits.hits.length;
843
+ if(responseObject.count && (options.limit === responseObject.count)) {
844
+ var cursor = response.body.hits.hits[response.body.hits.hits.length - 1].sort;
845
+ responseObject.cursor = JSON.stringify(cursor);
846
+ }
847
+ for(var index in response.body.hits.hits) {
848
+ var classEntity = response.body.hits.hits[index]._source;
849
+ var classObj = {
850
+ uuid: classEntity.classid,
851
+ created: classEntity.created,
852
+ modified: classEntity.modified,
853
+ path: classEntity.path,
854
+ category: classEntity.category,
855
+ class: {
856
+ enddate: classEntity.class.enddate,
857
+ instructor: {
858
+ name: classEntity.class.instructor.first_name + ' ' + classEntity.class.instructor.last_name,
859
+ last_name: classEntity.class.instructor.last_name,
860
+ first_name: classEntity.class.instructor.first_name,
861
+ uuid: classEntity.class.instructor.dls_user_id,
862
+ email: classEntity.class.instructor.email,
863
+ username: classEntity.class.instructor.userid + '--ACCOUNT'
864
+ },
865
+ startdate: classEntity.class.startdate
866
+ },
867
+ 'class.settings.active': classEntity['class.settings.active'],
868
+ class_code: classEntity.class_code,
869
+ class_ownership: classEntity.class_ownership || { owner_status: 'ENROLLED', model: 'STRICT' },
870
+ description: classEntity.description,
871
+ provision_method: classEntity.class.provision_method,
872
+ title: classEntity.title
873
+ };
874
+ responseObject.entities.push(classObj);
875
+ }
876
+ dfd.resolve(responseObject);
877
+ }
878
+ });
879
+ }
880
+ return dfd.promise;
881
+ }
882
+
883
+
884
+ //options = {
885
+ // classId: 'class uuid'
886
+ //}
887
+ function getParticularClass(options) {
888
+ var self = this;
889
+
890
+ //Initializing promise
891
+ var dfd = q.defer();
892
+
893
+ //Validations
894
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
895
+ if(err) {
896
+ dfd.reject(err);
897
+ } else {
898
+ if(options && options.classId) {
899
+ //Passed all validations, Contruct API url
900
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.getParticularClassAPI;
901
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classId } );
902
+
903
+ var requestAPI = request.get(url);
904
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
905
+
906
+ //Setup token in Authorization header
907
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
908
+
909
+ requestAPI.end(function(err, response) {
910
+ if(err) {
911
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
912
+ dfd.reject(err);
913
+ } else {
914
+ dfd.resolve(response.body);
915
+ }
916
+ });
917
+ } else {
918
+ err = {};
919
+ err.message = err.description = 'classId not found in request options.';
920
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
921
+ dfd.reject(err);
922
+ }
923
+ }
924
+ return dfd.promise;
925
+ }
926
+
927
+ //options = {
928
+ // ext_classid: 'ext classid' //mandatory
929
+ //}
930
+ function getParticularShadowClass(options) {
931
+ var self = this;
932
+
933
+ //Initializing promise
934
+ var dfd = q.defer();
935
+
936
+ // Validations
937
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
938
+ if(err) {
939
+ dfd.reject(err);
940
+ }
941
+ else {
942
+ if(options && options.ext_classid) {
943
+ //Passed all validations, Contruct API url
944
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.getParticularShadowClassAPI;
945
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, extClassId: options.ext_classid } );
946
+
947
+ var requestAPI = request.get(url);
948
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
949
+
950
+ //Setup token in Authorization header
951
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
952
+
953
+ requestAPI.end(function(err, response) {
954
+ if(err) {
955
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
956
+ dfd.reject(err);
957
+ }
958
+ else {
959
+ dfd.resolve(response.body);
960
+ }
961
+ });
962
+ } else {
963
+ err = {};
964
+ err.message = err.description = 'ext_classid not found in request options.';
965
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
966
+ dfd.reject(err);
967
+ }
968
+ }
969
+ return dfd.promise;
970
+ }
971
+
972
+ //options = {
973
+ // classId: 'class uuid',
974
+ // productcode: 'productcode'
975
+ //}
976
+ function createClassProductAssociation(options) {
977
+ var self = this;
978
+ // Initializing promise
979
+ var dfd = q.defer();
980
+ // Validations
981
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
982
+ if(err) { dfd.reject(err); }
983
+ else {
984
+ if(options && options.classId && options.productcode) {
985
+ // Passed all validations, Contruct API url
986
+ var url = self.config.DEFAULT_HOSTS.AUTH +
987
+ self.config.AUTH_API_URLS.classProductAssociation;
988
+ url = helpers.api.constructAPIUrl(url, {
989
+ orgId: self.orgId, classId: options.classId, productcode: options.productcode
990
+ });
991
+
992
+ // Setup request with URL and Params
993
+ var requestAPI = request.post(url)
994
+ .set('Content-Type', 'application/json')
995
+ .set('Accept', 'application/json');
996
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
997
+
998
+ // Setup token in Authorization header
999
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1000
+
1001
+ requestAPI.end(function(err, response) {
1002
+ if(err) {
1003
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1004
+ dfd.reject(err);
1005
+ }
1006
+ else { dfd.resolve(response.body); }
1007
+ });
1008
+ } else {
1009
+ err = {};
1010
+ err.message = err.description = 'classId or productcode not found in request options.';
1011
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1012
+ dfd.reject(err);
1013
+ }
1014
+ }
1015
+ return dfd.promise;
1016
+ }
1017
+
1018
+ //options = {
1019
+ // classId: 'class uuid',
1020
+ // productcode: 'product code'
1021
+ //}
1022
+ function removeClassProductAssociation(options) {
1023
+ var self = this;
1024
+ // Initializing promise
1025
+ var dfd = q.defer();
1026
+ // Validations
1027
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1028
+ if(err) { dfd.reject(err); }
1029
+ else {
1030
+ if(options && options.classId && options.productcode) {
1031
+ // Passed all validations, Contruct API url
1032
+ var url = self.config.DEFAULT_HOSTS.AUTH +
1033
+ self.config.AUTH_API_URLS.classProductAssociation;
1034
+ url = helpers.api.constructAPIUrl(url, {
1035
+ orgId: self.orgId, classId: options.classId, productcode: options.productcode
1036
+ });
1037
+
1038
+ // Contruct parameters
1039
+ var params = {};
1040
+
1041
+ // Setup request with URL and Params
1042
+ var requestAPI = request.delete(url).query(params);
1043
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1044
+
1045
+ // Setup token in Authorization header
1046
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1047
+
1048
+ requestAPI.end(function(err, response) {
1049
+ if(err) {
1050
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1051
+ dfd.reject(err);
1052
+ }
1053
+ else { dfd.resolve(response.body); }
1054
+ });
1055
+ } else {
1056
+ err = {};
1057
+ err.message = err.description = 'classId or productcode not found in request options.';
1058
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1059
+ dfd.reject(err);
1060
+ }
1061
+ }
1062
+ return dfd.promise;
1063
+ }
1064
+
1065
+ /*options = {
1066
+ classid: 'string'
1067
+ }*/
1068
+ function getClassAppdata(options) {
1069
+ var self = this;
1070
+ // Initializing promise
1071
+ var dfd = q.defer();
1072
+ // Validations
1073
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1074
+ if(err) { dfd.reject(err); }
1075
+ else {
1076
+ if(options && options.classid) {
1077
+ // Passed all validations, Contruct API url
1078
+ var url = self.config.DEFAULT_HOSTS.AUTH +
1079
+ self.config.AUTH_API_URLS.ClassAppdata;
1080
+ url = helpers.api.constructAPIUrl(url, {
1081
+ orgId: self.orgId, classid: options.classid
1082
+ });
1083
+ //Setup request with URL
1084
+ var requestAPI = request.get(url);
1085
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1086
+
1087
+ //Setup token in Authorization header
1088
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1089
+
1090
+ //Call Class Appdata Api
1091
+ requestAPI.end(function(err, response) {
1092
+ if(err) {
1093
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1094
+ dfd.reject(err);
1095
+ } else {
1096
+ dfd.resolve(response.body);
1097
+ }
1098
+ });
1099
+ } else {
1100
+ err = {};
1101
+ err.message = err.description = 'classid not found in request options.';
1102
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1103
+ dfd.reject(err);
1104
+ }
1105
+ }
1106
+ return dfd.promise;
1107
+ }
1108
+
1109
+ /*options = {
1110
+ classid: 'string',
1111
+ appdata: {}
1112
+ }*/
1113
+
1114
+ function putClassAppdata(options) {
1115
+ var self = this;
1116
+ // Initializing promise
1117
+ var dfd = q.defer();
1118
+ // Validations
1119
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1120
+ if(err) { dfd.reject(err); }
1121
+ else {
1122
+ if(options && options.classid && options.appdata) {
1123
+ // Passed all validations, Contruct API url
1124
+ var url = self.config.DEFAULT_HOSTS.AUTH +
1125
+ self.config.AUTH_API_URLS.ClassAppdata;
1126
+ url = helpers.api.constructAPIUrl(url, {
1127
+ orgId: self.orgId, classid: options.classid
1128
+ });
1129
+
1130
+ // Setup request with URL and Params
1131
+ var requestAPI = request.put(url)
1132
+ .set('Content-Type', 'application/json')
1133
+ .set('Accept', 'application/json')
1134
+ .send(options.appdata);
1135
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1136
+
1137
+ // Setup token in Authorization header
1138
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1139
+
1140
+ requestAPI.end(function(err, response) {
1141
+ if(err) {
1142
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1143
+ dfd.reject(err);
1144
+ }
1145
+ else { dfd.resolve(response.body); }
1146
+ });
1147
+ } else {
1148
+ err = {};
1149
+ err.message = err.description = 'classid or appdata not found in request options.';
1150
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1151
+ dfd.reject(err);
1152
+ }
1153
+ }
1154
+ return dfd.promise;
1155
+ }
1156
+
1157
+ /*options = {
1158
+ classid: 'string'
1159
+ }*/
1160
+
1161
+ function deleteClassAppdata(options) {
1162
+ var self = this;
1163
+ // Initializing promise
1164
+ var dfd = q.defer();
1165
+ // Validations
1166
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1167
+ if(err) { dfd.reject(err); }
1168
+ else {
1169
+ if(options && options.classid) {
1170
+ // Passed all validations, Contruct API url
1171
+ var url = self.config.DEFAULT_HOSTS.AUTH +
1172
+ self.config.AUTH_API_URLS.ClassAppdata;
1173
+ url = helpers.api.constructAPIUrl(url, {
1174
+ orgId: self.orgId, classid: options.classid
1175
+ });
1176
+
1177
+ // Setup request with URL and Params
1178
+ var requestAPI = request.delete(url);
1179
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1180
+
1181
+ // Setup token in Authorization header
1182
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1183
+
1184
+ requestAPI.end(function(err, response) {
1185
+ if(err) {
1186
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1187
+ dfd.reject(err);
1188
+ }
1189
+ else { dfd.resolve(response.body); }
1190
+ });
1191
+ } else {
1192
+ err = {};
1193
+ err.message = err.description = 'classid not found in request options.';
1194
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1195
+ dfd.reject(err);
1196
+ }
1197
+ }
1198
+ return dfd.promise;
1199
+ }
1200
+
1201
+ //options = {
1202
+ // classid: '', //Class Id
1203
+ // userid: '', //User Id
1204
+ //};
1205
+ function enrollUsertoClass(options) {
1206
+ var self = this;
1207
+ var err = {};
1208
+ //Initializing promise
1209
+ var dfd = q.defer();
1210
+ if(options && options.classid && options.userid) {
1211
+ //Validations
1212
+ err = helpers.validations.isAuthenticated(self.orgId, self.token);
1213
+ if(err) {
1214
+ dfd.reject(err);
1215
+ } else {
1216
+ //Passed all validations, Construct API url
1217
+ var url = self.config.DEFAULT_HOSTS.AUTH +
1218
+ self.config.AUTH_API_URLS.enrollUsertoClass;
1219
+ url = helpers.api.constructAPIUrl(url, {
1220
+ orgId: self.orgId,
1221
+ classId: options.classid,
1222
+ userId: options.userid
1223
+ });
1224
+
1225
+ //Contruct parameters
1226
+ var params = {};
1227
+
1228
+ //Setup request with URL and Params
1229
+ var requestAPI = request.post(url)
1230
+ .set('Content-Type', 'application/json')
1231
+ .set('Accept', 'application/json')
1232
+ .query(params);
1233
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1234
+
1235
+ //Setup token in Authorization header
1236
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1237
+
1238
+ //Call GET Product by it's code Api
1239
+ requestAPI.end(function(err, response) {
1240
+ if(err) {
1241
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1242
+ dfd.reject(err);
1243
+ } else {
1244
+ dfd.resolve(response.body);
1245
+ }
1246
+ });
1247
+ }
1248
+ } else {
1249
+ err.message = err.description = 'Mandatory parameter classid or userid not found in request options';
1250
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1251
+ dfd.reject(err);
1252
+ }
1253
+ return dfd.promise;
1254
+ }
1255
+
1256
+ //options = {
1257
+ // classid: '', //Class Id
1258
+ //};
1259
+ function enrollSelftoClass(options) {
1260
+ var self = this;
1261
+ var err = {};
1262
+ //Initializing promise
1263
+ var dfd = q.defer();
1264
+ if(options && options.classid) {
1265
+ //Validations
1266
+ err = helpers.validations.isAuthenticated(self.orgId, self.token);
1267
+ if(err) {
1268
+ dfd.reject(err);
1269
+ } else {
1270
+ //Passed all validations, Construct API url
1271
+ var url = self.config.DEFAULT_HOSTS.AUTH +
1272
+ self.config.AUTH_API_URLS.enrollSelftoClass;
1273
+ url = helpers.api.constructAPIUrl(url, {
1274
+ orgId: self.orgId,
1275
+ classId: options.classid
1276
+ });
1277
+
1278
+ //Setup request with URL and Params
1279
+ var requestAPI = request.post(url);
1280
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1281
+
1282
+ //Setup token in Authorization header
1283
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1284
+
1285
+ //Call GET Product by it's code Api
1286
+ requestAPI.end(function(err, response) {
1287
+ if(err) {
1288
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1289
+ dfd.reject(err);
1290
+ } else {
1291
+ dfd.resolve(response.body);
1292
+ }
1293
+ });
1294
+ }
1295
+ }
1296
+ else {
1297
+ err.message = err.description = 'Mandatory parameter classid not found in request options';
1298
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1299
+ dfd.reject(err);
1300
+ }
1301
+ return dfd.promise;
1302
+ }
1303
+
1304
+ //options = {
1305
+ // classid: '', //Class Id
1306
+ // users: ['dls-userid1', 'dls-userid-2'] //Users Id
1307
+ //};
1308
+ function enrollMultiUserstoClass(options) {
1309
+ var self = this;
1310
+ var err = {};
1311
+ //Initializing promise
1312
+ var dfd = q.defer();
1313
+ if(options && options.classid && options.users) {
1314
+ //Validations
1315
+ err = helpers.validations.isAuthenticated(self.orgId, self.token);
1316
+ if(err) {
1317
+ dfd.reject(err);
1318
+ } else {
1319
+ //Passed all validations, Construct API url
1320
+ var url = self.config.DEFAULT_HOSTS.AUTH +
1321
+ self.config.AUTH_API_URLS.enrollMultiUserstoClass;
1322
+ url = helpers.api.constructAPIUrl(url, {
1323
+ orgId: self.orgId,
1324
+ classId: options.classid
1325
+ });
1326
+
1327
+ //Contruct parameters
1328
+ var params = {
1329
+ users: options.users
1330
+ };
1331
+ //Setup request with URL and Params
1332
+ var requestAPI = request.post(url)
1333
+ .set('Content-Type', 'application/json')
1334
+ .set('Accept', 'application/json')
1335
+ .send(params);
1336
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1337
+
1338
+ //Setup token in Authorization header
1339
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1340
+
1341
+ //Call GET Product by it's code Api
1342
+ requestAPI.end(function(err, response) {
1343
+ if(err) {
1344
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1345
+ dfd.reject(err);
1346
+ } else {
1347
+ dfd.resolve(response.body);
1348
+ }
1349
+ });
1350
+ }
1351
+ } else {
1352
+ err.message = err.description = 'Mandatory parameter classid or users ' +
1353
+ 'array not found in request options';
1354
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1355
+ dfd.reject(err);
1356
+ }
1357
+ return dfd.promise;
1358
+ }
1359
+
1360
+ //options = {
1361
+ // classid: '', //Class Id
1362
+ // users: ['dls-userid1', 'dls-userid-2'] //Users Id
1363
+ //};
1364
+ function unEnrollMultiUserstoClass(options) {
1365
+ var self = this;
1366
+ var err = {};
1367
+ //Initializing promise
1368
+ var dfd = q.defer();
1369
+ if(options && options.classid && options.users) {
1370
+ //Validations
1371
+ err = helpers.validations.isAuthenticated(self.orgId, self.token);
1372
+ if(err) {
1373
+ dfd.reject(err);
1374
+ } else {
1375
+ //Passed all validations, Construct API url
1376
+ var url = self.config.DEFAULT_HOSTS.AUTH +
1377
+ self.config.AUTH_API_URLS.enrollMultiUserstoClass;
1378
+ url = helpers.api.constructAPIUrl(url, {
1379
+ orgId: self.orgId,
1380
+ classId: options.classid
1381
+ });
1382
+
1383
+ //Contruct parameters
1384
+ var params = {
1385
+ users: options.users
1386
+ };
1387
+ //Setup request with URL and Params
1388
+ var requestAPI = request.delete(url)
1389
+ .set('Content-Type', 'application/json')
1390
+ .set('Accept', 'application/json')
1391
+ .send(params);
1392
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1393
+
1394
+ //Setup token in Authorization header
1395
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1396
+
1397
+ //Call GET Product by it's code Api
1398
+ requestAPI.end(function(err, response) {
1399
+ if(err) {
1400
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1401
+ dfd.reject(err);
1402
+ } else {
1403
+ dfd.resolve(response.body);
1404
+ }
1405
+ });
1406
+ }
1407
+ } else {
1408
+ err.message = err.description = 'Mandatory parameter classid or users ' +
1409
+ 'array not found in request options';
1410
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1411
+ dfd.reject(err);
1412
+ }
1413
+ return dfd.promise;
1414
+ }
1415
+
1416
+ //options = {
1417
+ // classid: '', //Class Id
1418
+ // userid: '', //User Id
1419
+ //};
1420
+ function unEnrollUsertoClass(options) {
1421
+ var self = this;
1422
+ var err = {};
1423
+ //Initializing promise
1424
+ var dfd = q.defer();
1425
+ if(options && options.classid && options.userid) {
1426
+ //Validations
1427
+ err = helpers.validations.isAuthenticated(self.orgId, self.token);
1428
+ if(err) {
1429
+ dfd.reject(err);
1430
+ } else {
1431
+ //Passed all validations, Construct API url
1432
+ var url = self.config.DEFAULT_HOSTS.AUTH +
1433
+ self.config.AUTH_API_URLS.enrollUsertoClass;
1434
+ url = helpers.api.constructAPIUrl(url, {
1435
+ orgId: self.orgId,
1436
+ classId: options.classid,
1437
+ userId: options.userid
1438
+ });
1439
+
1440
+ //Contruct parameters
1441
+ var params = {};
1442
+
1443
+ //Setup request with URL and Params
1444
+ var requestAPI = request.delete(url).query(params);
1445
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1446
+
1447
+ //Setup token in Authorization header
1448
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1449
+
1450
+ //Call GET Product by it's code Api
1451
+ requestAPI.end(function(err, response) {
1452
+ if(err) {
1453
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1454
+ dfd.reject(err);
1455
+ } else {
1456
+ dfd.resolve(response.body);
1457
+ }
1458
+ });
1459
+ }
1460
+ } else {
1461
+ err.message = err.description = 'Mandatory parameter classid or userid not found in request options';
1462
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1463
+ dfd.reject(err);
1464
+ }
1465
+ return dfd.promise;
1466
+ }
1467
+
1468
+ //options = ['parameter1', 'parameter2']
1469
+ function encodeURLParameter(options) {
1470
+ var response = {};
1471
+ for(var param in options) {
1472
+ response[options[param]] = encodeURIComponent(options[param]);
1473
+ }
1474
+ return response;
1475
+ }
1476
+
1477
+ /**
1478
+ * options = {
1479
+ * title: 'class title',
1480
+ * startdate: 'Epoch(Unix) timestamp in milliseconds',
1481
+ * enddate: 'Epoch(Unix) timestamp in milliseconds',
1482
+ * description: '' // Optional field
1483
+ * class_ownership: 'STRICT' / 'NO_OWNER' // Default - STRICT, Optional field
1484
+ * }
1485
+ */
1486
+ function createClass(options) {
1487
+ var self = this;
1488
+
1489
+ //Initializing promise
1490
+ var dfd = q.defer();
1491
+
1492
+ //Validations
1493
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1494
+ if(err) {
1495
+ dfd.reject(err);
1496
+ } else {
1497
+ if(options && options.title && options.startdate && options.enddate) {
1498
+ //Passed all validations, Contruct API url
1499
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.createClass;
1500
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId });
1501
+
1502
+ //Contruct parameters
1503
+ var params = {
1504
+ title: options.title,
1505
+ startdate: options.startdate,
1506
+ enddate: options.enddate
1507
+ };
1508
+
1509
+ if(options.description){ params.description = options.description; }
1510
+ if(options.class_ownership){ params.class_ownership = options.class_ownership; }
1511
+
1512
+ //Setup request with URL and Params
1513
+ var requestAPI = request.post(url).send(params);
1514
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1515
+
1516
+ //Setup token in Authorization header
1517
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1518
+
1519
+ requestAPI.end(function(err, response) {
1520
+ if(err) {
1521
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1522
+ dfd.reject(err);
1523
+ } else {
1524
+ var res = converter.convertClassResponse({data: response.body}) ;
1525
+ dfd.resolve(res);
1526
+ }
1527
+ });
1528
+ } else {
1529
+ err = {};
1530
+ err.message = err.description = 'title or startdate or enddate not found in request options.';
1531
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1532
+ dfd.reject(err);
1533
+ }
1534
+ }
1535
+ return dfd.promise;
1536
+ }
1537
+
1538
+ //options = {
1539
+ // classid: 'class id',
1540
+ // title: 'class title', //Optional field
1541
+ // startdate: 'Epoch(Unix) timestamp in milliseconds', //Optional field
1542
+ // enddate: 'Epoch(Unix) timestamp in milliseconds', //Optional field
1543
+ // description: '' //Optional field
1544
+ //}
1545
+ function updateClass(options) {
1546
+ var self = this;
1547
+
1548
+ //Initializing promise
1549
+ var dfd = q.defer();
1550
+
1551
+ //Validations
1552
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1553
+ if(err) {
1554
+ dfd.reject(err);
1555
+ } else {
1556
+ if(options && options.classid &&
1557
+ (options.title || options.startdate || options.enddate || options.description))
1558
+ {
1559
+ //Passed all validations, Contruct API url
1560
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.specificClass;
1561
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classid });
1562
+
1563
+ //Contruct parameters
1564
+ var params = {};
1565
+
1566
+ //Setup request with URL and Params
1567
+ var requestAPI = request.put(url).send(options);
1568
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1569
+
1570
+ //Setup token in Authorization header
1571
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1572
+
1573
+ requestAPI.end(function(err, response) {
1574
+ if(err) {
1575
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1576
+ dfd.reject(err);
1577
+ } else {
1578
+ dfd.resolve(response.body);
1579
+ }
1580
+ });
1581
+ } else {
1582
+ err = {};
1583
+ err.message = err.description = 'classid and atleast one of update field (title or startdate or enddate or description) required in request options.';
1584
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1585
+ dfd.reject(err);
1586
+ }
1587
+ }
1588
+ return dfd.promise;
1589
+ }
1590
+
1591
+ /** options =
1592
+ *{
1593
+ "space_title": "string",
1594
+ "classes": [
1595
+ {
1596
+ "title": "class tiltle",
1597
+ "startdate": 'Epoch(Unix) timestamp in milliseconds',
1598
+ "enddate": 'Epoch(Unix) timestamp in milliseconds',
1599
+ "rowId": 'string with max limit 3 characters,
1600
+ "description": "string",
1601
+ "model": "STRICT",
1602
+ "owner": {
1603
+ "userid": "string" //Mandatory if model is 'STRICT'
1604
+ },
1605
+ "teachers": [
1606
+ {
1607
+ "userid": "string",
1608
+ "email": "string"
1609
+ "first_name": "string"
1610
+ "last_name": "string"
1611
+ "userid": "string" // optional
1612
+ "ext_user_id": "string" // optional
1613
+ "dls_org_status": "string" // optional
1614
+ "ext_account_status": "string" // optional
1615
+ ],
1616
+ "products": [ // optional
1617
+ {
1618
+ "productcode": "string", //mandatory
1619
+ "title": ""
1620
+ },
1621
+ {
1622
+ "productcode": "string", //mandatory
1623
+ "title": ""
1624
+ }
1625
+ ]
1626
+ }
1627
+ ]
1628
+ }
1629
+ */
1630
+ function createMultipleClasses(options) {
1631
+ var self = this;
1632
+
1633
+ //Initializing promise
1634
+ var dfd = q.defer();
1635
+
1636
+ //Validations
1637
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1638
+ if (err) { dfd.reject(err); }
1639
+ else {
1640
+ if (options.classes.length > 0) {
1641
+
1642
+ //Passed all validations, Contruct API url
1643
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.createMultipleClasses;
1644
+ url = helpers.api.constructAPIUrl(url, {
1645
+ orgId: self.orgId
1646
+ });
1647
+
1648
+ //Setup request with URL and Params and Query
1649
+ var requestAPI = request.post(url).send(options);
1650
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1651
+
1652
+ //Setup token in Authorization header
1653
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1654
+
1655
+ requestAPI.end(function (err, response) {
1656
+ if (err) {
1657
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
1658
+ dfd.reject(err);
1659
+ }
1660
+ else { dfd.resolve(response.body); }
1661
+ });
1662
+ }
1663
+ else {
1664
+ err = {};
1665
+ err.message = err.description = 'Mandatory parameter classes not found in request options';
1666
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1667
+ dfd.reject(err);
1668
+ }
1669
+ }
1670
+ return dfd.promise;
1671
+ }
1672
+
1673
+ /*
1674
+ options = {
1675
+ "classid": "classid", //mandatory
1676
+ "data": {
1677
+ "title": "assigned path title", //mandatory
1678
+ "duedate": "epoch due date", //mandatory
1679
+ "startdate": "epoch start date", //optional
1680
+ "shared_progress": true, //optional, default=true
1681
+ "path_type": ‘flat’, //optional, default=flat , ['flat', 'hierarchical']
1682
+ "rules": {}, //optional
1683
+ "items": [ //mandatory
1684
+ {
1685
+ "item-code": "required_item-code", //mandatory
1686
+ "item_type": "required_item-type", //mandatory, ['dls-internal','external']
1687
+ "dls_product_code": "product_code" //mandatory only if item_type is 'dls-internal'
1688
+ }
1689
+ ],
1690
+ "context": {
1691
+ "bundle-code": "string",
1692
+ "space_key": "string"
1693
+ }
1694
+ }
1695
+ }
1696
+ */
1697
+ function createAssignedPath(options) {
1698
+ var self = this;
1699
+ var dfd = q.defer();
1700
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1701
+ if(err) { dfd.reject(err); }
1702
+ else {
1703
+ if(options && options.classid && options.data && options.data.title &&
1704
+ options.data.duedate && options.data.items && options.data.items.length > 0) {
1705
+
1706
+ // Passed all validations, Contruct API url
1707
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.createAssignedPath;
1708
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classid });
1709
+
1710
+ // Setup request with URL and Params
1711
+ var requestAPI = request.post(url)
1712
+ .set('Content-Type', 'application/json')
1713
+ .set('Accept', 'application/json')
1714
+ .send(options.data);
1715
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1716
+
1717
+ //Setup token in Authorization header
1718
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1719
+
1720
+ requestAPI.end(function (error, response) {
1721
+ if(error) {
1722
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1723
+ dfd.reject(err);
1724
+ }
1725
+ else { dfd.resolve(response.body); }
1726
+ });
1727
+ }
1728
+ else {
1729
+ err = {};
1730
+ err.message = err.description = 'Mandatory params - title or classid or duedate or items ' +
1731
+ 'not found in request options.';
1732
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1733
+ dfd.reject(err);
1734
+ }
1735
+ }
1736
+ return dfd.promise;
1737
+ }
1738
+
1739
+ /*
1740
+ options = {
1741
+ classid: 'string' //mandatory
1742
+ assignedpathid: 'string' //mandatory
1743
+ }
1744
+ */
1745
+ function deleteAssignedPath(options) {
1746
+ var self = this;
1747
+ var dfd = q.defer();
1748
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1749
+ if(err) { dfd.reject(err); }
1750
+ else {
1751
+ if(options && options.classid && options.assignedpathid) {
1752
+
1753
+ // Passed all validations, Contruct API url
1754
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.deleteAssignedPath;
1755
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classid, assignedPathId: options.assignedpathid });
1756
+
1757
+ // Setup request with URL and Params
1758
+ var requestAPI = request.delete(url);
1759
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1760
+
1761
+ //Setup token in Authorization header
1762
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1763
+
1764
+ requestAPI.end(function (error, response) {
1765
+ if(error) {
1766
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1767
+ dfd.reject(err);
1768
+ }
1769
+ else { dfd.resolve(response.body); }
1770
+ });
1771
+ }
1772
+ else {
1773
+ err = {};
1774
+ err.message = err.description = 'Mandatory params - classid or assignedpathid ' +
1775
+ 'not found in request options.';
1776
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1777
+ dfd.reject(err);
1778
+ }
1779
+ }
1780
+ return dfd.promise;
1781
+ }
1782
+
1783
+ /*
1784
+ options = {
1785
+ classid: 'string' //mandatory
1786
+ assignedpathid: 'string' //mandatory
1787
+ data:
1788
+ {
1789
+ title: 'string' //optional
1790
+ startdate: 'string' //optional
1791
+ duedate: 'string' //optional
1792
+ }
1793
+ }
1794
+ */
1795
+ function updateAssignedPath(options) {
1796
+ var self = this;
1797
+ var dfd = q.defer();
1798
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1799
+ if(err) { dfd.reject(err); }
1800
+ else {
1801
+ if(options && options.classid && options.assignedpathid) {
1802
+
1803
+ // Passed all validations, Contruct API url
1804
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.deleteAssignedPath;
1805
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classid, assignedPathId: options.assignedpathid });
1806
+
1807
+ // Setup request with URL and Params
1808
+ var requestAPI = request.put(url);
1809
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1810
+ if(options.data) { requestAPI.send(options.data); }
1811
+
1812
+ //Setup token in Authorization header
1813
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1814
+
1815
+ requestAPI.end(function (error, response) {
1816
+ if(error) {
1817
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1818
+ dfd.reject(err);
1819
+ }
1820
+ else { dfd.resolve(response.body); }
1821
+ });
1822
+ }
1823
+ else {
1824
+ err = {};
1825
+ err.message = err.description = 'Mandatory params - classid or assignedpathid ' +
1826
+ 'not found in request options.';
1827
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1828
+ dfd.reject(err);
1829
+ }
1830
+ }
1831
+ return dfd.promise;
1832
+ }
1833
+
1834
+ /**
1835
+ * options={
1836
+ "title": "string", //mandatory
1837
+ "startdate": 0, //mandatory
1838
+ "enddate": 0, //mandatory
1839
+ "path": "string"
1840
+ }
1841
+ */
1842
+ function createGroup(options) {
1843
+ var self = this;
1844
+ // Initializing promise
1845
+ var dfd = q.defer();
1846
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1847
+ if(err) { dfd.reject(err); }
1848
+ else {
1849
+ // Validations
1850
+
1851
+ if(options && options.title && options.startdate && options.enddate) {
1852
+ // Passed all validations, Contruct API url
1853
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.allGroups;
1854
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId });
1855
+
1856
+ // Setup request with URL and Params
1857
+ var requestAPI = request.post(url)
1858
+ .set('Content-Type', 'application/json')
1859
+ .set('Accept', 'application/json')
1860
+ .send(options);
1861
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1862
+
1863
+ //Setup token in Authorization header
1864
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1865
+
1866
+ requestAPI.end(function(error, response) {
1867
+ if(error) {
1868
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1869
+ dfd.reject(error);
1870
+ }
1871
+ else { dfd.resolve(response); }
1872
+ });
1873
+ }
1874
+ else {
1875
+ err = {};
1876
+ err.message = err.description = 'title or startdate or enddate not found in request options.';
1877
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1878
+ dfd.reject(err);
1879
+ }
1880
+ }
1881
+ return dfd.promise;
1882
+ }
1883
+
1884
+ /* options = {
1885
+ "path": "string" //mandatory, Path of the group(this path group will also be returned,
1886
+ "cursor": "string"
1887
+ };
1888
+ */
1889
+ function getAllGroupsByPath(options) {
1890
+ var self = this;
1891
+ // Initializing promise
1892
+ var dfd = q.defer();
1893
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1894
+ if(err) { dfd.reject(err); }
1895
+ else {
1896
+ if(options && options.path) {
1897
+
1898
+ // Passed all validations, Contruct API url
1899
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.allGroups;
1900
+ url = helpers.api.constructAPIUrl(url,{ orgId: self.orgId });
1901
+
1902
+ var queryParams = { path: options.path };
1903
+ if(options.cursor) { queryParams.cursor = options.cursor; }
1904
+
1905
+ // Setup request with URL and Params
1906
+ var requestAPI = request.get(url).query(queryParams);
1907
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1908
+
1909
+ //Setup token in Authorization header
1910
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1911
+
1912
+ requestAPI.end(function (error, response) {
1913
+ if(error) {
1914
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1915
+ dfd.reject(err);
1916
+ }
1917
+ else { dfd.resolve(response); }
1918
+ });
1919
+ }
1920
+ else {
1921
+ err = {};
1922
+ err.message = err.description = 'Mandatory params - path not found in request options.';
1923
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1924
+ dfd.reject(err);
1925
+ }
1926
+ }
1927
+ return dfd.promise;
1928
+ }
1929
+
1930
+ /* options = {
1931
+ "groupId": "string" //mandatory
1932
+ };
1933
+ */
1934
+ function getAGroup(options) {
1935
+ var self = this;
1936
+ // Initializing promise
1937
+ var dfd = q.defer();
1938
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1939
+ if(err) { dfd.reject(err); }
1940
+ else {
1941
+ if(options && options.groupId) {
1942
+
1943
+ // Passed all validations, Contruct API url
1944
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.aParticularGroup;
1945
+ url = helpers.api.constructAPIUrl(url,{ orgId: self.orgId, groupId: options.groupId });
1946
+
1947
+ // Setup request with URL and Params
1948
+ var requestAPI = request.get(url);
1949
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
1950
+
1951
+ //Setup token in Authorization header
1952
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
1953
+
1954
+ requestAPI.end(function (error, response) {
1955
+ if(error) {
1956
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
1957
+ dfd.reject(err);
1958
+ }
1959
+ else { dfd.resolve(response); }
1960
+ });
1961
+ }
1962
+ else {
1963
+ err = {};
1964
+ err.message = err.description = 'Mandatory params - groupId not found in request options.';
1965
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
1966
+ dfd.reject(err);
1967
+ }
1968
+ }
1969
+ return dfd.promise;
1970
+ }
1971
+
1972
+ /* options = {
1973
+ "groupId": "string" //mandatory
1974
+ "body": {
1975
+ "title": "string"
1976
+ "startdate": "string",
1977
+ "enddate":"string"
1978
+ }
1979
+ };
1980
+ */
1981
+ function updateGroup(options) {
1982
+ var self = this;
1983
+ // Initializing promise
1984
+ var dfd = q.defer();
1985
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
1986
+ if(err) { dfd.reject(err); }
1987
+ else {
1988
+ if(options && options.groupId) {
1989
+
1990
+ // Passed all validations, Contruct API url
1991
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.aParticularGroup;
1992
+ url = helpers.api.constructAPIUrl(url,{ orgId: self.orgId, groupId: options.groupId });
1993
+
1994
+ // Setup request with URL and Params
1995
+ var requestAPI = request.put(url)
1996
+ .set('Content-Type', 'application/json')
1997
+ .set('Accept', 'application/json')
1998
+ .send(options.body);
1999
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2000
+
2001
+ //Setup token in Authorization header
2002
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2003
+
2004
+ requestAPI.end(function (error, response) {
2005
+ if(error) {
2006
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2007
+ dfd.reject(err);
2008
+ }
2009
+ else { dfd.resolve(response); }
2010
+ });
2011
+ }
2012
+ else {
2013
+ err = {};
2014
+ err.message = err.description = 'Mandatory params - groupId not found in ' +
2015
+ 'request options.';
2016
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2017
+ dfd.reject(err);
2018
+ }
2019
+ }
2020
+ return dfd.promise;
2021
+ }
2022
+
2023
+ /* options = {
2024
+ "groupId": "string" //mandatory
2025
+ };
2026
+ */
2027
+ function deleteGroup(options) {
2028
+ var self = this;
2029
+ // Initializing promise
2030
+ var dfd = q.defer();
2031
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2032
+ if(err) { dfd.reject(err); }
2033
+ else {
2034
+ if(options && options.groupId) {
2035
+
2036
+ // Passed all validations, Contruct API url
2037
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.aParticularGroup;
2038
+ url = helpers.api.constructAPIUrl(url,{ orgId: self.orgId, groupId: options.groupId });
2039
+
2040
+ // Setup request with URL and Params
2041
+ var requestAPI = request.delete(url);
2042
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2043
+
2044
+ //Setup token in Authorization header
2045
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2046
+
2047
+ requestAPI.end(function (error, response) {
2048
+ if(error) {
2049
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2050
+ dfd.reject(err);
2051
+ }
2052
+ else { dfd.resolve(response); }
2053
+ });
2054
+ }
2055
+ else {
2056
+ err = {};
2057
+ err.message = err.description = 'Mandatory params - groupId not found in ' +
2058
+ 'request options.';
2059
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2060
+ dfd.reject(err);
2061
+ }
2062
+ }
2063
+ return dfd.promise;
2064
+ }
2065
+
2066
+ /*
2067
+ options = {
2068
+ groupId: "string", //mandatory
2069
+ cursor: "cursor"
2070
+ }
2071
+ */
2072
+ function getAllMembersOfAGroup(options) {
2073
+ var self = this;
2074
+ // Initializing promise
2075
+ var dfd = q.defer(), params = {};
2076
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2077
+ if(err) { dfd.reject(err); }
2078
+ // Validations
2079
+ else{
2080
+ if(options && options.groupId) {
2081
+ // Passed all validations, Contruct API url
2082
+ var url = self.config.DEFAULT_HOSTS.AUTH +
2083
+ self.config.AUTH_API_URLS.getAllMembersOfAGroup;
2084
+ url = helpers.api.constructAPIUrl(url, {
2085
+ orgId: self.orgId,
2086
+ groupId: options.groupId
2087
+ });
2088
+
2089
+ // Setup request with URL and Param
2090
+ if(options.cursor){ params.cursor = options.cursor };
2091
+
2092
+ var requestAPI = request.get(url)
2093
+ .set('Content-Type', 'application/json')
2094
+ .set('Accept', 'application/json')
2095
+ .send(params);
2096
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2097
+
2098
+ //Setup token in Authorization header
2099
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2100
+
2101
+ requestAPI.end(function(error, response) {
2102
+ if(error) {
2103
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2104
+ dfd.reject(error);
2105
+ }
2106
+ else { dfd.resolve(response); }
2107
+ });
2108
+ } else {
2109
+ err = {};
2110
+ err.message = err.description = 'Mandatory param - groupId not found in request options.';
2111
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2112
+ dfd.reject(err);
2113
+ }
2114
+ }
2115
+ return dfd.promise;
2116
+ }
2117
+
2118
+ /*
2119
+ options = {
2120
+ path: "string", //mandatory
2121
+ cursor: "string"
2122
+ }
2123
+ */
2124
+ function getAllGroupMembersByPath(options) {
2125
+ var self = this;
2126
+ // Initializing promise
2127
+ var dfd = q.defer(), params = {};
2128
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2129
+ if(err) { dfd.reject(err); }
2130
+ // Validations
2131
+ else {
2132
+ if(options && options.path) {
2133
+ // Passed all validations, Contruct API url
2134
+ var url = self.config.DEFAULT_HOSTS.AUTH +
2135
+ self.config.AUTH_API_URLS.getAllGroupMembersByPath;
2136
+ url = helpers.api.constructAPIUrl(url, {
2137
+ orgId: self.orgId
2138
+ });
2139
+
2140
+ // Setup request with URL and Params
2141
+ params.path = options.path;
2142
+ if(options.cursor){ params.cursor = options.cursor };
2143
+
2144
+ var requestAPI = request.get(url)
2145
+ .set('Content-Type', 'application/json')
2146
+ .set('Accept', 'application/json')
2147
+ .query(params);
2148
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2149
+
2150
+ //Setup token in Authorization header
2151
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2152
+
2153
+ requestAPI.end(function(error, response) {
2154
+ if(error) {
2155
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2156
+ dfd.reject(error);
2157
+ }
2158
+ else { dfd.resolve(response); }
2159
+ });
2160
+ } else {
2161
+ err = {};
2162
+ err.message = err.description = 'Mandatory param - path not found in request options.';
2163
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2164
+ dfd.reject(err);
2165
+ }
2166
+ }
2167
+ return dfd.promise;
2168
+ }
2169
+
2170
+ /*
2171
+ options = {
2172
+
2173
+ groupId: "string", //mandatory
2174
+ body: {
2175
+ users: [
2176
+ {
2177
+ id: "string", // User’s external id - mandatory
2178
+ dls_user_id: "string", // User’s dls id - mandatory
2179
+ email: "string", //mandatory
2180
+ first_name: "string", //mandatory
2181
+ last_name: "string", //mandatory
2182
+ name: "string", //mandatory
2183
+ role: "string" //mandatory
2184
+ }
2185
+ ]
2186
+ }
2187
+ }
2188
+ */
2189
+ function createMultiUserGroupMembership(options) {
2190
+ var self = this;
2191
+ // Initializing promise
2192
+ var dfd = q.defer(), params = {};
2193
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2194
+ if(err) { dfd.reject(err); }
2195
+ // Validations
2196
+
2197
+ else {
2198
+ if(options && options.groupId && options.body && options.body.users && (options.body.users.length > 0)) {
2199
+ // Passed all validations, Contruct API url
2200
+ var url = self.config.DEFAULT_HOSTS.AUTH +
2201
+ self.config.AUTH_API_URLS.userGroupMembership;
2202
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, groupId: options.groupId });
2203
+
2204
+ // Setup request with URL and Params
2205
+ params = options.body;
2206
+
2207
+ var requestAPI = request.post(url)
2208
+ .set('Content-Type', 'application/json')
2209
+ .set('Accept', 'application/json')
2210
+ .send(params);
2211
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2212
+ //Setup token in Authorization header
2213
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2214
+
2215
+ requestAPI.end(function(error, response) {
2216
+ if(error) {
2217
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2218
+ dfd.reject(error);
2219
+ }
2220
+ else { dfd.resolve(response); }
2221
+ });
2222
+ } else {
2223
+ err = {};
2224
+ err.message = err.description = 'Mandatory param - groupId or body or body.users(min. 1 user) ' +
2225
+ 'not found in request options.'
2226
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2227
+ dfd.reject(err);
2228
+ }
2229
+ }
2230
+ return dfd.promise;
2231
+ }
2232
+
2233
+ /*
2234
+ options = {
2235
+ "groupId": "string", //mandatory
2236
+ "body": { //mandatory
2237
+ users: [ //mandatory
2238
+ {
2239
+ id: "string" // User’s external id - mandatory
2240
+ }
2241
+ ]
2242
+ }
2243
+ */
2244
+ function deleteMultiUserGroupMembership(options) {
2245
+ var self = this;
2246
+ // Initializing promise
2247
+ var dfd = q.defer(), params = {};
2248
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2249
+ if(err) { dfd.reject(err); }
2250
+ // Validations
2251
+ else {
2252
+ if(options && options.groupId && options.body && options.body.users && (options.body.users.length > 0)) {
2253
+ // Passed all validations, Contruct API url
2254
+ var url = self.config.DEFAULT_HOSTS.AUTH +
2255
+ self.config.AUTH_API_URLS.userGroupMembership;
2256
+ url = helpers.api.constructAPIUrl(url, {
2257
+ orgId: self.orgId,
2258
+ groupId: options.groupId
2259
+ });
2260
+
2261
+ // Setup request with URL and Params
2262
+ params = options.body;
2263
+ var requestAPI = request.delete(url)
2264
+ .set('Content-Type', 'application/json')
2265
+ .set('Accept', 'application/json')
2266
+ .send(params);
2267
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2268
+
2269
+ //Setup token in Authorization header
2270
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2271
+ requestAPI.end(function(error, response) {
2272
+ if(error) {
2273
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2274
+ dfd.reject(error);
2275
+ }
2276
+ else { dfd.resolve(response); }
2277
+ });
2278
+ } else {
2279
+ err = {};
2280
+ err.message = err.description = 'Mandatory param - groupId or body or body.users(min. 1 user) ' +
2281
+ 'not found in request options.'
2282
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2283
+ dfd.reject(err);
2284
+ }
2285
+ }
2286
+ return dfd.promise;
2287
+ }
2288
+
2289
+ /* options= {
2290
+ "groupId": "string", //mandatory
2291
+ };
2292
+ */
2293
+ function archiveGroup(options) {
2294
+ var self = this;
2295
+ // Initializing promise
2296
+ var dfd = q.defer();
2297
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2298
+ if(err) { dfd.reject(err); }
2299
+ else {
2300
+ if (options && options.groupId) {
2301
+ // Passed all validations, Contruct API url
2302
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.archiveAParticularGroup;
2303
+ url = helpers.api.constructAPIUrl(url, {
2304
+ orgId: self.orgId,
2305
+ groupId: options.groupId
2306
+ });
2307
+
2308
+ // Setup request with URL and Params
2309
+ var requestAPI = request.put(url)
2310
+ .set('Content-Type', 'application/json')
2311
+ .set('Accept', 'application/json')
2312
+ .send({});
2313
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2314
+
2315
+ //Setup token in Authorization header
2316
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2317
+
2318
+ requestAPI.end(function (error, response) {
2319
+ if (error) {
2320
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2321
+ dfd.reject(err);
2322
+ } else {
2323
+ dfd.resolve(response.body);
2324
+ }
2325
+ });
2326
+ }
2327
+ else {
2328
+ err = {};
2329
+ err.message = err.description = 'Mandatory param - groupId not found in request options.';
2330
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2331
+ dfd.reject(err);
2332
+ }
2333
+ }
2334
+ return dfd.promise;
2335
+ }
2336
+
2337
+ /* options= {
2338
+ "groupId": "string", //mandatory
2339
+ };
2340
+ */
2341
+ function unarchiveGroup(options) {
2342
+ var self = this;
2343
+ // Initializing promise
2344
+ var dfd = q.defer();
2345
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2346
+ if(err) { dfd.reject(err); }
2347
+ else {
2348
+ if (options && options.groupId) {
2349
+ // Passed all validations, Contruct API url
2350
+ var url = self.config.DEFAULT_HOSTS.AUTH + self.config.AUTH_API_URLS.unarchiveAParticularGroup;
2351
+ url = helpers.api.constructAPIUrl(url, {
2352
+ orgId: self.orgId,
2353
+ groupId: options.groupId
2354
+ });
2355
+
2356
+ // Setup request with URL and Params
2357
+ var requestAPI = request.put(url)
2358
+ .set('Content-Type', 'application/json')
2359
+ .set('Accept', 'application/json')
2360
+ .send({});
2361
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2362
+
2363
+ //Setup token in Authorization header
2364
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2365
+
2366
+ requestAPI.end(function (error, response) {
2367
+ if (error) {
2368
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2369
+ dfd.reject(err);
2370
+ } else {
2371
+ dfd.resolve(response.body);
2372
+ }
2373
+ });
2374
+ }
2375
+ else {
2376
+ err = {};
2377
+ err.message = err.description = 'Mandatory param - groupId not found in request options.';
2378
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2379
+ dfd.reject(err);
2380
+ }
2381
+ }
2382
+ return dfd.promise;
2383
+ }
2384
+
2385
+ /*
2386
+ options = {
2387
+ userId: "string", //mandatory
2388
+ path: "string", //mandatory
2389
+ cursor: "string", // optional
2390
+ }
2391
+ */
2392
+ function getMyAllMemberships(options) {
2393
+ var self = this;
2394
+ // Initializing promise
2395
+ var dfd = q.defer(), params = {};
2396
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2397
+ if(err) { dfd.reject(err); }
2398
+ // Validations
2399
+ else {
2400
+ if(options && options.userId && options.path) {
2401
+ // Passed all validations, Contruct API url
2402
+ var url = self.config.DEFAULT_HOSTS.AUTH +
2403
+ self.config.AUTH_API_URLS.getMyAllMemberships;
2404
+ url = helpers.api.constructAPIUrl(url, {
2405
+ orgId: self.orgId,
2406
+ userId: options.userId
2407
+ });
2408
+
2409
+ // Setup request with URL and Params
2410
+ params.path = options.path;
2411
+ if(options.cursor){ params.cursor = options.cursor };
2412
+
2413
+ var requestAPI = request.get(url)
2414
+ .set('Content-Type', 'application/json')
2415
+ .set('Accept', 'application/json')
2416
+ .query(params);
2417
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2418
+
2419
+ //Setup token in Authorization header
2420
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2421
+
2422
+ requestAPI.end(function(error, response) {
2423
+ if(error) {
2424
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, error);
2425
+ dfd.reject(error);
2426
+ }
2427
+ else { dfd.resolve(response); }
2428
+ });
2429
+ } else {
2430
+ err = {};
2431
+ err.message = err.description = 'Mandatory param - userId or path not found in request options.';
2432
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2433
+ dfd.reject(err);
2434
+ }
2435
+ }
2436
+ return dfd.promise;
2437
+ }
2438
+
2439
+ /*
2440
+ options = {
2441
+ classId: "string", //mandatory
2442
+ body : {
2443
+ items : //mandatory, Min: 1, Max: 200
2444
+ [{
2445
+ "productcode": "string",
2446
+ "item-code": "string",
2447
+ "link-statementid": "string",
2448
+ "groupid": "string",
2449
+ “type”: “dls-internal”, //mandatory
2450
+ "data": { ... }
2451
+ }]
2452
+ }
2453
+ }
2454
+ */
2455
+ function addItemsToShowcaseOfAClass(options){
2456
+ var self = this;
2457
+ // Initializing promise
2458
+ var dfd = q.defer();
2459
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2460
+ if(err) { dfd.reject(err); }
2461
+ // Validations
2462
+ else {
2463
+ if(options && options.classId && options.body) {
2464
+ // Passed all validations, Contruct API url
2465
+ var url = self.config.DEFAULT_HOSTS.AUTH +
2466
+ self.config.AUTH_API_URLS.showcaseItems;
2467
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classId });
2468
+
2469
+ // Setup request with URL and Params
2470
+ var requestAPI = request.post(url);
2471
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2472
+ requestAPI.send(options.body);
2473
+
2474
+ // Setup token in Authorization header
2475
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2476
+
2477
+ // Call Add items to showcase API
2478
+ requestAPI.end(function(err, response) {
2479
+ if(err) {
2480
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
2481
+ dfd.reject(err);
2482
+ }
2483
+ else { dfd.resolve(response.body); }
2484
+ });
2485
+ } else {
2486
+ err = {};
2487
+ err.message = err.description = 'Mandatory param - classId or body not found in request options.';
2488
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2489
+ dfd.reject(err);
2490
+ }
2491
+ }
2492
+ return dfd.promise;
2493
+ }
2494
+
2495
+ /*
2496
+ options = {
2497
+ classId: "string", //mandatory
2498
+ body : {
2499
+ items : [ "id1", "id2", "id3", ... ] //mandatory
2500
+ }
2501
+ }
2502
+ */
2503
+ function deleteItemsFromShowcaseOfAClass(options){
2504
+ var self = this;
2505
+ // Initializing promise
2506
+ var dfd = q.defer();
2507
+ var err = helpers.validations.isAuthenticated(self.orgId, self.token);
2508
+ if(err) { dfd.reject(err); }
2509
+ // Validations
2510
+ else {
2511
+ if(options && options.classId && options.body) {
2512
+ // Passed all validations, Contruct API url
2513
+ var url = self.config.DEFAULT_HOSTS.AUTH +
2514
+ self.config.AUTH_API_URLS.showcaseItems;
2515
+ url = helpers.api.constructAPIUrl(url, { orgId: self.orgId, classId: options.classId });
2516
+
2517
+ // Setup request with URL and Params
2518
+ var requestAPI = request.delete(url);
2519
+ if(self.traceid) { requestAPI.set('X-Amzn-Trace-Id', self.traceid); }
2520
+ requestAPI.send(options.body);
2521
+
2522
+ // Setup token in Authorization header
2523
+ requestAPI = helpers.api.setupAPIToken(requestAPI, self.token);
2524
+
2525
+ // Call delete items from showcase API
2526
+ requestAPI.end(function(err, response) {
2527
+ if(err) {
2528
+ err = new DLSError(helpers.errors.ERROR_TYPES.API_ERROR, err);
2529
+ dfd.reject(err);
2530
+ }
2531
+ else { dfd.resolve(response.body); }
2532
+ });
2533
+ } else {
2534
+ err = {};
2535
+ err.message = err.description = 'Mandatory param - classId or body not found in request options.';
2536
+ err = new DLSError(helpers.errors.ERROR_TYPES.SDK_ERROR, err);
2537
+ dfd.reject(err);
2538
+ }
2539
+ }
2540
+ return dfd.promise;
2541
+ }