comprodls-sdk 2.12.0 → 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 -11471
  5. package/dist/comprodls-sdk.min.js +14 -14
  6. package/grunt/publish.js +148 -148
  7. package/lib/comprodls.js +146 -146
  8. package/lib/config/index.js +337 -337
  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 -2541
  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 -279
  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,2541 +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) {
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
- }
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
+ }