@webex/internal-plugin-calendar 2.59.3-next.1 → 2.59.4-next.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.
- package/.eslintrc.js +6 -6
- package/README.md +42 -42
- package/babel.config.js +3 -3
- package/dist/calendar.decrypt.helper.js +10 -10
- package/dist/calendar.decrypt.helper.js.map +1 -1
- package/dist/calendar.encrypt.helper.js +17 -17
- package/dist/calendar.encrypt.helper.js.map +1 -1
- package/dist/calendar.js +177 -133
- package/dist/calendar.js.map +1 -1
- package/dist/collection.js +42 -42
- package/dist/collection.js.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/util.js +7 -7
- package/dist/util.js.map +1 -1
- package/jest.config.js +3 -3
- package/package.json +10 -10
- package/process +1 -1
- package/src/calendar.decrypt.helper.js +121 -121
- package/src/calendar.encrypt.helper.js +98 -98
- package/src/calendar.js +490 -490
- package/src/collection.js +100 -100
- package/src/config.js +10 -10
- package/src/constants.js +6 -6
- package/src/index.js +241 -241
- package/src/util.js +22 -22
- package/test/integration/spec/calendar.js +624 -624
- package/test/unit/spec/calendar.decrypt.helper.js +145 -145
- package/test/unit/spec/calendar.encrypt.helper.js +52 -52
- package/test/unit/spec/calendar.js +446 -446
- package/test/unit/spec/utils.js +16 -16
package/dist/calendar.js
CHANGED
|
@@ -7,37 +7,81 @@ _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
|
|
10
|
+
var _lodash = require("lodash");
|
|
11
11
|
var _common = require("@webex/common");
|
|
12
12
|
var _webexCore = require("@webex/webex-core");
|
|
13
13
|
var _collection = _interopRequireDefault(require("./collection"));
|
|
14
14
|
var _constants = require("./constants");
|
|
15
15
|
var _calendarEncrypt = _interopRequireDefault(require("./calendar.encrypt.helper"));
|
|
16
16
|
var _calendarDecrypt = _interopRequireDefault(require("./calendar.decrypt.helper"));
|
|
17
|
+
/*!
|
|
18
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Calendar Item Create Event
|
|
23
|
+
* Emitted when a calendar item has been added
|
|
24
|
+
* @event calendar:meeting:create
|
|
25
|
+
* @instance
|
|
26
|
+
* @memberof Calendar
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Calendar Item Update Event
|
|
31
|
+
* Emitted when a calendar item has been updated
|
|
32
|
+
* @event calendar:meeting:update
|
|
33
|
+
* @instance
|
|
34
|
+
* @memberof Calendar
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Calendar Item Update Event
|
|
39
|
+
* Emitted when a calendar item has been deleted
|
|
40
|
+
* @event calendar:meeting:delete
|
|
41
|
+
* @instance
|
|
42
|
+
* @memberof Calendar
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Calendar Registered Event
|
|
47
|
+
* Emitted when the calendar instance has been registered and listening
|
|
48
|
+
* @event calendar:registered
|
|
49
|
+
* @instance
|
|
50
|
+
* @memberof Calendar
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Calendar Registered Event
|
|
55
|
+
* Emitted when the calendar instance has been registered and listening
|
|
56
|
+
* @event calendar:unregistered
|
|
57
|
+
* @instance
|
|
58
|
+
* @memberof Calendar
|
|
59
|
+
*/
|
|
60
|
+
|
|
17
61
|
var Calendar = _webexCore.WebexPlugin.extend({
|
|
18
62
|
namespace: 'Calendar',
|
|
19
|
-
/**
|
|
20
|
-
* registered value indicating events registration is successful
|
|
21
|
-
* @instance
|
|
22
|
-
* @type {Boolean}
|
|
23
|
-
* @memberof Calendar
|
|
63
|
+
/**
|
|
64
|
+
* registered value indicating events registration is successful
|
|
65
|
+
* @instance
|
|
66
|
+
* @type {Boolean}
|
|
67
|
+
* @memberof Calendar
|
|
24
68
|
*/
|
|
25
69
|
registered: false,
|
|
26
|
-
/**
|
|
27
|
-
* Cache all rpc event request locally
|
|
70
|
+
/**
|
|
71
|
+
* Cache all rpc event request locally
|
|
28
72
|
* */
|
|
29
73
|
rpcEventRequests: [],
|
|
30
|
-
/**
|
|
31
|
-
* Cache KMS encryptionKeyUrl
|
|
74
|
+
/**
|
|
75
|
+
* Cache KMS encryptionKeyUrl
|
|
32
76
|
* */
|
|
33
77
|
encryptionKeyUrl: null,
|
|
34
|
-
/**
|
|
35
|
-
* WebexPlugin initialize method. This triggers once Webex has completed its
|
|
36
|
-
* initialization workflow.
|
|
37
|
-
*
|
|
38
|
-
* If the plugin is meant to perform startup actions, place them in this
|
|
39
|
-
* `initialize()` method instead of the `constructor()` method.
|
|
40
|
-
* @returns {void}
|
|
78
|
+
/**
|
|
79
|
+
* WebexPlugin initialize method. This triggers once Webex has completed its
|
|
80
|
+
* initialization workflow.
|
|
81
|
+
*
|
|
82
|
+
* If the plugin is meant to perform startup actions, place them in this
|
|
83
|
+
* `initialize()` method instead of the `constructor()` method.
|
|
84
|
+
* @returns {void}
|
|
41
85
|
*/
|
|
42
86
|
initialize: function initialize() {
|
|
43
87
|
var _this = this;
|
|
@@ -48,7 +92,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
48
92
|
_this.webex.internal.encryption.kms.createUnboundKeys({
|
|
49
93
|
count: 1
|
|
50
94
|
}).then(function (keys) {
|
|
51
|
-
var key = (0,
|
|
95
|
+
var key = (0, _lodash.isArray)(keys) ? keys[0] : keys;
|
|
52
96
|
_this.encryptionKeyUrl = key ? key.uri : null;
|
|
53
97
|
_this.logger.info('calendar->bind a KMS encryption key url');
|
|
54
98
|
_this.webex.internal.encryption.getKey(_this.encryptionKeyUrl, {
|
|
@@ -60,12 +104,12 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
60
104
|
});
|
|
61
105
|
});
|
|
62
106
|
},
|
|
63
|
-
/**
|
|
64
|
-
* Explicitly sets up the calendar plugin by registering
|
|
65
|
-
* the device, connecting to mercury, and listening for calendar events.
|
|
66
|
-
* @returns {Promise}
|
|
67
|
-
* @public
|
|
68
|
-
* @memberof Calendar
|
|
107
|
+
/**
|
|
108
|
+
* Explicitly sets up the calendar plugin by registering
|
|
109
|
+
* the device, connecting to mercury, and listening for calendar events.
|
|
110
|
+
* @returns {Promise}
|
|
111
|
+
* @public
|
|
112
|
+
* @memberof Calendar
|
|
69
113
|
*/
|
|
70
114
|
register: function register() {
|
|
71
115
|
var _this2 = this;
|
|
@@ -88,13 +132,13 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
88
132
|
return _promise.default.reject(error);
|
|
89
133
|
});
|
|
90
134
|
},
|
|
91
|
-
/**
|
|
92
|
-
* Explicitly tears down the calendar plugin by deregistering
|
|
93
|
-
* the device, disconnecting from mercury, and stops listening to calendar events
|
|
94
|
-
*
|
|
95
|
-
* @returns {Promise}
|
|
96
|
-
* @public
|
|
97
|
-
* @memberof Calendar
|
|
135
|
+
/**
|
|
136
|
+
* Explicitly tears down the calendar plugin by deregistering
|
|
137
|
+
* the device, disconnecting from mercury, and stops listening to calendar events
|
|
138
|
+
*
|
|
139
|
+
* @returns {Promise}
|
|
140
|
+
* @public
|
|
141
|
+
* @memberof Calendar
|
|
98
142
|
*/
|
|
99
143
|
unregister: function unregister() {
|
|
100
144
|
var _this3 = this;
|
|
@@ -110,10 +154,10 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
110
154
|
_this3.registered = false;
|
|
111
155
|
});
|
|
112
156
|
},
|
|
113
|
-
/**
|
|
114
|
-
* registers for calendar events through mercury
|
|
115
|
-
* @returns {undefined}
|
|
116
|
-
* @private
|
|
157
|
+
/**
|
|
158
|
+
* registers for calendar events through mercury
|
|
159
|
+
* @returns {undefined}
|
|
160
|
+
* @private
|
|
117
161
|
*/
|
|
118
162
|
listenForEvents: function listenForEvents() {
|
|
119
163
|
var _this4 = this;
|
|
@@ -137,10 +181,10 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
137
181
|
_this4._handleFreeBusy(envelope.data);
|
|
138
182
|
});
|
|
139
183
|
},
|
|
140
|
-
/**
|
|
141
|
-
* unregisteres all the calendar events from mercury
|
|
142
|
-
* @returns {undefined}
|
|
143
|
-
* @private
|
|
184
|
+
/**
|
|
185
|
+
* unregisteres all the calendar events from mercury
|
|
186
|
+
* @returns {undefined}
|
|
187
|
+
* @private
|
|
144
188
|
*/
|
|
145
189
|
stopListeningForEvents: function stopListeningForEvents() {
|
|
146
190
|
this.webex.internal.mercury.off('event:calendar.meeting.create');
|
|
@@ -150,41 +194,41 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
150
194
|
this.webex.internal.mercury.off('event:calendar.meeting.delete');
|
|
151
195
|
this.webex.internal.mercury.off('event:calendar.free_busy');
|
|
152
196
|
},
|
|
153
|
-
/**
|
|
154
|
-
* handles update events, triggers after collection updates
|
|
155
|
-
* @param {Object} data
|
|
156
|
-
* @returns {undefined}
|
|
157
|
-
* @private
|
|
197
|
+
/**
|
|
198
|
+
* handles update events, triggers after collection updates
|
|
199
|
+
* @param {Object} data
|
|
200
|
+
* @returns {undefined}
|
|
201
|
+
* @private
|
|
158
202
|
*/
|
|
159
203
|
_handleUpdate: function _handleUpdate(data) {
|
|
160
204
|
var id = _collection.default.set(data.calendarMeetingExternal);
|
|
161
205
|
this.trigger(_constants.CALENDAR_UPDATED, _collection.default.get(id));
|
|
162
206
|
},
|
|
163
|
-
/**
|
|
164
|
-
* handles create events, triggers after collection updates
|
|
165
|
-
* @param {Object} data
|
|
166
|
-
* @returns {undefined}
|
|
167
|
-
* @private
|
|
207
|
+
/**
|
|
208
|
+
* handles create events, triggers after collection updates
|
|
209
|
+
* @param {Object} data
|
|
210
|
+
* @returns {undefined}
|
|
211
|
+
* @private
|
|
168
212
|
*/
|
|
169
213
|
_handleCreate: function _handleCreate(data) {
|
|
170
214
|
var id = _collection.default.set(data.calendarMeetingExternal);
|
|
171
215
|
this.trigger(_constants.CALENDAR_CREATE, _collection.default.get(id));
|
|
172
216
|
},
|
|
173
|
-
/**
|
|
174
|
-
* handles delete events, triggers after collection updates
|
|
175
|
-
* @param {Object} data
|
|
176
|
-
* @returns {undefined}
|
|
177
|
-
* @private
|
|
217
|
+
/**
|
|
218
|
+
* handles delete events, triggers after collection updates
|
|
219
|
+
* @param {Object} data
|
|
220
|
+
* @returns {undefined}
|
|
221
|
+
* @private
|
|
178
222
|
*/
|
|
179
223
|
_handleDelete: function _handleDelete(data) {
|
|
180
224
|
var item = _collection.default.remove(data.calendarMeetingExternal.id);
|
|
181
225
|
this.trigger(_constants.CALENDAR_DELETE, item);
|
|
182
226
|
},
|
|
183
|
-
/**
|
|
184
|
-
* handles free_busy events
|
|
185
|
-
* @param {Object} data
|
|
186
|
-
* @returns {undefined}
|
|
187
|
-
* @private
|
|
227
|
+
/**
|
|
228
|
+
* handles free_busy events
|
|
229
|
+
* @param {Object} data
|
|
230
|
+
* @returns {undefined}
|
|
231
|
+
* @private
|
|
188
232
|
*/
|
|
189
233
|
_handleFreeBusy: function _handleFreeBusy(data) {
|
|
190
234
|
var _this5 = this;
|
|
@@ -204,13 +248,13 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
204
248
|
}
|
|
205
249
|
});
|
|
206
250
|
},
|
|
207
|
-
/**
|
|
208
|
-
* Retrieves a collection of calendars based on the request parameters
|
|
209
|
-
* Defaults to 1 day before and 7 days ahead
|
|
210
|
-
* @param {Object} options
|
|
211
|
-
* @param {Date} options.fromDate the start of the time range
|
|
212
|
-
* @param {Date} options.toDate the end of the time range
|
|
213
|
-
* @returns {Promise} Resolves with an array of calendars
|
|
251
|
+
/**
|
|
252
|
+
* Retrieves a collection of calendars based on the request parameters
|
|
253
|
+
* Defaults to 1 day before and 7 days ahead
|
|
254
|
+
* @param {Object} options
|
|
255
|
+
* @param {Date} options.fromDate the start of the time range
|
|
256
|
+
* @param {Date} options.toDate the end of the time range
|
|
257
|
+
* @returns {Promise} Resolves with an array of calendars
|
|
214
258
|
*/
|
|
215
259
|
syncCalendar: function syncCalendar() {
|
|
216
260
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
@@ -225,11 +269,11 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
225
269
|
return _collection.default.getAll();
|
|
226
270
|
});
|
|
227
271
|
},
|
|
228
|
-
/**
|
|
229
|
-
* get the calendar item that has a matching value
|
|
230
|
-
* @param {String} key meeting property
|
|
231
|
-
* @param {Any} value the meeting property to match
|
|
232
|
-
* @returns {Object}
|
|
272
|
+
/**
|
|
273
|
+
* get the calendar item that has a matching value
|
|
274
|
+
* @param {String} key meeting property
|
|
275
|
+
* @param {Any} value the meeting property to match
|
|
276
|
+
* @returns {Object}
|
|
233
277
|
*/
|
|
234
278
|
getByType: function getByType(key, value) {
|
|
235
279
|
if (['spaceURI', 'spaceMeetURL', 'conversationId'].includes(key)) {
|
|
@@ -237,27 +281,27 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
237
281
|
}
|
|
238
282
|
throw new Error('key must be one of, spaceURI, spaceMeetURL, or conversationId');
|
|
239
283
|
},
|
|
240
|
-
/**
|
|
241
|
-
* gets all the calendar items that have been populated
|
|
242
|
-
* @returns {Object}
|
|
284
|
+
/**
|
|
285
|
+
* gets all the calendar items that have been populated
|
|
286
|
+
* @returns {Object}
|
|
243
287
|
*/
|
|
244
288
|
getAll: function getAll() {
|
|
245
289
|
return _collection.default.getAll();
|
|
246
290
|
},
|
|
247
|
-
/**
|
|
248
|
-
* Decrypts an encrypted incoming calendar event
|
|
249
|
-
* @param {Object} event
|
|
250
|
-
* @returns {Promise} Resolves with a decrypted calendar event
|
|
291
|
+
/**
|
|
292
|
+
* Decrypts an encrypted incoming calendar event
|
|
293
|
+
* @param {Object} event
|
|
294
|
+
* @returns {Promise} Resolves with a decrypted calendar event
|
|
251
295
|
*/
|
|
252
296
|
processMeetingEvent: function processMeetingEvent(event) {
|
|
253
297
|
return this.webex.transform('inbound', event).then(function () {
|
|
254
298
|
return event;
|
|
255
299
|
});
|
|
256
300
|
},
|
|
257
|
-
/**
|
|
258
|
-
* Retrieves an array of meeting participants for the meeting id
|
|
259
|
-
* @param {String} id
|
|
260
|
-
* @returns {Promise} Resolves with an object of meeting participants
|
|
301
|
+
/**
|
|
302
|
+
* Retrieves an array of meeting participants for the meeting id
|
|
303
|
+
* @param {String} id
|
|
304
|
+
* @returns {Promise} Resolves with an object of meeting participants
|
|
261
305
|
*/
|
|
262
306
|
getParticipants: function getParticipants(id) {
|
|
263
307
|
return this.request({
|
|
@@ -266,10 +310,10 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
266
310
|
resource: "calendarEvents/".concat(_common.base64.encode(id), "/participants")
|
|
267
311
|
});
|
|
268
312
|
},
|
|
269
|
-
/**
|
|
270
|
-
* Retrieves a collection of meetings based on the request parameters
|
|
271
|
-
* @param {String} id
|
|
272
|
-
* @returns {Promise} Resolves with an object of meeting notes
|
|
313
|
+
/**
|
|
314
|
+
* Retrieves a collection of meetings based on the request parameters
|
|
315
|
+
* @param {String} id
|
|
316
|
+
* @returns {Promise} Resolves with an object of meeting notes
|
|
273
317
|
*/
|
|
274
318
|
getNotes: function getNotes(id) {
|
|
275
319
|
return this.request({
|
|
@@ -278,12 +322,12 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
278
322
|
resource: "calendarEvents/".concat(_common.base64.encode(id), "/notes")
|
|
279
323
|
});
|
|
280
324
|
},
|
|
281
|
-
/**
|
|
282
|
-
* Retrieves a collection of meetings based on the request parameters
|
|
283
|
-
* @param {Object} options
|
|
284
|
-
* @param {Date} options.fromDate the start of the time range
|
|
285
|
-
* @param {Date} options.toDate the end of the time range
|
|
286
|
-
* @returns {Promise} Resolves with an array of meetings
|
|
325
|
+
/**
|
|
326
|
+
* Retrieves a collection of meetings based on the request parameters
|
|
327
|
+
* @param {Object} options
|
|
328
|
+
* @param {Date} options.fromDate the start of the time range
|
|
329
|
+
* @param {Date} options.toDate the end of the time range
|
|
330
|
+
* @returns {Promise} Resolves with an array of meetings
|
|
287
331
|
*/
|
|
288
332
|
list: function list(options) {
|
|
289
333
|
var _this6 = this;
|
|
@@ -308,11 +352,11 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
308
352
|
});
|
|
309
353
|
});
|
|
310
354
|
},
|
|
311
|
-
/**
|
|
312
|
-
* Create calendar event
|
|
313
|
-
* @param {object} [data] meeting payload data
|
|
314
|
-
* @param {object} [query] the query parameters for specific usage
|
|
315
|
-
* @returns {Promise} Resolves with creating calendar event response
|
|
355
|
+
/**
|
|
356
|
+
* Create calendar event
|
|
357
|
+
* @param {object} [data] meeting payload data
|
|
358
|
+
* @param {object} [query] the query parameters for specific usage
|
|
359
|
+
* @returns {Promise} Resolves with creating calendar event response
|
|
316
360
|
* */
|
|
317
361
|
createCalendarEvent: function createCalendarEvent(data, query) {
|
|
318
362
|
var _this7 = this;
|
|
@@ -326,12 +370,12 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
326
370
|
});
|
|
327
371
|
});
|
|
328
372
|
},
|
|
329
|
-
/**
|
|
330
|
-
* Update calendar event
|
|
331
|
-
* @param {string} [id] calendar event id
|
|
332
|
-
* @param {object} [data] meeting payload data
|
|
333
|
-
* @param {object} [query] the query parameters for specific usage
|
|
334
|
-
* @returns {Promise} Resolves with updating calendar event response
|
|
373
|
+
/**
|
|
374
|
+
* Update calendar event
|
|
375
|
+
* @param {string} [id] calendar event id
|
|
376
|
+
* @param {object} [data] meeting payload data
|
|
377
|
+
* @param {object} [query] the query parameters for specific usage
|
|
378
|
+
* @returns {Promise} Resolves with updating calendar event response
|
|
335
379
|
* */
|
|
336
380
|
updateCalendarEvent: function updateCalendarEvent(id, data, query) {
|
|
337
381
|
var _this8 = this;
|
|
@@ -345,11 +389,11 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
345
389
|
});
|
|
346
390
|
});
|
|
347
391
|
},
|
|
348
|
-
/**
|
|
349
|
-
* Delete calendar event
|
|
350
|
-
* @param {string} [id] calendar event id
|
|
351
|
-
* @param {object} [query] the query parameters for specific usage
|
|
352
|
-
* @returns {Promise} Resolves with deleting calendar event response
|
|
392
|
+
/**
|
|
393
|
+
* Delete calendar event
|
|
394
|
+
* @param {string} [id] calendar event id
|
|
395
|
+
* @param {object} [query] the query parameters for specific usage
|
|
396
|
+
* @returns {Promise} Resolves with deleting calendar event response
|
|
353
397
|
* */
|
|
354
398
|
deleteCalendarEvent: function deleteCalendarEvent(id, query) {
|
|
355
399
|
return this.request({
|
|
@@ -359,26 +403,26 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
359
403
|
qs: query || {}
|
|
360
404
|
});
|
|
361
405
|
},
|
|
362
|
-
/**
|
|
363
|
-
* @typedef QuerySchedulerDataOptions
|
|
364
|
-
* @param {string} [siteName] it is site full url, must have. Example: ccctest.dmz.webex.com
|
|
365
|
-
* @param {string} [id] it is seriesOrOccurrenceId. If present, the series/occurrence meeting ID to fetch data for.
|
|
366
|
-
* Example: 040000008200E00074C5B7101A82E008000000004A99F11A0841D9010000000000000000100000009EE499D4A71C1A46B51494C70EC7BFE5
|
|
367
|
-
* @param {string} [clientMeetingId] If present, the client meeting UUID to fetch data for.
|
|
368
|
-
* Example: 7f318aa9-887c-6e94-802a-8dc8e6eb1a0a
|
|
369
|
-
* @param {string} [scheduleTemplateId] it template id.
|
|
370
|
-
* @param {string} [sessionTypeId] it session type id.
|
|
371
|
-
* @param {string} [organizerCIUserId] required in schedule-on-behalf case. It is the organizer's CI UUID.
|
|
372
|
-
* @param {boolean} [usmPreference]
|
|
373
|
-
* @param {string} [webexMeetingId] webex side meeting UUID
|
|
374
|
-
* @param {string} [eventId] event ID.
|
|
375
|
-
* @param {string} [icalUid] icalendar UUID.
|
|
376
|
-
* @param {string} [thirdPartyType] third part type, such as: Microsoft
|
|
406
|
+
/**
|
|
407
|
+
* @typedef QuerySchedulerDataOptions
|
|
408
|
+
* @param {string} [siteName] it is site full url, must have. Example: ccctest.dmz.webex.com
|
|
409
|
+
* @param {string} [id] it is seriesOrOccurrenceId. If present, the series/occurrence meeting ID to fetch data for.
|
|
410
|
+
* Example: 040000008200E00074C5B7101A82E008000000004A99F11A0841D9010000000000000000100000009EE499D4A71C1A46B51494C70EC7BFE5
|
|
411
|
+
* @param {string} [clientMeetingId] If present, the client meeting UUID to fetch data for.
|
|
412
|
+
* Example: 7f318aa9-887c-6e94-802a-8dc8e6eb1a0a
|
|
413
|
+
* @param {string} [scheduleTemplateId] it template id.
|
|
414
|
+
* @param {string} [sessionTypeId] it session type id.
|
|
415
|
+
* @param {string} [organizerCIUserId] required in schedule-on-behalf case. It is the organizer's CI UUID.
|
|
416
|
+
* @param {boolean} [usmPreference]
|
|
417
|
+
* @param {string} [webexMeetingId] webex side meeting UUID
|
|
418
|
+
* @param {string} [eventId] event ID.
|
|
419
|
+
* @param {string} [icalUid] icalendar UUID.
|
|
420
|
+
* @param {string} [thirdPartyType] third part type, such as: Microsoft
|
|
377
421
|
*/
|
|
378
|
-
/**
|
|
379
|
-
* Get scheduler data from calendar service
|
|
380
|
-
* @param {QuerySchedulerDataOptions} [query] the command parameters for fetching scheduler data.
|
|
381
|
-
* @returns {Promise} Resolves with a decrypted scheduler data
|
|
422
|
+
/**
|
|
423
|
+
* Get scheduler data from calendar service
|
|
424
|
+
* @param {QuerySchedulerDataOptions} [query] the command parameters for fetching scheduler data.
|
|
425
|
+
* @returns {Promise} Resolves with a decrypted scheduler data
|
|
382
426
|
* */
|
|
383
427
|
getSchedulerData: function getSchedulerData(query) {
|
|
384
428
|
var _this9 = this;
|
|
@@ -393,11 +437,11 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
393
437
|
});
|
|
394
438
|
});
|
|
395
439
|
},
|
|
396
|
-
/**
|
|
397
|
-
* Get free busy status from calendar service
|
|
398
|
-
* @param {Object} [data] the command parameters for fetching free busy status.
|
|
399
|
-
* @param {object} [query] the query parameters for specific usage
|
|
400
|
-
* @returns {Promise} Resolves with a decrypted response
|
|
440
|
+
/**
|
|
441
|
+
* Get free busy status from calendar service
|
|
442
|
+
* @param {Object} [data] the command parameters for fetching free busy status.
|
|
443
|
+
* @param {object} [query] the query parameters for specific usage
|
|
444
|
+
* @returns {Promise} Resolves with a decrypted response
|
|
401
445
|
* */
|
|
402
446
|
getFreeBusy: function getFreeBusy(data, query) {
|
|
403
447
|
var _this10 = this;
|
|
@@ -420,7 +464,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
420
464
|
throw error;
|
|
421
465
|
});
|
|
422
466
|
},
|
|
423
|
-
version: "2.59.
|
|
467
|
+
version: "2.59.4-next.1"
|
|
424
468
|
});
|
|
425
469
|
var _default = Calendar;
|
|
426
470
|
exports.default = _default;
|
package/dist/calendar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_common","require","_webexCore","_collection","_interopRequireDefault","_constants","_calendarEncrypt","_calendarDecrypt","Calendar","WebexPlugin","extend","namespace","registered","rpcEventRequests","encryptionKeyUrl","initialize","_this","listenToOnce","webex","internal","encryption","kms","createUnboundKeys","count","then","keys","key","_isArray2","default","uri","logger","info","getKey","onBehalfOf","retrievedKey","register","_this2","canAuthorize","error","_promise","reject","Error","resolve","device","mercury","connect","listenForEvents","trigger","CALENDAR_REGISTERED","catch","concat","message","unregister","_this3","stopListeningForEvents","disconnect","CALENDAR_UNREGISTERED","_this4","on","envelope","_handleCreate","data","_handleUpdate","_handleDelete","_handleFreeBusy","off","id","CalendarCollection","set","calendarMeetingExternal","CALENDAR_UPDATED","get","CALENDAR_CREATE","item","remove","CALENDAR_DELETE","_this5","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","request","method","service","resource","base64","encode","getNotes","_this6","qs","meetingObjects","body","items","promises","forEach","meeting","encryptedParticipants","push","notesResponse","all","createCalendarEvent","query","_this7","EncryptHelper","encryptCalendarEventRequest","updateCalendarEvent","_this8","deleteCalendarEvent","getSchedulerData","_this9","decryptSchedulerDataResponse","getFreeBusy","_this10","encryptFreeBusyRequest","version","_default","exports"],"sources":["calendar.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\n/**\r\n * Calendar Item Create Event\r\n * Emitted when a calendar item has been added\r\n * @event calendar:meeting:create\r\n * @instance\r\n * @memberof Calendar\r\n */\r\n\r\n/**\r\n * Calendar Item Update Event\r\n * Emitted when a calendar item has been updated\r\n * @event calendar:meeting:update\r\n * @instance\r\n * @memberof Calendar\r\n */\r\n\r\n/**\r\n * Calendar Item Update Event\r\n * Emitted when a calendar item has been deleted\r\n * @event calendar:meeting:delete\r\n * @instance\r\n * @memberof Calendar\r\n */\r\n\r\n/**\r\n * Calendar Registered Event\r\n * Emitted when the calendar instance has been registered and listening\r\n * @event calendar:registered\r\n * @instance\r\n * @memberof Calendar\r\n */\r\n\r\n/**\r\n * Calendar Registered Event\r\n * Emitted when the calendar instance has been registered and listening\r\n * @event calendar:unregistered\r\n * @instance\r\n * @memberof Calendar\r\n */\r\nimport {isArray} from 'lodash';\r\nimport {base64} from '@webex/common';\r\nimport {WebexPlugin} from '@webex/webex-core';\r\n\r\nimport CalendarCollection from './collection';\r\nimport {\r\n CALENDAR_REGISTERED,\r\n CALENDAR_UNREGISTERED,\r\n CALENDAR_DELETE,\r\n CALENDAR_CREATE,\r\n CALENDAR_UPDATED,\r\n} from './constants';\r\n\r\nimport EncryptHelper from './calendar.encrypt.helper';\r\nimport DecryptHelper from './calendar.decrypt.helper';\r\n\r\nconst Calendar = WebexPlugin.extend({\r\n namespace: 'Calendar',\r\n\r\n /**\r\n * registered value indicating events registration is successful\r\n * @instance\r\n * @type {Boolean}\r\n * @memberof Calendar\r\n */\r\n registered: false,\r\n\r\n /**\r\n * Cache all rpc event request locally\r\n * */\r\n rpcEventRequests: [],\r\n\r\n /**\r\n * Cache KMS encryptionKeyUrl\r\n * */\r\n encryptionKeyUrl: null,\r\n\r\n /**\r\n * WebexPlugin initialize method. This triggers once Webex has completed its\r\n * initialization workflow.\r\n *\r\n * If the plugin is meant to perform startup actions, place them in this\r\n * `initialize()` method instead of the `constructor()` method.\r\n * @returns {void}\r\n */\r\n initialize() {\r\n // Used to perform actions after webex is fully qualified and ready for\r\n // operation.\r\n this.listenToOnce(this.webex, 'ready', () => {\r\n // Pre-fetch a KMS encryption key url to improve performance\r\n this.webex.internal.encryption.kms.createUnboundKeys({count: 1}).then((keys) => {\r\n const key = isArray(keys) ? keys[0] : keys;\r\n this.encryptionKeyUrl = key ? key.uri : null;\r\n this.logger.info('calendar->bind a KMS encryption key url');\r\n this.webex.internal.encryption\r\n .getKey(this.encryptionKeyUrl, {onBehalfOf: null})\r\n .then((retrievedKey) => {\r\n this.encryptionKeyUrl = retrievedKey ? retrievedKey.uri : null;\r\n this.logger.info('calendar->retrieve the KMS encryption key url and cache it');\r\n });\r\n });\r\n });\r\n },\r\n\r\n /**\r\n * Explicitly sets up the calendar plugin by registering\r\n * the device, connecting to mercury, and listening for calendar events.\r\n * @returns {Promise}\r\n * @public\r\n * @memberof Calendar\r\n */\r\n register() {\r\n if (!this.webex.canAuthorize) {\r\n this.logger.error('calendar->register#ERROR, Unable to register, SDK cannot authorize');\r\n\r\n return Promise.reject(new Error('SDK cannot authorize'));\r\n }\r\n\r\n if (this.registered) {\r\n this.logger.info('calendar->register#INFO, Calendar plugin already registered');\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n return this.webex.internal.device\r\n .register()\r\n .then(() => this.webex.internal.mercury.connect())\r\n .then(() => {\r\n this.listenForEvents();\r\n this.trigger(CALENDAR_REGISTERED);\r\n this.registered = true;\r\n })\r\n .catch((error) => {\r\n this.logger.error(`calendar->register#ERROR, Unable to register, ${error.message}`);\r\n\r\n return Promise.reject(error);\r\n });\r\n },\r\n\r\n /**\r\n * Explicitly tears down the calendar plugin by deregistering\r\n * the device, disconnecting from mercury, and stops listening to calendar events\r\n *\r\n * @returns {Promise}\r\n * @public\r\n * @memberof Calendar\r\n */\r\n unregister() {\r\n if (!this.registered) {\r\n this.logger.info('calendar->unregister#INFO, Calendar plugin already unregistered');\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n this.stopListeningForEvents();\r\n\r\n return this.webex.internal.mercury\r\n .disconnect()\r\n .then(() => this.webex.internal.device.unregister())\r\n .then(() => {\r\n this.trigger(CALENDAR_UNREGISTERED);\r\n this.registered = false;\r\n });\r\n },\r\n\r\n /**\r\n * registers for calendar events through mercury\r\n * @returns {undefined}\r\n * @private\r\n */\r\n listenForEvents() {\r\n // Calendar mercury events listener\r\n this.webex.internal.mercury.on('event:calendar.meeting.create', (envelope) => {\r\n this._handleCreate(envelope.data);\r\n });\r\n this.webex.internal.mercury.on('event:calendar.meeting.update', (envelope) => {\r\n this._handleUpdate(envelope.data);\r\n });\r\n this.webex.internal.mercury.on('event:calendar.meeting.create.minimal', (envelope) => {\r\n this._handleCreate(envelope.data);\r\n });\r\n this.webex.internal.mercury.on('event:calendar.meeting.update.minimal', (envelope) => {\r\n this._handleUpdate(envelope.data);\r\n });\r\n this.webex.internal.mercury.on('event:calendar.meeting.delete', (envelope) => {\r\n this._handleDelete(envelope.data);\r\n });\r\n this.webex.internal.mercury.on('event:calendar.free_busy', (envelope) => {\r\n this._handleFreeBusy(envelope.data);\r\n });\r\n },\r\n\r\n /**\r\n * unregisteres all the calendar events from mercury\r\n * @returns {undefined}\r\n * @private\r\n */\r\n stopListeningForEvents() {\r\n this.webex.internal.mercury.off('event:calendar.meeting.create');\r\n this.webex.internal.mercury.off('event:calendar.meeting.create.minimal');\r\n this.webex.internal.mercury.off('event:calendar.meeting.update');\r\n this.webex.internal.mercury.off('event:calendar.meeting.update.minimal');\r\n this.webex.internal.mercury.off('event:calendar.meeting.delete');\r\n this.webex.internal.mercury.off('event:calendar.free_busy');\r\n },\r\n\r\n /**\r\n * handles update events, triggers after collection updates\r\n * @param {Object} data\r\n * @returns {undefined}\r\n * @private\r\n */\r\n _handleUpdate(data) {\r\n const id = CalendarCollection.set(data.calendarMeetingExternal);\r\n\r\n this.trigger(CALENDAR_UPDATED, CalendarCollection.get(id));\r\n },\r\n\r\n /**\r\n * handles create events, triggers after collection updates\r\n * @param {Object} data\r\n * @returns {undefined}\r\n * @private\r\n */\r\n _handleCreate(data) {\r\n const id = CalendarCollection.set(data.calendarMeetingExternal);\r\n\r\n this.trigger(CALENDAR_CREATE, CalendarCollection.get(id));\r\n },\r\n\r\n /**\r\n * handles delete events, triggers after collection updates\r\n * @param {Object} data\r\n * @returns {undefined}\r\n * @private\r\n */\r\n _handleDelete(data) {\r\n const item = CalendarCollection.remove(data.calendarMeetingExternal.id);\r\n\r\n this.trigger(CALENDAR_DELETE, item);\r\n },\r\n\r\n /**\r\n * handles free_busy events\r\n * @param {Object} data\r\n * @returns {undefined}\r\n * @private\r\n */\r\n _handleFreeBusy(data) {\r\n DecryptHelper.decryptFreeBusyResponse(this, data).then(() => {\r\n let response = {};\r\n if (data && data.calendarFreeBusyScheduleResponse) {\r\n response = data.calendarFreeBusyScheduleResponse;\r\n }\r\n if (response && response.requestId && response.requestId in this.rpcEventRequests) {\r\n this.logger.log(\r\n `webex.internal.calendar - receive requests, requestId: ${response.requestId}`\r\n );\r\n delete response.encryptionKeyUrl;\r\n const {resolve} = this.rpcEventRequests[response.requestId];\r\n resolve(response);\r\n delete this.rpcEventRequests[response.requestId];\r\n } else {\r\n this.logger.log('webex.internal.calendar - receive other requests.');\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Retrieves a collection of calendars based on the request parameters\r\n * Defaults to 1 day before and 7 days ahead\r\n * @param {Object} options\r\n * @param {Date} options.fromDate the start of the time range\r\n * @param {Date} options.toDate the end of the time range\r\n * @returns {Promise} Resolves with an array of calendars\r\n */\r\n syncCalendar(options = {fromDate: this.config.fromDate, toDate: this.config.toDate}) {\r\n return this.list({fromDate: options.fromDate, toDate: options.toDate}).then((res) => {\r\n CalendarCollection.setAll(res);\r\n\r\n return CalendarCollection.getAll();\r\n });\r\n },\r\n /**\r\n * get the calendar item that has a matching value\r\n * @param {String} key meeting property\r\n * @param {Any} value the meeting property to match\r\n * @returns {Object}\r\n */\r\n getByType(key, value) {\r\n if (['spaceURI', 'spaceMeetURL', 'conversationId'].includes(key)) {\r\n return CalendarCollection.getBy(key, value);\r\n }\r\n throw new Error('key must be one of, spaceURI, spaceMeetURL, or conversationId');\r\n },\r\n\r\n /**\r\n * gets all the calendar items that have been populated\r\n * @returns {Object}\r\n */\r\n getAll() {\r\n return CalendarCollection.getAll();\r\n },\r\n\r\n /**\r\n * Decrypts an encrypted incoming calendar event\r\n * @param {Object} event\r\n * @returns {Promise} Resolves with a decrypted calendar event\r\n */\r\n processMeetingEvent(event) {\r\n return this.webex.transform('inbound', event).then(() => event);\r\n },\r\n\r\n /**\r\n * Retrieves an array of meeting participants for the meeting id\r\n * @param {String} id\r\n * @returns {Promise} Resolves with an object of meeting participants\r\n */\r\n getParticipants(id) {\r\n return this.request({\r\n method: 'GET',\r\n service: 'calendar',\r\n resource: `calendarEvents/${base64.encode(id)}/participants`,\r\n });\r\n },\r\n\r\n /**\r\n * Retrieves a collection of meetings based on the request parameters\r\n * @param {String} id\r\n * @returns {Promise} Resolves with an object of meeting notes\r\n */\r\n getNotes(id) {\r\n return this.request({\r\n method: 'GET',\r\n service: 'calendar',\r\n resource: `calendarEvents/${base64.encode(id)}/notes`,\r\n });\r\n },\r\n\r\n /**\r\n * Retrieves a collection of meetings based on the request parameters\r\n * @param {Object} options\r\n * @param {Date} options.fromDate the start of the time range\r\n * @param {Date} options.toDate the end of the time range\r\n * @returns {Promise} Resolves with an array of meetings\r\n */\r\n list(options) {\r\n options = options || {};\r\n\r\n return this.webex\r\n .request({\r\n method: 'GET',\r\n service: 'calendar',\r\n resource: 'calendarEvents',\r\n qs: options,\r\n })\r\n .then((res) => {\r\n const meetingObjects = res.body.items;\r\n const promises = [];\r\n\r\n meetingObjects.forEach((meeting) => {\r\n if (!meeting.encryptedParticipants) {\r\n promises.push(\r\n this.getParticipants(meeting.id).then((notesResponse) => {\r\n meeting.encryptedParticipants = notesResponse.body.encryptedParticipants;\r\n })\r\n );\r\n }\r\n });\r\n\r\n return Promise.all(promises).then(() => meetingObjects);\r\n });\r\n },\r\n\r\n /**\r\n * Create calendar event\r\n * @param {object} [data] meeting payload data\r\n * @param {object} [query] the query parameters for specific usage\r\n * @returns {Promise} Resolves with creating calendar event response\r\n * */\r\n createCalendarEvent(data, query) {\r\n return EncryptHelper.encryptCalendarEventRequest(this, data).then(() =>\r\n this.request({\r\n method: 'POST',\r\n service: 'calendar',\r\n body: data,\r\n resource: 'calendarEvents/sync',\r\n qs: query || {},\r\n })\r\n );\r\n },\r\n\r\n /**\r\n * Update calendar event\r\n * @param {string} [id] calendar event id\r\n * @param {object} [data] meeting payload data\r\n * @param {object} [query] the query parameters for specific usage\r\n * @returns {Promise} Resolves with updating calendar event response\r\n * */\r\n updateCalendarEvent(id, data, query) {\r\n return EncryptHelper.encryptCalendarEventRequest(this, data).then(() =>\r\n this.request({\r\n method: 'PATCH',\r\n service: 'calendar',\r\n body: data,\r\n resource: `calendarEvents/${base64.encode(id)}/sync`,\r\n qs: query || {},\r\n })\r\n );\r\n },\r\n\r\n /**\r\n * Delete calendar event\r\n * @param {string} [id] calendar event id\r\n * @param {object} [query] the query parameters for specific usage\r\n * @returns {Promise} Resolves with deleting calendar event response\r\n * */\r\n deleteCalendarEvent(id, query) {\r\n return this.request({\r\n method: 'DELETE',\r\n service: 'calendar',\r\n resource: `calendarEvents/${base64.encode(id)}/sync`,\r\n qs: query || {},\r\n });\r\n },\r\n\r\n /**\r\n * @typedef QuerySchedulerDataOptions\r\n * @param {string} [siteName] it is site full url, must have. Example: ccctest.dmz.webex.com\r\n * @param {string} [id] it is seriesOrOccurrenceId. If present, the series/occurrence meeting ID to fetch data for.\r\n * Example: 040000008200E00074C5B7101A82E008000000004A99F11A0841D9010000000000000000100000009EE499D4A71C1A46B51494C70EC7BFE5\r\n * @param {string} [clientMeetingId] If present, the client meeting UUID to fetch data for.\r\n * Example: 7f318aa9-887c-6e94-802a-8dc8e6eb1a0a\r\n * @param {string} [scheduleTemplateId] it template id.\r\n * @param {string} [sessionTypeId] it session type id.\r\n * @param {string} [organizerCIUserId] required in schedule-on-behalf case. It is the organizer's CI UUID.\r\n * @param {boolean} [usmPreference]\r\n * @param {string} [webexMeetingId] webex side meeting UUID\r\n * @param {string} [eventId] event ID.\r\n * @param {string} [icalUid] icalendar UUID.\r\n * @param {string} [thirdPartyType] third part type, such as: Microsoft\r\n */\r\n /**\r\n * Get scheduler data from calendar service\r\n * @param {QuerySchedulerDataOptions} [query] the command parameters for fetching scheduler data.\r\n * @returns {Promise} Resolves with a decrypted scheduler data\r\n * */\r\n getSchedulerData(query) {\r\n return this.request({\r\n method: 'GET',\r\n service: 'calendar',\r\n resource: 'schedulerData',\r\n qs: query || {},\r\n }).then((response) => {\r\n return DecryptHelper.decryptSchedulerDataResponse(this, response.body).then(() => response);\r\n });\r\n },\r\n\r\n /**\r\n * Get free busy status from calendar service\r\n * @param {Object} [data] the command parameters for fetching free busy status.\r\n * @param {object} [query] the query parameters for specific usage\r\n * @returns {Promise} Resolves with a decrypted response\r\n * */\r\n getFreeBusy(data, query) {\r\n return EncryptHelper.encryptFreeBusyRequest(this, data)\r\n .then(() => {\r\n return this.request({\r\n method: 'POST',\r\n service: 'calendar',\r\n body: data,\r\n resource: 'freebusy',\r\n qs: query || {},\r\n });\r\n })\r\n .then(() => {\r\n return new Promise((resolve, reject) => {\r\n this.rpcEventRequests[data.requestId] = {resolve, reject};\r\n });\r\n })\r\n .catch((error) => {\r\n throw error;\r\n });\r\n },\r\n});\r\n\r\nexport default Calendar;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lodash","require","_common","_webexCore","_collection","_interopRequireDefault","_constants","_calendarEncrypt","_calendarDecrypt","Calendar","WebexPlugin","extend","namespace","registered","rpcEventRequests","encryptionKeyUrl","initialize","_this","listenToOnce","webex","internal","encryption","kms","createUnboundKeys","count","then","keys","key","isArray","uri","logger","info","getKey","onBehalfOf","retrievedKey","register","_this2","canAuthorize","error","_promise","default","reject","Error","resolve","device","mercury","connect","listenForEvents","trigger","CALENDAR_REGISTERED","catch","concat","message","unregister","_this3","stopListeningForEvents","disconnect","CALENDAR_UNREGISTERED","_this4","on","envelope","_handleCreate","data","_handleUpdate","_handleDelete","_handleFreeBusy","off","id","CalendarCollection","set","calendarMeetingExternal","CALENDAR_UPDATED","get","CALENDAR_CREATE","item","remove","CALENDAR_DELETE","_this5","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","request","method","service","resource","base64","encode","getNotes","_this6","qs","meetingObjects","body","items","promises","forEach","meeting","encryptedParticipants","push","notesResponse","all","createCalendarEvent","query","_this7","EncryptHelper","encryptCalendarEventRequest","updateCalendarEvent","_this8","deleteCalendarEvent","getSchedulerData","_this9","decryptSchedulerDataResponse","getFreeBusy","_this10","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 * 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 * @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 // Pre-fetch a KMS encryption key url to improve performance\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 /**\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 id\n * @param {String} id\n * @returns {Promise} Resolves with an object of meeting participants\n */\n getParticipants(id) {\n return this.request({\n method: 'GET',\n service: 'calendar',\n resource: `calendarEvents/${base64.encode(id)}/participants`,\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.id).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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"}
|