@webex/internal-plugin-calendar 3.11.0-next.3 → 3.11.0-next.5
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.
- package/dist/calendar.js +35 -75
- package/dist/calendar.js.map +1 -1
- package/package.json +5 -5
- package/src/calendar.js +0 -41
- package/test/unit/spec/calendar.js +0 -48
package/dist/calendar.js
CHANGED
|
@@ -7,7 +7,6 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
10
|
-
var _lodash = require("lodash");
|
|
11
10
|
var _common = require("@webex/common");
|
|
12
11
|
var _webexCore = require("@webex/webex-core");
|
|
13
12
|
var _collection = _interopRequireDefault(require("./collection"));
|
|
@@ -71,41 +70,6 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
71
70
|
* Cache all rpc event request locally
|
|
72
71
|
* */
|
|
73
72
|
rpcEventRequests: [],
|
|
74
|
-
/**
|
|
75
|
-
* Cache KMS encryptionKeyUrl
|
|
76
|
-
* */
|
|
77
|
-
encryptionKeyUrl: null,
|
|
78
|
-
/**
|
|
79
|
-
* Pre-fetch a KMS encryption key url to improve performance.
|
|
80
|
-
* Waits for the user to be authorized and skips if an unverified guest.
|
|
81
|
-
* @private
|
|
82
|
-
* @returns {void}
|
|
83
|
-
*/
|
|
84
|
-
prefetchEncryptionKey: function prefetchEncryptionKey() {
|
|
85
|
-
var _this = this;
|
|
86
|
-
if (!this.webex.canAuthorize) {
|
|
87
|
-
this.listenToOnce(this.webex, 'change:canAuthorize', function () {
|
|
88
|
-
_this.prefetchEncryptionKey();
|
|
89
|
-
});
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
if (this.webex.credentials.isUnverifiedGuest) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
this.webex.internal.encryption.kms.createUnboundKeys({
|
|
96
|
-
count: 1
|
|
97
|
-
}).then(function (keys) {
|
|
98
|
-
var key = (0, _lodash.isArray)(keys) ? keys[0] : keys;
|
|
99
|
-
_this.encryptionKeyUrl = key ? key.uri : null;
|
|
100
|
-
_this.logger.info('calendar->bind a KMS encryption key url');
|
|
101
|
-
_this.webex.internal.encryption.getKey(_this.encryptionKeyUrl, {
|
|
102
|
-
onBehalfOf: null
|
|
103
|
-
}).then(function (retrievedKey) {
|
|
104
|
-
_this.encryptionKeyUrl = retrievedKey ? retrievedKey.uri : null;
|
|
105
|
-
_this.logger.info('calendar->retrieve the KMS encryption key url and cache it');
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
},
|
|
109
73
|
/**
|
|
110
74
|
* WebexPlugin initialize method. This triggers once Webex has completed its
|
|
111
75
|
* initialization workflow.
|
|
@@ -116,12 +80,8 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
116
80
|
* @returns {void}
|
|
117
81
|
*/
|
|
118
82
|
initialize: function initialize() {
|
|
119
|
-
var _this2 = this;
|
|
120
83
|
// Used to perform actions after webex is fully qualified and ready for
|
|
121
84
|
// operation.
|
|
122
|
-
this.listenToOnce(this.webex, 'ready', function () {
|
|
123
|
-
_this2.prefetchEncryptionKey();
|
|
124
|
-
});
|
|
125
85
|
},
|
|
126
86
|
/**
|
|
127
87
|
* Explicitly sets up the calendar plugin by registering
|
|
@@ -131,7 +91,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
131
91
|
* @memberof Calendar
|
|
132
92
|
*/
|
|
133
93
|
register: function register() {
|
|
134
|
-
var
|
|
94
|
+
var _this = this;
|
|
135
95
|
if (!this.webex.canAuthorize) {
|
|
136
96
|
this.logger.error('calendar->register#ERROR, Unable to register, SDK cannot authorize');
|
|
137
97
|
return _promise.default.reject(new Error('SDK cannot authorize'));
|
|
@@ -141,13 +101,13 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
141
101
|
return _promise.default.resolve();
|
|
142
102
|
}
|
|
143
103
|
return this.webex.internal.device.register().then(function () {
|
|
144
|
-
return
|
|
104
|
+
return _this.webex.internal.mercury.connect();
|
|
145
105
|
}).then(function () {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
106
|
+
_this.listenForEvents();
|
|
107
|
+
_this.trigger(_constants.CALENDAR_REGISTERED);
|
|
108
|
+
_this.registered = true;
|
|
149
109
|
}).catch(function (error) {
|
|
150
|
-
|
|
110
|
+
_this.logger.error("calendar->register#ERROR, Unable to register, ".concat(error.message));
|
|
151
111
|
return _promise.default.reject(error);
|
|
152
112
|
});
|
|
153
113
|
},
|
|
@@ -160,17 +120,17 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
160
120
|
* @memberof Calendar
|
|
161
121
|
*/
|
|
162
122
|
unregister: function unregister() {
|
|
163
|
-
var
|
|
123
|
+
var _this2 = this;
|
|
164
124
|
if (!this.registered) {
|
|
165
125
|
this.logger.info('calendar->unregister#INFO, Calendar plugin already unregistered');
|
|
166
126
|
return _promise.default.resolve();
|
|
167
127
|
}
|
|
168
128
|
this.stopListeningForEvents();
|
|
169
129
|
return this.webex.internal.mercury.disconnect().then(function () {
|
|
170
|
-
return
|
|
130
|
+
return _this2.webex.internal.device.unregister();
|
|
171
131
|
}).then(function () {
|
|
172
|
-
|
|
173
|
-
|
|
132
|
+
_this2.trigger(_constants.CALENDAR_UNREGISTERED);
|
|
133
|
+
_this2.registered = false;
|
|
174
134
|
});
|
|
175
135
|
},
|
|
176
136
|
/**
|
|
@@ -179,25 +139,25 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
179
139
|
* @private
|
|
180
140
|
*/
|
|
181
141
|
listenForEvents: function listenForEvents() {
|
|
182
|
-
var
|
|
142
|
+
var _this3 = this;
|
|
183
143
|
// Calendar mercury events listener
|
|
184
144
|
this.webex.internal.mercury.on('event:calendar.meeting.create', function (envelope) {
|
|
185
|
-
|
|
145
|
+
_this3._handleCreate(envelope.data);
|
|
186
146
|
});
|
|
187
147
|
this.webex.internal.mercury.on('event:calendar.meeting.update', function (envelope) {
|
|
188
|
-
|
|
148
|
+
_this3._handleUpdate(envelope.data);
|
|
189
149
|
});
|
|
190
150
|
this.webex.internal.mercury.on('event:calendar.meeting.create.minimal', function (envelope) {
|
|
191
|
-
|
|
151
|
+
_this3._handleCreate(envelope.data);
|
|
192
152
|
});
|
|
193
153
|
this.webex.internal.mercury.on('event:calendar.meeting.update.minimal', function (envelope) {
|
|
194
|
-
|
|
154
|
+
_this3._handleUpdate(envelope.data);
|
|
195
155
|
});
|
|
196
156
|
this.webex.internal.mercury.on('event:calendar.meeting.delete', function (envelope) {
|
|
197
|
-
|
|
157
|
+
_this3._handleDelete(envelope.data);
|
|
198
158
|
});
|
|
199
159
|
this.webex.internal.mercury.on('event:calendar.free_busy', function (envelope) {
|
|
200
|
-
|
|
160
|
+
_this3._handleFreeBusy(envelope.data);
|
|
201
161
|
});
|
|
202
162
|
},
|
|
203
163
|
/**
|
|
@@ -250,20 +210,20 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
250
210
|
* @private
|
|
251
211
|
*/
|
|
252
212
|
_handleFreeBusy: function _handleFreeBusy(data) {
|
|
253
|
-
var
|
|
213
|
+
var _this4 = this;
|
|
254
214
|
_calendarDecrypt.default.decryptFreeBusyResponse(this, data).then(function () {
|
|
255
215
|
var response = {};
|
|
256
216
|
if (data && data.calendarFreeBusyScheduleResponse) {
|
|
257
217
|
response = data.calendarFreeBusyScheduleResponse;
|
|
258
218
|
}
|
|
259
|
-
if (response && response.requestId && response.requestId in
|
|
260
|
-
|
|
219
|
+
if (response && response.requestId && response.requestId in _this4.rpcEventRequests) {
|
|
220
|
+
_this4.logger.log("webex.internal.calendar - receive requests, requestId: ".concat(response.requestId));
|
|
261
221
|
delete response.encryptionKeyUrl;
|
|
262
|
-
var resolve =
|
|
222
|
+
var resolve = _this4.rpcEventRequests[response.requestId].resolve;
|
|
263
223
|
resolve(response);
|
|
264
|
-
delete
|
|
224
|
+
delete _this4.rpcEventRequests[response.requestId];
|
|
265
225
|
} else {
|
|
266
|
-
|
|
226
|
+
_this4.logger.log('webex.internal.calendar - receive other requests.');
|
|
267
227
|
}
|
|
268
228
|
});
|
|
269
229
|
},
|
|
@@ -359,7 +319,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
359
319
|
* @returns {Promise} Resolves with an array of meetings
|
|
360
320
|
*/
|
|
361
321
|
list: function list(options) {
|
|
362
|
-
var
|
|
322
|
+
var _this5 = this;
|
|
363
323
|
options = options || {};
|
|
364
324
|
return this.webex.request({
|
|
365
325
|
method: 'GET',
|
|
@@ -371,7 +331,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
371
331
|
var promises = [];
|
|
372
332
|
meetingObjects.forEach(function (meeting) {
|
|
373
333
|
if (!meeting.encryptedParticipants) {
|
|
374
|
-
promises.push(
|
|
334
|
+
promises.push(_this5.getParticipants(meeting.participantsUrl).then(function (notesResponse) {
|
|
375
335
|
meeting.encryptedParticipants = notesResponse.body.encryptedParticipants;
|
|
376
336
|
}));
|
|
377
337
|
}
|
|
@@ -388,9 +348,9 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
388
348
|
* @returns {Promise} Resolves with creating calendar event response
|
|
389
349
|
* */
|
|
390
350
|
createCalendarEvent: function createCalendarEvent(data, query) {
|
|
391
|
-
var
|
|
351
|
+
var _this6 = this;
|
|
392
352
|
return _calendarEncrypt.default.encryptCalendarEventRequest(this, data).then(function () {
|
|
393
|
-
return
|
|
353
|
+
return _this6.request({
|
|
394
354
|
method: 'POST',
|
|
395
355
|
service: 'calendar',
|
|
396
356
|
body: data,
|
|
@@ -407,9 +367,9 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
407
367
|
* @returns {Promise} Resolves with updating calendar event response
|
|
408
368
|
* */
|
|
409
369
|
updateCalendarEvent: function updateCalendarEvent(id, data, query) {
|
|
410
|
-
var
|
|
370
|
+
var _this7 = this;
|
|
411
371
|
return _calendarEncrypt.default.encryptCalendarEventRequest(this, data).then(function () {
|
|
412
|
-
return
|
|
372
|
+
return _this7.request({
|
|
413
373
|
method: 'PATCH',
|
|
414
374
|
service: 'calendar',
|
|
415
375
|
body: data,
|
|
@@ -454,14 +414,14 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
454
414
|
* @returns {Promise} Resolves with a decrypted scheduler data
|
|
455
415
|
* */
|
|
456
416
|
getSchedulerData: function getSchedulerData(query) {
|
|
457
|
-
var
|
|
417
|
+
var _this8 = this;
|
|
458
418
|
return this.request({
|
|
459
419
|
method: 'GET',
|
|
460
420
|
service: 'calendar',
|
|
461
421
|
resource: 'schedulerData',
|
|
462
422
|
qs: query || {}
|
|
463
423
|
}).then(function (response) {
|
|
464
|
-
return _calendarDecrypt.default.decryptSchedulerDataResponse(
|
|
424
|
+
return _calendarDecrypt.default.decryptSchedulerDataResponse(_this8, response.body).then(function () {
|
|
465
425
|
return response;
|
|
466
426
|
});
|
|
467
427
|
});
|
|
@@ -473,9 +433,9 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
473
433
|
* @returns {Promise} Resolves with a decrypted response
|
|
474
434
|
* */
|
|
475
435
|
getFreeBusy: function getFreeBusy(data, query) {
|
|
476
|
-
var
|
|
436
|
+
var _this9 = this;
|
|
477
437
|
return _calendarEncrypt.default.encryptFreeBusyRequest(this, data).then(function () {
|
|
478
|
-
return
|
|
438
|
+
return _this9.request({
|
|
479
439
|
method: 'POST',
|
|
480
440
|
service: 'calendar',
|
|
481
441
|
body: data,
|
|
@@ -484,7 +444,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
484
444
|
});
|
|
485
445
|
}).then(function () {
|
|
486
446
|
return new _promise.default(function (resolve, reject) {
|
|
487
|
-
|
|
447
|
+
_this9.rpcEventRequests[data.requestId] = {
|
|
488
448
|
resolve: resolve,
|
|
489
449
|
reject: reject
|
|
490
450
|
};
|
|
@@ -493,7 +453,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
493
453
|
throw error;
|
|
494
454
|
});
|
|
495
455
|
},
|
|
496
|
-
version: "3.11.0-next.
|
|
456
|
+
version: "3.11.0-next.5"
|
|
497
457
|
});
|
|
498
458
|
var _default = exports.default = Calendar;
|
|
499
459
|
//# sourceMappingURL=calendar.js.map
|
package/dist/calendar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","require","_common","_webexCore","_collection","_interopRequireDefault","_constants","_calendarEncrypt","_calendarDecrypt","Calendar","WebexPlugin","extend","namespace","registered","rpcEventRequests","encryptionKeyUrl","prefetchEncryptionKey","_this","webex","canAuthorize","listenToOnce","credentials","isUnverifiedGuest","internal","encryption","kms","createUnboundKeys","count","then","keys","key","isArray","uri","logger","info","getKey","onBehalfOf","retrievedKey","initialize","_this2","register","_this3","error","_promise","default","reject","Error","resolve","device","mercury","connect","listenForEvents","trigger","CALENDAR_REGISTERED","catch","concat","message","unregister","_this4","stopListeningForEvents","disconnect","CALENDAR_UNREGISTERED","_this5","on","envelope","_handleCreate","data","_handleUpdate","_handleDelete","_handleFreeBusy","off","id","CalendarCollection","set","calendarMeetingExternal","CALENDAR_UPDATED","get","CALENDAR_CREATE","item","remove","CALENDAR_DELETE","_this6","DecryptHelper","decryptFreeBusyResponse","response","calendarFreeBusyScheduleResponse","requestId","log","syncCalendar","options","arguments","length","undefined","fromDate","config","toDate","list","res","setAll","getAll","getByType","value","includes","getBy","processMeetingEvent","event","transform","getParticipants","participantsUrl","request","method","getNotesByUrl","notesUrl","getNotes","service","resource","base64","encode","_this7","qs","meetingObjects","body","items","promises","forEach","meeting","encryptedParticipants","push","notesResponse","all","createCalendarEvent","query","_this8","EncryptHelper","encryptCalendarEventRequest","updateCalendarEvent","_this9","deleteCalendarEvent","getSchedulerData","_this0","decryptSchedulerDataResponse","getFreeBusy","_this1","encryptFreeBusyRequest","version","_default","exports"],"sources":["calendar.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/**\n * Calendar Item Create Event\n * Emitted when a calendar item has been added\n * @event calendar:meeting:create\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Item Update Event\n * Emitted when a calendar item has been updated\n * @event calendar:meeting:update\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Item Update Event\n * Emitted when a calendar item has been deleted\n * @event calendar:meeting:delete\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Registered Event\n * Emitted when the calendar instance has been registered and listening\n * @event calendar:registered\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Registered Event\n * Emitted when the calendar instance has been registered and listening\n * @event calendar:unregistered\n * @instance\n * @memberof Calendar\n */\nimport {isArray} from 'lodash';\nimport {base64} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport CalendarCollection from './collection';\nimport {\n CALENDAR_REGISTERED,\n CALENDAR_UNREGISTERED,\n CALENDAR_DELETE,\n CALENDAR_CREATE,\n CALENDAR_UPDATED,\n} from './constants';\n\nimport EncryptHelper from './calendar.encrypt.helper';\nimport DecryptHelper from './calendar.decrypt.helper';\n\nconst Calendar = WebexPlugin.extend({\n namespace: 'Calendar',\n\n /**\n * registered value indicating events registration is successful\n * @instance\n * @type {Boolean}\n * @memberof Calendar\n */\n registered: false,\n\n /**\n * Cache all rpc event request locally\n * */\n rpcEventRequests: [],\n\n /**\n * Cache KMS encryptionKeyUrl\n * */\n encryptionKeyUrl: null,\n\n /**\n * Pre-fetch a KMS encryption key url to improve performance.\n * Waits for the user to be authorized and skips if an unverified guest.\n * @private\n * @returns {void}\n */\n prefetchEncryptionKey() {\n if (!this.webex.canAuthorize) {\n this.listenToOnce(this.webex, 'change:canAuthorize', () => {\n this.prefetchEncryptionKey();\n });\n\n return;\n }\n\n if (this.webex.credentials.isUnverifiedGuest) {\n return;\n }\n\n this.webex.internal.encryption.kms.createUnboundKeys({count: 1}).then((keys) => {\n const key = isArray(keys) ? keys[0] : keys;\n this.encryptionKeyUrl = key ? key.uri : null;\n this.logger.info('calendar->bind a KMS encryption key url');\n this.webex.internal.encryption\n .getKey(this.encryptionKeyUrl, {onBehalfOf: null})\n .then((retrievedKey) => {\n this.encryptionKeyUrl = retrievedKey ? retrievedKey.uri : null;\n this.logger.info('calendar->retrieve the KMS encryption key url and cache it');\n });\n });\n },\n\n /**\n * WebexPlugin initialize method. This triggers once Webex has completed its\n * initialization workflow.\n *\n * If the plugin is meant to perform startup actions, place them in this\n * `initialize()` method instead of the `constructor()` method.\n * @private\n * @returns {void}\n */\n initialize() {\n // Used to perform actions after webex is fully qualified and ready for\n // operation.\n this.listenToOnce(this.webex, 'ready', () => {\n this.prefetchEncryptionKey();\n });\n },\n\n /**\n * Explicitly sets up the calendar plugin by registering\n * the device, connecting to mercury, and listening for calendar events.\n * @returns {Promise}\n * @public\n * @memberof Calendar\n */\n register() {\n if (!this.webex.canAuthorize) {\n this.logger.error('calendar->register#ERROR, Unable to register, SDK cannot authorize');\n\n return Promise.reject(new Error('SDK cannot authorize'));\n }\n\n if (this.registered) {\n this.logger.info('calendar->register#INFO, Calendar plugin already registered');\n\n return Promise.resolve();\n }\n\n return this.webex.internal.device\n .register()\n .then(() => this.webex.internal.mercury.connect())\n .then(() => {\n this.listenForEvents();\n this.trigger(CALENDAR_REGISTERED);\n this.registered = true;\n })\n .catch((error) => {\n this.logger.error(`calendar->register#ERROR, Unable to register, ${error.message}`);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Explicitly tears down the calendar plugin by deregistering\n * the device, disconnecting from mercury, and stops listening to calendar events\n *\n * @returns {Promise}\n * @public\n * @memberof Calendar\n */\n unregister() {\n if (!this.registered) {\n this.logger.info('calendar->unregister#INFO, Calendar plugin already unregistered');\n\n return Promise.resolve();\n }\n\n this.stopListeningForEvents();\n\n return this.webex.internal.mercury\n .disconnect()\n .then(() => this.webex.internal.device.unregister())\n .then(() => {\n this.trigger(CALENDAR_UNREGISTERED);\n this.registered = false;\n });\n },\n\n /**\n * registers for calendar events through mercury\n * @returns {undefined}\n * @private\n */\n listenForEvents() {\n // Calendar mercury events listener\n this.webex.internal.mercury.on('event:calendar.meeting.create', (envelope) => {\n this._handleCreate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.update', (envelope) => {\n this._handleUpdate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.create.minimal', (envelope) => {\n this._handleCreate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.update.minimal', (envelope) => {\n this._handleUpdate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.delete', (envelope) => {\n this._handleDelete(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.free_busy', (envelope) => {\n this._handleFreeBusy(envelope.data);\n });\n },\n\n /**\n * unregisteres all the calendar events from mercury\n * @returns {undefined}\n * @private\n */\n stopListeningForEvents() {\n this.webex.internal.mercury.off('event:calendar.meeting.create');\n this.webex.internal.mercury.off('event:calendar.meeting.create.minimal');\n this.webex.internal.mercury.off('event:calendar.meeting.update');\n this.webex.internal.mercury.off('event:calendar.meeting.update.minimal');\n this.webex.internal.mercury.off('event:calendar.meeting.delete');\n this.webex.internal.mercury.off('event:calendar.free_busy');\n },\n\n /**\n * handles update events, triggers after collection updates\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleUpdate(data) {\n const id = CalendarCollection.set(data.calendarMeetingExternal);\n\n this.trigger(CALENDAR_UPDATED, CalendarCollection.get(id));\n },\n\n /**\n * handles create events, triggers after collection updates\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleCreate(data) {\n const id = CalendarCollection.set(data.calendarMeetingExternal);\n\n this.trigger(CALENDAR_CREATE, CalendarCollection.get(id));\n },\n\n /**\n * handles delete events, triggers after collection updates\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleDelete(data) {\n const item = CalendarCollection.remove(data.calendarMeetingExternal.id);\n\n this.trigger(CALENDAR_DELETE, item);\n },\n\n /**\n * handles free_busy events\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleFreeBusy(data) {\n DecryptHelper.decryptFreeBusyResponse(this, data).then(() => {\n let response = {};\n if (data && data.calendarFreeBusyScheduleResponse) {\n response = data.calendarFreeBusyScheduleResponse;\n }\n if (response && response.requestId && response.requestId in this.rpcEventRequests) {\n this.logger.log(\n `webex.internal.calendar - receive requests, requestId: ${response.requestId}`\n );\n delete response.encryptionKeyUrl;\n const {resolve} = this.rpcEventRequests[response.requestId];\n resolve(response);\n delete this.rpcEventRequests[response.requestId];\n } else {\n this.logger.log('webex.internal.calendar - receive other requests.');\n }\n });\n },\n\n /**\n * Retrieves a collection of calendars based on the request parameters\n * Defaults to 1 day before and 7 days ahead\n * @param {Object} options\n * @param {Date} options.fromDate the start of the time range\n * @param {Date} options.toDate the end of the time range\n * @returns {Promise} Resolves with an array of calendars\n */\n syncCalendar(options = {fromDate: this.config.fromDate, toDate: this.config.toDate}) {\n return this.list({fromDate: options.fromDate, toDate: options.toDate}).then((res) => {\n CalendarCollection.setAll(res);\n\n return CalendarCollection.getAll();\n });\n },\n /**\n * get the calendar item that has a matching value\n * @param {String} key meeting property\n * @param {Any} value the meeting property to match\n * @returns {Object}\n */\n getByType(key, value) {\n if (['spaceURI', 'spaceMeetURL', 'conversationId'].includes(key)) {\n return CalendarCollection.getBy(key, value);\n }\n throw new Error('key must be one of, spaceURI, spaceMeetURL, or conversationId');\n },\n\n /**\n * gets all the calendar items that have been populated\n * @returns {Object}\n */\n getAll() {\n return CalendarCollection.getAll();\n },\n\n /**\n * Decrypts an encrypted incoming calendar event\n * @param {Object} event\n * @returns {Promise} Resolves with a decrypted calendar event\n */\n processMeetingEvent(event) {\n return this.webex.transform('inbound', event).then(() => event);\n },\n\n /**\n * Retrieves an array of meeting participants for the meeting participantsUrl\n * @param {String} participantsUrl\n * @returns {Promise} Resolves with an object of meeting participants\n */\n getParticipants(participantsUrl) {\n return this.request({\n method: 'GET',\n uri: participantsUrl,\n });\n },\n\n /**\n * get meeting notes using notesUrl from meeting object.\n * @param {String} notesUrl\n * @returns {Promise} Resolves with an object of meeting notes\n */\n getNotesByUrl(notesUrl) {\n return this.request({\n method: 'GET',\n uri: notesUrl,\n });\n },\n\n /**\n * Retrieves a collection of meetings based on the request parameters\n * @param {String} id\n * @returns {Promise} Resolves with an object of meeting notes\n */\n getNotes(id) {\n return this.request({\n method: 'GET',\n service: 'calendar',\n resource: `calendarEvents/${base64.encode(id)}/notes`,\n });\n },\n\n /**\n * Retrieves a collection of meetings based on the request parameters\n * @param {Object} options\n * @param {Date} options.fromDate the start of the time range\n * @param {Date} options.toDate the end of the time range\n * @returns {Promise} Resolves with an array of meetings\n */\n list(options) {\n options = options || {};\n\n return this.webex\n .request({\n method: 'GET',\n service: 'calendar',\n resource: 'calendarEvents',\n qs: options,\n })\n .then((res) => {\n const meetingObjects = res.body.items;\n const promises = [];\n\n meetingObjects.forEach((meeting) => {\n if (!meeting.encryptedParticipants) {\n promises.push(\n this.getParticipants(meeting.participantsUrl).then((notesResponse) => {\n meeting.encryptedParticipants = notesResponse.body.encryptedParticipants;\n })\n );\n }\n });\n\n return Promise.all(promises).then(() => meetingObjects);\n });\n },\n\n /**\n * Create calendar event\n * @param {object} [data] meeting payload data\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with creating calendar event response\n * */\n createCalendarEvent(data, query) {\n return EncryptHelper.encryptCalendarEventRequest(this, data).then(() =>\n this.request({\n method: 'POST',\n service: 'calendar',\n body: data,\n resource: 'calendarEvents/sync',\n qs: query || {},\n })\n );\n },\n\n /**\n * Update calendar event\n * @param {string} [id] calendar event id\n * @param {object} [data] meeting payload data\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with updating calendar event response\n * */\n updateCalendarEvent(id, data, query) {\n return EncryptHelper.encryptCalendarEventRequest(this, data).then(() =>\n this.request({\n method: 'PATCH',\n service: 'calendar',\n body: data,\n resource: `calendarEvents/${base64.encode(id)}/sync`,\n qs: query || {},\n })\n );\n },\n\n /**\n * Delete calendar event\n * @param {string} [id] calendar event id\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with deleting calendar event response\n * */\n deleteCalendarEvent(id, query) {\n return this.request({\n method: 'DELETE',\n service: 'calendar',\n resource: `calendarEvents/${base64.encode(id)}/sync`,\n qs: query || {},\n });\n },\n\n /**\n * @typedef QuerySchedulerDataOptions\n * @param {string} [siteName] it is site full url, must have. Example: ccctest.dmz.webex.com\n * @param {string} [id] it is seriesOrOccurrenceId. If present, the series/occurrence meeting ID to fetch data for.\n * Example: 040000008200E00074C5B7101A82E008000000004A99F11A0841D9010000000000000000100000009EE499D4A71C1A46B51494C70EC7BFE5\n * @param {string} [clientMeetingId] If present, the client meeting UUID to fetch data for.\n * Example: 7f318aa9-887c-6e94-802a-8dc8e6eb1a0a\n * @param {string} [scheduleTemplateId] it template id.\n * @param {string} [sessionTypeId] it session type id.\n * @param {string} [organizerCIUserId] required in schedule-on-behalf case. It is the organizer's CI UUID.\n * @param {boolean} [usmPreference]\n * @param {string} [webexMeetingId] webex side meeting UUID\n * @param {string} [eventId] event ID.\n * @param {string} [icalUid] icalendar UUID.\n * @param {string} [thirdPartyType] third part type, such as: Microsoft\n */\n /**\n * Get scheduler data from calendar service\n * @param {QuerySchedulerDataOptions} [query] the command parameters for fetching scheduler data.\n * @returns {Promise} Resolves with a decrypted scheduler data\n * */\n getSchedulerData(query) {\n return this.request({\n method: 'GET',\n service: 'calendar',\n resource: 'schedulerData',\n qs: query || {},\n }).then((response) => {\n return DecryptHelper.decryptSchedulerDataResponse(this, response.body).then(() => response);\n });\n },\n\n /**\n * Get free busy status from calendar service\n * @param {Object} [data] the command parameters for fetching free busy status.\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with a decrypted response\n * */\n getFreeBusy(data, query) {\n return EncryptHelper.encryptFreeBusyRequest(this, data)\n .then(() => {\n return this.request({\n method: 'POST',\n service: 'calendar',\n body: data,\n resource: 'freebusy',\n qs: query || {},\n });\n })\n .then(() => {\n return new Promise((resolve, reject) => {\n this.rpcEventRequests[data.requestId] = {resolve, reject};\n });\n })\n .catch((error) => {\n throw error;\n });\n },\n});\n\nexport default Calendar;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_common","require","_webexCore","_collection","_interopRequireDefault","_constants","_calendarEncrypt","_calendarDecrypt","Calendar","WebexPlugin","extend","namespace","registered","rpcEventRequests","initialize","register","_this","webex","canAuthorize","logger","error","_promise","default","reject","Error","info","resolve","internal","device","then","mercury","connect","listenForEvents","trigger","CALENDAR_REGISTERED","catch","concat","message","unregister","_this2","stopListeningForEvents","disconnect","CALENDAR_UNREGISTERED","_this3","on","envelope","_handleCreate","data","_handleUpdate","_handleDelete","_handleFreeBusy","off","id","CalendarCollection","set","calendarMeetingExternal","CALENDAR_UPDATED","get","CALENDAR_CREATE","item","remove","CALENDAR_DELETE","_this4","DecryptHelper","decryptFreeBusyResponse","response","calendarFreeBusyScheduleResponse","requestId","log","encryptionKeyUrl","syncCalendar","options","arguments","length","undefined","fromDate","config","toDate","list","res","setAll","getAll","getByType","key","value","includes","getBy","processMeetingEvent","event","transform","getParticipants","participantsUrl","request","method","uri","getNotesByUrl","notesUrl","getNotes","service","resource","base64","encode","_this5","qs","meetingObjects","body","items","promises","forEach","meeting","encryptedParticipants","push","notesResponse","all","createCalendarEvent","query","_this6","EncryptHelper","encryptCalendarEventRequest","updateCalendarEvent","_this7","deleteCalendarEvent","getSchedulerData","_this8","decryptSchedulerDataResponse","getFreeBusy","_this9","encryptFreeBusyRequest","version","_default","exports"],"sources":["calendar.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/**\n * Calendar Item Create Event\n * Emitted when a calendar item has been added\n * @event calendar:meeting:create\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Item Update Event\n * Emitted when a calendar item has been updated\n * @event calendar:meeting:update\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Item Update Event\n * Emitted when a calendar item has been deleted\n * @event calendar:meeting:delete\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Registered Event\n * Emitted when the calendar instance has been registered and listening\n * @event calendar:registered\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Registered Event\n * Emitted when the calendar instance has been registered and listening\n * @event calendar:unregistered\n * @instance\n * @memberof Calendar\n */\nimport {base64} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport CalendarCollection from './collection';\nimport {\n CALENDAR_REGISTERED,\n CALENDAR_UNREGISTERED,\n CALENDAR_DELETE,\n CALENDAR_CREATE,\n CALENDAR_UPDATED,\n} from './constants';\n\nimport EncryptHelper from './calendar.encrypt.helper';\nimport DecryptHelper from './calendar.decrypt.helper';\n\nconst Calendar = WebexPlugin.extend({\n namespace: 'Calendar',\n\n /**\n * registered value indicating events registration is successful\n * @instance\n * @type {Boolean}\n * @memberof Calendar\n */\n registered: false,\n\n /**\n * Cache all rpc event request locally\n * */\n rpcEventRequests: [],\n\n /**\n * WebexPlugin initialize method. This triggers once Webex has completed its\n * initialization workflow.\n *\n * If the plugin is meant to perform startup actions, place them in this\n * `initialize()` method instead of the `constructor()` method.\n * @private\n * @returns {void}\n */\n initialize() {\n // Used to perform actions after webex is fully qualified and ready for\n // operation.\n },\n\n /**\n * Explicitly sets up the calendar plugin by registering\n * the device, connecting to mercury, and listening for calendar events.\n * @returns {Promise}\n * @public\n * @memberof Calendar\n */\n register() {\n if (!this.webex.canAuthorize) {\n this.logger.error('calendar->register#ERROR, Unable to register, SDK cannot authorize');\n\n return Promise.reject(new Error('SDK cannot authorize'));\n }\n\n if (this.registered) {\n this.logger.info('calendar->register#INFO, Calendar plugin already registered');\n\n return Promise.resolve();\n }\n\n return this.webex.internal.device\n .register()\n .then(() => this.webex.internal.mercury.connect())\n .then(() => {\n this.listenForEvents();\n this.trigger(CALENDAR_REGISTERED);\n this.registered = true;\n })\n .catch((error) => {\n this.logger.error(`calendar->register#ERROR, Unable to register, ${error.message}`);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Explicitly tears down the calendar plugin by deregistering\n * the device, disconnecting from mercury, and stops listening to calendar events\n *\n * @returns {Promise}\n * @public\n * @memberof Calendar\n */\n unregister() {\n if (!this.registered) {\n this.logger.info('calendar->unregister#INFO, Calendar plugin already unregistered');\n\n return Promise.resolve();\n }\n\n this.stopListeningForEvents();\n\n return this.webex.internal.mercury\n .disconnect()\n .then(() => this.webex.internal.device.unregister())\n .then(() => {\n this.trigger(CALENDAR_UNREGISTERED);\n this.registered = false;\n });\n },\n\n /**\n * registers for calendar events through mercury\n * @returns {undefined}\n * @private\n */\n listenForEvents() {\n // Calendar mercury events listener\n this.webex.internal.mercury.on('event:calendar.meeting.create', (envelope) => {\n this._handleCreate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.update', (envelope) => {\n this._handleUpdate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.create.minimal', (envelope) => {\n this._handleCreate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.update.minimal', (envelope) => {\n this._handleUpdate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.delete', (envelope) => {\n this._handleDelete(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.free_busy', (envelope) => {\n this._handleFreeBusy(envelope.data);\n });\n },\n\n /**\n * unregisteres all the calendar events from mercury\n * @returns {undefined}\n * @private\n */\n stopListeningForEvents() {\n this.webex.internal.mercury.off('event:calendar.meeting.create');\n this.webex.internal.mercury.off('event:calendar.meeting.create.minimal');\n this.webex.internal.mercury.off('event:calendar.meeting.update');\n this.webex.internal.mercury.off('event:calendar.meeting.update.minimal');\n this.webex.internal.mercury.off('event:calendar.meeting.delete');\n this.webex.internal.mercury.off('event:calendar.free_busy');\n },\n\n /**\n * handles update events, triggers after collection updates\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleUpdate(data) {\n const id = CalendarCollection.set(data.calendarMeetingExternal);\n\n this.trigger(CALENDAR_UPDATED, CalendarCollection.get(id));\n },\n\n /**\n * handles create events, triggers after collection updates\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleCreate(data) {\n const id = CalendarCollection.set(data.calendarMeetingExternal);\n\n this.trigger(CALENDAR_CREATE, CalendarCollection.get(id));\n },\n\n /**\n * handles delete events, triggers after collection updates\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleDelete(data) {\n const item = CalendarCollection.remove(data.calendarMeetingExternal.id);\n\n this.trigger(CALENDAR_DELETE, item);\n },\n\n /**\n * handles free_busy events\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleFreeBusy(data) {\n DecryptHelper.decryptFreeBusyResponse(this, data).then(() => {\n let response = {};\n if (data && data.calendarFreeBusyScheduleResponse) {\n response = data.calendarFreeBusyScheduleResponse;\n }\n if (response && response.requestId && response.requestId in this.rpcEventRequests) {\n this.logger.log(\n `webex.internal.calendar - receive requests, requestId: ${response.requestId}`\n );\n delete response.encryptionKeyUrl;\n const {resolve} = this.rpcEventRequests[response.requestId];\n resolve(response);\n delete this.rpcEventRequests[response.requestId];\n } else {\n this.logger.log('webex.internal.calendar - receive other requests.');\n }\n });\n },\n\n /**\n * Retrieves a collection of calendars based on the request parameters\n * Defaults to 1 day before and 7 days ahead\n * @param {Object} options\n * @param {Date} options.fromDate the start of the time range\n * @param {Date} options.toDate the end of the time range\n * @returns {Promise} Resolves with an array of calendars\n */\n syncCalendar(options = {fromDate: this.config.fromDate, toDate: this.config.toDate}) {\n return this.list({fromDate: options.fromDate, toDate: options.toDate}).then((res) => {\n CalendarCollection.setAll(res);\n\n return CalendarCollection.getAll();\n });\n },\n /**\n * get the calendar item that has a matching value\n * @param {String} key meeting property\n * @param {Any} value the meeting property to match\n * @returns {Object}\n */\n getByType(key, value) {\n if (['spaceURI', 'spaceMeetURL', 'conversationId'].includes(key)) {\n return CalendarCollection.getBy(key, value);\n }\n throw new Error('key must be one of, spaceURI, spaceMeetURL, or conversationId');\n },\n\n /**\n * gets all the calendar items that have been populated\n * @returns {Object}\n */\n getAll() {\n return CalendarCollection.getAll();\n },\n\n /**\n * Decrypts an encrypted incoming calendar event\n * @param {Object} event\n * @returns {Promise} Resolves with a decrypted calendar event\n */\n processMeetingEvent(event) {\n return this.webex.transform('inbound', event).then(() => event);\n },\n\n /**\n * Retrieves an array of meeting participants for the meeting participantsUrl\n * @param {String} participantsUrl\n * @returns {Promise} Resolves with an object of meeting participants\n */\n getParticipants(participantsUrl) {\n return this.request({\n method: 'GET',\n uri: participantsUrl,\n });\n },\n\n /**\n * get meeting notes using notesUrl from meeting object.\n * @param {String} notesUrl\n * @returns {Promise} Resolves with an object of meeting notes\n */\n getNotesByUrl(notesUrl) {\n return this.request({\n method: 'GET',\n uri: notesUrl,\n });\n },\n\n /**\n * Retrieves a collection of meetings based on the request parameters\n * @param {String} id\n * @returns {Promise} Resolves with an object of meeting notes\n */\n getNotes(id) {\n return this.request({\n method: 'GET',\n service: 'calendar',\n resource: `calendarEvents/${base64.encode(id)}/notes`,\n });\n },\n\n /**\n * Retrieves a collection of meetings based on the request parameters\n * @param {Object} options\n * @param {Date} options.fromDate the start of the time range\n * @param {Date} options.toDate the end of the time range\n * @returns {Promise} Resolves with an array of meetings\n */\n list(options) {\n options = options || {};\n\n return this.webex\n .request({\n method: 'GET',\n service: 'calendar',\n resource: 'calendarEvents',\n qs: options,\n })\n .then((res) => {\n const meetingObjects = res.body.items;\n const promises = [];\n\n meetingObjects.forEach((meeting) => {\n if (!meeting.encryptedParticipants) {\n promises.push(\n this.getParticipants(meeting.participantsUrl).then((notesResponse) => {\n meeting.encryptedParticipants = notesResponse.body.encryptedParticipants;\n })\n );\n }\n });\n\n return Promise.all(promises).then(() => meetingObjects);\n });\n },\n\n /**\n * Create calendar event\n * @param {object} [data] meeting payload data\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with creating calendar event response\n * */\n createCalendarEvent(data, query) {\n return EncryptHelper.encryptCalendarEventRequest(this, data).then(() =>\n this.request({\n method: 'POST',\n service: 'calendar',\n body: data,\n resource: 'calendarEvents/sync',\n qs: query || {},\n })\n );\n },\n\n /**\n * Update calendar event\n * @param {string} [id] calendar event id\n * @param {object} [data] meeting payload data\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with updating calendar event response\n * */\n updateCalendarEvent(id, data, query) {\n return EncryptHelper.encryptCalendarEventRequest(this, data).then(() =>\n this.request({\n method: 'PATCH',\n service: 'calendar',\n body: data,\n resource: `calendarEvents/${base64.encode(id)}/sync`,\n qs: query || {},\n })\n );\n },\n\n /**\n * Delete calendar event\n * @param {string} [id] calendar event id\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with deleting calendar event response\n * */\n deleteCalendarEvent(id, query) {\n return this.request({\n method: 'DELETE',\n service: 'calendar',\n resource: `calendarEvents/${base64.encode(id)}/sync`,\n qs: query || {},\n });\n },\n\n /**\n * @typedef QuerySchedulerDataOptions\n * @param {string} [siteName] it is site full url, must have. Example: ccctest.dmz.webex.com\n * @param {string} [id] it is seriesOrOccurrenceId. If present, the series/occurrence meeting ID to fetch data for.\n * Example: 040000008200E00074C5B7101A82E008000000004A99F11A0841D9010000000000000000100000009EE499D4A71C1A46B51494C70EC7BFE5\n * @param {string} [clientMeetingId] If present, the client meeting UUID to fetch data for.\n * Example: 7f318aa9-887c-6e94-802a-8dc8e6eb1a0a\n * @param {string} [scheduleTemplateId] it template id.\n * @param {string} [sessionTypeId] it session type id.\n * @param {string} [organizerCIUserId] required in schedule-on-behalf case. It is the organizer's CI UUID.\n * @param {boolean} [usmPreference]\n * @param {string} [webexMeetingId] webex side meeting UUID\n * @param {string} [eventId] event ID.\n * @param {string} [icalUid] icalendar UUID.\n * @param {string} [thirdPartyType] third part type, such as: Microsoft\n */\n /**\n * Get scheduler data from calendar service\n * @param {QuerySchedulerDataOptions} [query] the command parameters for fetching scheduler data.\n * @returns {Promise} Resolves with a decrypted scheduler data\n * */\n getSchedulerData(query) {\n return this.request({\n method: 'GET',\n service: 'calendar',\n resource: 'schedulerData',\n qs: query || {},\n }).then((response) => {\n return DecryptHelper.decryptSchedulerDataResponse(this, response.body).then(() => response);\n });\n },\n\n /**\n * Get free busy status from calendar service\n * @param {Object} [data] the command parameters for fetching free busy status.\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with a decrypted response\n * */\n getFreeBusy(data, query) {\n return EncryptHelper.encryptFreeBusyRequest(this, data)\n .then(() => {\n return this.request({\n method: 'POST',\n service: 'calendar',\n body: data,\n resource: 'freebusy',\n qs: query || {},\n });\n })\n .then(() => {\n return new Promise((resolve, reject) => {\n this.rpcEventRequests[data.requestId] = {resolve, reject};\n });\n })\n .catch((error) => {\n throw error;\n });\n },\n});\n\nexport default Calendar;\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
"sinon": "^9.2.4"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@webex/internal-plugin-conversation": "3.11.0-next.
|
|
39
|
-
"@webex/internal-plugin-device": "3.11.0-next.
|
|
40
|
-
"@webex/internal-plugin-encryption": "3.11.0-next.
|
|
41
|
-
"@webex/webex-core": "3.11.0-next.
|
|
38
|
+
"@webex/internal-plugin-conversation": "3.11.0-next.4",
|
|
39
|
+
"@webex/internal-plugin-device": "3.11.0-next.3",
|
|
40
|
+
"@webex/internal-plugin-encryption": "3.11.0-next.4",
|
|
41
|
+
"@webex/webex-core": "3.11.0-next.3",
|
|
42
42
|
"lodash": "^4.17.21",
|
|
43
43
|
"uuid": "^3.3.2"
|
|
44
44
|
},
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"test:style": "eslint ./src/**/*.*",
|
|
52
52
|
"test:unit": "webex-legacy-tools test --unit --runner jest"
|
|
53
53
|
},
|
|
54
|
-
"version": "3.11.0-next.
|
|
54
|
+
"version": "3.11.0-next.5"
|
|
55
55
|
}
|
package/src/calendar.js
CHANGED
|
@@ -41,7 +41,6 @@
|
|
|
41
41
|
* @instance
|
|
42
42
|
* @memberof Calendar
|
|
43
43
|
*/
|
|
44
|
-
import {isArray} from 'lodash';
|
|
45
44
|
import {base64} from '@webex/common';
|
|
46
45
|
import {WebexPlugin} from '@webex/webex-core';
|
|
47
46
|
|
|
@@ -73,43 +72,6 @@ const Calendar = WebexPlugin.extend({
|
|
|
73
72
|
* */
|
|
74
73
|
rpcEventRequests: [],
|
|
75
74
|
|
|
76
|
-
/**
|
|
77
|
-
* Cache KMS encryptionKeyUrl
|
|
78
|
-
* */
|
|
79
|
-
encryptionKeyUrl: null,
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Pre-fetch a KMS encryption key url to improve performance.
|
|
83
|
-
* Waits for the user to be authorized and skips if an unverified guest.
|
|
84
|
-
* @private
|
|
85
|
-
* @returns {void}
|
|
86
|
-
*/
|
|
87
|
-
prefetchEncryptionKey() {
|
|
88
|
-
if (!this.webex.canAuthorize) {
|
|
89
|
-
this.listenToOnce(this.webex, 'change:canAuthorize', () => {
|
|
90
|
-
this.prefetchEncryptionKey();
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (this.webex.credentials.isUnverifiedGuest) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
this.webex.internal.encryption.kms.createUnboundKeys({count: 1}).then((keys) => {
|
|
101
|
-
const key = isArray(keys) ? keys[0] : keys;
|
|
102
|
-
this.encryptionKeyUrl = key ? key.uri : null;
|
|
103
|
-
this.logger.info('calendar->bind a KMS encryption key url');
|
|
104
|
-
this.webex.internal.encryption
|
|
105
|
-
.getKey(this.encryptionKeyUrl, {onBehalfOf: null})
|
|
106
|
-
.then((retrievedKey) => {
|
|
107
|
-
this.encryptionKeyUrl = retrievedKey ? retrievedKey.uri : null;
|
|
108
|
-
this.logger.info('calendar->retrieve the KMS encryption key url and cache it');
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
},
|
|
112
|
-
|
|
113
75
|
/**
|
|
114
76
|
* WebexPlugin initialize method. This triggers once Webex has completed its
|
|
115
77
|
* initialization workflow.
|
|
@@ -122,9 +84,6 @@ const Calendar = WebexPlugin.extend({
|
|
|
122
84
|
initialize() {
|
|
123
85
|
// Used to perform actions after webex is fully qualified and ready for
|
|
124
86
|
// operation.
|
|
125
|
-
this.listenToOnce(this.webex, 'ready', () => {
|
|
126
|
-
this.prefetchEncryptionKey();
|
|
127
|
-
});
|
|
128
87
|
},
|
|
129
88
|
|
|
130
89
|
/**
|
|
@@ -59,54 +59,6 @@ describe('internal-plugin-calendar', () => {
|
|
|
59
59
|
};
|
|
60
60
|
});
|
|
61
61
|
|
|
62
|
-
describe('Private API', () => {
|
|
63
|
-
describe('#prefetchEncryptionKey', () => {
|
|
64
|
-
it('waits for the ability to authorize before doing anything', () => {
|
|
65
|
-
webex.canAuthorize = false;
|
|
66
|
-
|
|
67
|
-
webex.internal.calendar.prefetchEncryptionKey();
|
|
68
|
-
|
|
69
|
-
assert.notCalled(webex.internal.encryption.kms.createUnboundKeys);
|
|
70
|
-
|
|
71
|
-
// Behaviour when the user can authorize is tested elsewhere, so just ensure it gets called again
|
|
72
|
-
const prefetchEncryptionKeyStub = sinon.stub(webex.internal.calendar, 'prefetchEncryptionKey');
|
|
73
|
-
|
|
74
|
-
webex.trigger('change:canAuthorize');
|
|
75
|
-
|
|
76
|
-
assert.calledOnce(prefetchEncryptionKeyStub);
|
|
77
|
-
assert.calledWith(prefetchEncryptionKeyStub);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('does nothing when the current user is an unverified guest', () => {
|
|
81
|
-
webex.credentials.isUnverifiedGuest = true;
|
|
82
|
-
|
|
83
|
-
webex.internal.calendar.prefetchEncryptionKey();
|
|
84
|
-
|
|
85
|
-
assert.notCalled(webex.internal.encryption.kms.createUnboundKeys);
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
it('creates an encryption key when the current user can authorize', () => {
|
|
89
|
-
webex.internal.calendar.prefetchEncryptionKey();
|
|
90
|
-
|
|
91
|
-
assert.calledOnce(webex.internal.encryption.kms.createUnboundKeys);
|
|
92
|
-
assert.calledWith(webex.internal.encryption.kms.createUnboundKeys, {count: 1});
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
describe('#initialize', () => {
|
|
97
|
-
it('adds relevant handlers when webex is ready', () => {
|
|
98
|
-
const prefetchEncryptionKeyStub = sinon.stub(webex.internal.calendar, 'prefetchEncryptionKey');
|
|
99
|
-
|
|
100
|
-
assert.notCalled(prefetchEncryptionKeyStub);
|
|
101
|
-
|
|
102
|
-
// Initialize should have already run, so there should be an event handler already
|
|
103
|
-
webex.trigger('ready');
|
|
104
|
-
|
|
105
|
-
assert.calledOnce(prefetchEncryptionKeyStub);
|
|
106
|
-
assert.calledWith(prefetchEncryptionKeyStub);
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
62
|
|
|
111
63
|
describe('Public Api Contract', () => {
|
|
112
64
|
describe('#register()', () => {
|