@webex/internal-plugin-calendar 2.59.8 → 2.60.0-next.2
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.decrypt.helper.js +1 -2
- package/dist/calendar.decrypt.helper.js.map +1 -1
- package/dist/calendar.encrypt.helper.js +7 -8
- package/dist/calendar.encrypt.helper.js.map +1 -1
- package/dist/calendar.js +130 -58
- package/dist/calendar.js.map +1 -1
- package/dist/collection.js +3 -4
- package/dist/collection.js.map +1 -1
- package/dist/config.js +1 -2
- package/dist/config.js.map +1 -1
- package/dist/constants.js +6 -12
- package/dist/constants.js.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/util.js +3 -4
- package/dist/util.js.map +1 -1
- package/package.json +18 -17
- package/src/calendar.js +51 -18
- package/test/unit/spec/calendar.js +74 -4
|
@@ -68,6 +68,5 @@ var DecryptHelper = {
|
|
|
68
68
|
return _promise.default.all([].concat(calendarFreeBusyItems));
|
|
69
69
|
}
|
|
70
70
|
};
|
|
71
|
-
var _default = DecryptHelper;
|
|
72
|
-
exports.default = _default;
|
|
71
|
+
var _default = exports.default = DecryptHelper;
|
|
73
72
|
//# sourceMappingURL=calendar.decrypt.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_decryptTextProp","ctx","name","key","object","_promise","default","resolve","webex","internal","encryption","decryptText","uri","then","plaintext","DecryptHelper","decryptSchedulerDataResponse","data","encryptionKeyUrl","decryptedParticipants","encryptedParticipants","map","participant","all","decryptedScheduleFor","_values","encryptedScheduleFor","flatMap","item","decryptedMeetingJoinInfo","meetingJoinInfo","decryptedOrganizer","encryptedOrganizer","concat","decryptFreeBusyResponse","calendarFreeBusyScheduleResponse","calendarFreeBusyItems","calendarFreeBusyItem","_default","exports"],"sources":["calendar.decrypt.helper.js"],"sourcesContent":["const _decryptTextProp = (ctx, name, key, object) => {\n if (!object[name]) {\n return Promise.resolve();\n }\n\n return ctx.webex.internal.encryption\n .decryptText(key.uri || key, object[name])\n .then((plaintext) => {\n object[name] = plaintext;\n });\n};\n\nconst DecryptHelper = {\n /**\n * Decrypt scheduler data response\n * @param {object} [ctx] context\n * @param {object} [data] scheduler data response\n * @returns {Promise} Resolves with decrypted response\n * */\n decryptSchedulerDataResponse: (ctx, data) => {\n if (!data) {\n return Promise.resolve();\n }\n\n if (!data.encryptionKeyUrl) {\n return Promise.resolve();\n }\n\n // Decrypt participant properties if meeting object contains participants\n const decryptedParticipants = data.encryptedParticipants\n ? data.encryptedParticipants.map((participant) =>\n Promise.all([\n _decryptTextProp(ctx, 'encryptedEmailAddress', data.encryptionKeyUrl, participant),\n _decryptTextProp(ctx, 'encryptedName', data.encryptionKeyUrl, participant),\n ])\n )\n : [];\n\n // Decrypt encryptedScheduleFor properties if meeting object contains SOB\n const decryptedScheduleFor = Promise.all(\n Object.values(data.encryptedScheduleFor || {}).flatMap((item) => [\n _decryptTextProp(ctx, 'encryptedEmail', data.encryptionKeyUrl, item),\n _decryptTextProp(ctx, 'encryptedDisplayName', data.encryptionKeyUrl, item),\n ])\n );\n\n // Decrypt meetingJoinInfo properties if meeting object contains meetingJoinInfo\n const decryptedMeetingJoinInfo = data.meetingJoinInfo\n ? Promise.all([\n _decryptTextProp(ctx, 'meetingJoinURI', data.encryptionKeyUrl, data.meetingJoinInfo),\n _decryptTextProp(ctx, 'meetingJoinURL', data.encryptionKeyUrl, data.meetingJoinInfo),\n ])\n : [];\n\n const decryptedOrganizer = data.encryptedOrganizer\n ? Promise.all([\n _decryptTextProp(\n ctx,\n 'encryptedEmailAddress',\n data.encryptionKeyUrl,\n data.encryptedOrganizer\n ),\n _decryptTextProp(ctx, 'encryptedName', data.encryptionKeyUrl, data.encryptedOrganizer),\n ])\n : [];\n\n return Promise.all(\n [\n _decryptTextProp(ctx, 'encryptedSubject', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'encryptedLocation', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'encryptedNotes', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'webexURI', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'webexURL', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'spaceMeetURL', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'spaceURI', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'spaceURL', data.encryptionKeyUrl, data),\n ].concat(\n decryptedOrganizer,\n decryptedParticipants,\n decryptedScheduleFor,\n decryptedMeetingJoinInfo\n )\n );\n },\n /**\n * Decrypt free-busy response\n * @param {object} [ctx] context\n * @param {object} [data] free-busy response\n * @returns {Promise} Resolves with decrypted response\n * */\n decryptFreeBusyResponse: (ctx, data) => {\n if (!data) {\n return Promise.resolve();\n }\n\n if (!data.calendarFreeBusyScheduleResponse) {\n return Promise.resolve();\n }\n\n if (!data.calendarFreeBusyScheduleResponse.encryptionKeyUrl) {\n return Promise.resolve();\n }\n\n const calendarFreeBusyItems = data.calendarFreeBusyScheduleResponse.calendarFreeBusyItems\n ? data.calendarFreeBusyScheduleResponse.calendarFreeBusyItems.map((calendarFreeBusyItem) =>\n Promise.all([\n _decryptTextProp(\n ctx,\n 'email',\n data.calendarFreeBusyScheduleResponse.encryptionKeyUrl,\n calendarFreeBusyItem\n ),\n ])\n )\n : [];\n\n return Promise.all([].concat(calendarFreeBusyItems));\n },\n};\n\nexport default DecryptHelper;\n"],"mappings":";;;;;;;;;;AAAA,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,GAAG,EAAEC,IAAI,EAAEC,GAAG,EAAEC,MAAM,EAAK;EACnD,IAAI,CAACA,MAAM,CAACF,IAAI,CAAC,EAAE;IACjB,OAAOG,QAAA,CAAAC,OAAA,CAAQC,OAAO,
|
|
1
|
+
{"version":3,"names":["_decryptTextProp","ctx","name","key","object","_promise","default","resolve","webex","internal","encryption","decryptText","uri","then","plaintext","DecryptHelper","decryptSchedulerDataResponse","data","encryptionKeyUrl","decryptedParticipants","encryptedParticipants","map","participant","all","decryptedScheduleFor","_values","encryptedScheduleFor","flatMap","item","decryptedMeetingJoinInfo","meetingJoinInfo","decryptedOrganizer","encryptedOrganizer","concat","decryptFreeBusyResponse","calendarFreeBusyScheduleResponse","calendarFreeBusyItems","calendarFreeBusyItem","_default","exports"],"sources":["calendar.decrypt.helper.js"],"sourcesContent":["const _decryptTextProp = (ctx, name, key, object) => {\n if (!object[name]) {\n return Promise.resolve();\n }\n\n return ctx.webex.internal.encryption\n .decryptText(key.uri || key, object[name])\n .then((plaintext) => {\n object[name] = plaintext;\n });\n};\n\nconst DecryptHelper = {\n /**\n * Decrypt scheduler data response\n * @param {object} [ctx] context\n * @param {object} [data] scheduler data response\n * @returns {Promise} Resolves with decrypted response\n * */\n decryptSchedulerDataResponse: (ctx, data) => {\n if (!data) {\n return Promise.resolve();\n }\n\n if (!data.encryptionKeyUrl) {\n return Promise.resolve();\n }\n\n // Decrypt participant properties if meeting object contains participants\n const decryptedParticipants = data.encryptedParticipants\n ? data.encryptedParticipants.map((participant) =>\n Promise.all([\n _decryptTextProp(ctx, 'encryptedEmailAddress', data.encryptionKeyUrl, participant),\n _decryptTextProp(ctx, 'encryptedName', data.encryptionKeyUrl, participant),\n ])\n )\n : [];\n\n // Decrypt encryptedScheduleFor properties if meeting object contains SOB\n const decryptedScheduleFor = Promise.all(\n Object.values(data.encryptedScheduleFor || {}).flatMap((item) => [\n _decryptTextProp(ctx, 'encryptedEmail', data.encryptionKeyUrl, item),\n _decryptTextProp(ctx, 'encryptedDisplayName', data.encryptionKeyUrl, item),\n ])\n );\n\n // Decrypt meetingJoinInfo properties if meeting object contains meetingJoinInfo\n const decryptedMeetingJoinInfo = data.meetingJoinInfo\n ? Promise.all([\n _decryptTextProp(ctx, 'meetingJoinURI', data.encryptionKeyUrl, data.meetingJoinInfo),\n _decryptTextProp(ctx, 'meetingJoinURL', data.encryptionKeyUrl, data.meetingJoinInfo),\n ])\n : [];\n\n const decryptedOrganizer = data.encryptedOrganizer\n ? Promise.all([\n _decryptTextProp(\n ctx,\n 'encryptedEmailAddress',\n data.encryptionKeyUrl,\n data.encryptedOrganizer\n ),\n _decryptTextProp(ctx, 'encryptedName', data.encryptionKeyUrl, data.encryptedOrganizer),\n ])\n : [];\n\n return Promise.all(\n [\n _decryptTextProp(ctx, 'encryptedSubject', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'encryptedLocation', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'encryptedNotes', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'webexURI', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'webexURL', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'spaceMeetURL', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'spaceURI', data.encryptionKeyUrl, data),\n _decryptTextProp(ctx, 'spaceURL', data.encryptionKeyUrl, data),\n ].concat(\n decryptedOrganizer,\n decryptedParticipants,\n decryptedScheduleFor,\n decryptedMeetingJoinInfo\n )\n );\n },\n /**\n * Decrypt free-busy response\n * @param {object} [ctx] context\n * @param {object} [data] free-busy response\n * @returns {Promise} Resolves with decrypted response\n * */\n decryptFreeBusyResponse: (ctx, data) => {\n if (!data) {\n return Promise.resolve();\n }\n\n if (!data.calendarFreeBusyScheduleResponse) {\n return Promise.resolve();\n }\n\n if (!data.calendarFreeBusyScheduleResponse.encryptionKeyUrl) {\n return Promise.resolve();\n }\n\n const calendarFreeBusyItems = data.calendarFreeBusyScheduleResponse.calendarFreeBusyItems\n ? data.calendarFreeBusyScheduleResponse.calendarFreeBusyItems.map((calendarFreeBusyItem) =>\n Promise.all([\n _decryptTextProp(\n ctx,\n 'email',\n data.calendarFreeBusyScheduleResponse.encryptionKeyUrl,\n calendarFreeBusyItem\n ),\n ])\n )\n : [];\n\n return Promise.all([].concat(calendarFreeBusyItems));\n },\n};\n\nexport default DecryptHelper;\n"],"mappings":"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"}
|
|
@@ -8,8 +8,8 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
10
10
|
var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
|
|
11
|
-
var
|
|
12
|
-
var
|
|
11
|
+
var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
|
|
12
|
+
var _lodash = require("lodash");
|
|
13
13
|
var _encryptTextProp = function _encryptTextProp(ctx, name, key, object) {
|
|
14
14
|
if (!object[name]) {
|
|
15
15
|
return _promise.default.resolve();
|
|
@@ -32,7 +32,7 @@ var _encryptFreeBusyPayload = function _encryptFreeBusyPayload(data, ctx) {
|
|
|
32
32
|
encryptionKeyUrl: ctx.encryptionKeyUrl
|
|
33
33
|
});
|
|
34
34
|
var promises = [];
|
|
35
|
-
if (data.emails && (0,
|
|
35
|
+
if (data.emails && (0, _isArray.default)(data.emails)) {
|
|
36
36
|
data.emails.map(function (item, index) {
|
|
37
37
|
return promises.push(ctx.webex.internal.encryption.encryptText(data.encryptionKeyUrl, item).then(function (encryptText) {
|
|
38
38
|
data.emails[index] = encryptText;
|
|
@@ -55,7 +55,7 @@ var EncryptHelper = {
|
|
|
55
55
|
return ctx.webex.internal.encryption.kms.createUnboundKeys({
|
|
56
56
|
count: 1
|
|
57
57
|
}).then(function (keys) {
|
|
58
|
-
var key = (0,
|
|
58
|
+
var key = (0, _lodash.isArray)(keys) ? keys[0] : keys;
|
|
59
59
|
ctx.encryptionKeyUrl = key.uri;
|
|
60
60
|
return _encryptCalendarEventPayload(data, ctx);
|
|
61
61
|
});
|
|
@@ -68,7 +68,7 @@ var EncryptHelper = {
|
|
|
68
68
|
* @returns {Promise} Resolves with encrypted request payload
|
|
69
69
|
* */
|
|
70
70
|
encryptFreeBusyRequest: function encryptFreeBusyRequest(ctx, data) {
|
|
71
|
-
if (!data.emails || !(0,
|
|
71
|
+
if (!data.emails || !(0, _isArray.default)(data.emails)) {
|
|
72
72
|
return _promise.default.resolve();
|
|
73
73
|
}
|
|
74
74
|
if (ctx.encryptionKeyUrl) {
|
|
@@ -77,12 +77,11 @@ var EncryptHelper = {
|
|
|
77
77
|
return ctx.webex.internal.encryption.kms.createUnboundKeys({
|
|
78
78
|
count: 1
|
|
79
79
|
}).then(function (keys) {
|
|
80
|
-
var key = (0,
|
|
80
|
+
var key = (0, _lodash.isArray)(keys) ? keys[0] : keys;
|
|
81
81
|
ctx.encryptionKeyUrl = key.uri;
|
|
82
82
|
return _encryptFreeBusyPayload(data, ctx);
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
85
|
};
|
|
86
|
-
var _default = EncryptHelper;
|
|
87
|
-
exports.default = _default;
|
|
86
|
+
var _default = exports.default = EncryptHelper;
|
|
88
87
|
//# sourceMappingURL=calendar.encrypt.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_encryptTextProp","ctx","name","key","object","_promise","default","resolve","webex","internal","encryption","encryptText","uri","then","ciphertext","_encryptCalendarEventPayload","data","_assign","encryptionKeyUrl","encryptedAttendees","attendees","map","attendee","all","concat","_encryptFreeBusyPayload","promises","emails","
|
|
1
|
+
{"version":3,"names":["_lodash","require","_encryptTextProp","ctx","name","key","object","_promise","default","resolve","webex","internal","encryption","encryptText","uri","then","ciphertext","_encryptCalendarEventPayload","data","_assign","encryptionKeyUrl","encryptedAttendees","attendees","map","attendee","all","concat","_encryptFreeBusyPayload","promises","emails","_isArray","item","index","push","EncryptHelper","encryptCalendarEventRequest","kms","createUnboundKeys","count","keys","isArray","encryptFreeBusyRequest","_default","exports"],"sources":["calendar.encrypt.helper.js"],"sourcesContent":["import {isArray} from 'lodash';\n\nconst _encryptTextProp = (ctx, name, key, object) => {\n if (!object[name]) {\n return Promise.resolve();\n }\n\n return ctx.webex.internal.encryption\n .encryptText(key.uri || key, object[name])\n .then((ciphertext) => {\n object[name] = ciphertext;\n });\n};\n\nconst _encryptCalendarEventPayload = (data, ctx) => {\n Object.assign(data, {encryptionKeyUrl: ctx.encryptionKeyUrl});\n\n const encryptedAttendees = data.attendees\n ? data.attendees.map((attendee) =>\n Promise.all([\n _encryptTextProp(ctx, 'displayName', data.encryptionKeyUrl, attendee),\n _encryptTextProp(ctx, 'email', data.encryptionKeyUrl, attendee),\n ])\n )\n : [];\n\n return Promise.all(\n [\n _encryptTextProp(ctx, 'subject', data.encryptionKeyUrl, data),\n _encryptTextProp(ctx, 'notes', data.encryptionKeyUrl, data),\n _encryptTextProp(ctx, 'webexOptions', data.encryptionKeyUrl, data),\n ].concat([encryptedAttendees])\n );\n};\n\nconst _encryptFreeBusyPayload = (data, ctx) => {\n Object.assign(data, {encryptionKeyUrl: ctx.encryptionKeyUrl});\n\n const promises = [];\n if (data.emails && Array.isArray(data.emails)) {\n data.emails.map((item, index) =>\n promises.push(\n ctx.webex.internal.encryption\n .encryptText(data.encryptionKeyUrl, item)\n .then((encryptText) => {\n data.emails[index] = encryptText;\n })\n )\n );\n }\n\n return Promise.all(promises);\n};\n\nconst EncryptHelper = {\n /**\n * Encrypt create / update calendar event request payload\n * @param {object} [ctx] context\n * @param {object} [data] meeting payload data\n * @returns {Promise} Resolves with encrypted request payload\n * */\n encryptCalendarEventRequest: (ctx, data) => {\n if (ctx.encryptionKeyUrl) {\n return _encryptCalendarEventPayload(data, ctx);\n }\n\n return ctx.webex.internal.encryption.kms.createUnboundKeys({count: 1}).then((keys) => {\n const key = isArray(keys) ? keys[0] : keys;\n ctx.encryptionKeyUrl = key.uri;\n\n return _encryptCalendarEventPayload(data, ctx);\n });\n },\n /**\n * Encrypt free-busy request payload, if request payload only includes the sensitive data, like email, need to encrypt these reqeust parameters, and playload includes encrypt url.\n * Otherwise, don't encrypt playload and without encrypt url,Due to calendar serivce will vaild both encrypt url and sensitive that are both present. if not, will return 400 bad reqeust to caller.\n * @param {object} [ctx] context\n * @param {object} [data] free busy payload data\n * @returns {Promise} Resolves with encrypted request payload\n * */\n encryptFreeBusyRequest: (ctx, data) => {\n if (!data.emails || !Array.isArray(data.emails)) {\n return Promise.resolve();\n }\n if (ctx.encryptionKeyUrl) {\n return _encryptFreeBusyPayload(data, ctx);\n }\n\n return ctx.webex.internal.encryption.kms.createUnboundKeys({count: 1}).then((keys) => {\n const key = isArray(keys) ? keys[0] : keys;\n ctx.encryptionKeyUrl = key.uri;\n\n return _encryptFreeBusyPayload(data, ctx);\n });\n },\n};\n\nexport default EncryptHelper;\n"],"mappings":"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"}
|
package/dist/calendar.js
CHANGED
|
@@ -7,13 +7,57 @@ _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
63
|
/**
|
|
@@ -31,33 +75,52 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
31
75
|
* Cache KMS encryptionKeyUrl
|
|
32
76
|
* */
|
|
33
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
|
+
},
|
|
34
109
|
/**
|
|
35
110
|
* WebexPlugin initialize method. This triggers once Webex has completed its
|
|
36
111
|
* initialization workflow.
|
|
37
112
|
*
|
|
38
113
|
* If the plugin is meant to perform startup actions, place them in this
|
|
39
114
|
* `initialize()` method instead of the `constructor()` method.
|
|
115
|
+
* @private
|
|
40
116
|
* @returns {void}
|
|
41
117
|
*/
|
|
42
118
|
initialize: function initialize() {
|
|
43
|
-
var
|
|
119
|
+
var _this2 = this;
|
|
44
120
|
// Used to perform actions after webex is fully qualified and ready for
|
|
45
121
|
// operation.
|
|
46
122
|
this.listenToOnce(this.webex, 'ready', function () {
|
|
47
|
-
|
|
48
|
-
_this.webex.internal.encryption.kms.createUnboundKeys({
|
|
49
|
-
count: 1
|
|
50
|
-
}).then(function (keys) {
|
|
51
|
-
var key = (0, _isArray2.default)(keys) ? keys[0] : keys;
|
|
52
|
-
_this.encryptionKeyUrl = key ? key.uri : null;
|
|
53
|
-
_this.logger.info('calendar->bind a KMS encryption key url');
|
|
54
|
-
_this.webex.internal.encryption.getKey(_this.encryptionKeyUrl, {
|
|
55
|
-
onBehalfOf: null
|
|
56
|
-
}).then(function (retrievedKey) {
|
|
57
|
-
_this.encryptionKeyUrl = retrievedKey ? retrievedKey.uri : null;
|
|
58
|
-
_this.logger.info('calendar->retrieve the KMS encryption key url and cache it');
|
|
59
|
-
});
|
|
60
|
-
});
|
|
123
|
+
_this2.prefetchEncryptionKey();
|
|
61
124
|
});
|
|
62
125
|
},
|
|
63
126
|
/**
|
|
@@ -68,7 +131,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
68
131
|
* @memberof Calendar
|
|
69
132
|
*/
|
|
70
133
|
register: function register() {
|
|
71
|
-
var
|
|
134
|
+
var _this3 = this;
|
|
72
135
|
if (!this.webex.canAuthorize) {
|
|
73
136
|
this.logger.error('calendar->register#ERROR, Unable to register, SDK cannot authorize');
|
|
74
137
|
return _promise.default.reject(new Error('SDK cannot authorize'));
|
|
@@ -78,13 +141,13 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
78
141
|
return _promise.default.resolve();
|
|
79
142
|
}
|
|
80
143
|
return this.webex.internal.device.register().then(function () {
|
|
81
|
-
return
|
|
144
|
+
return _this3.webex.internal.mercury.connect();
|
|
82
145
|
}).then(function () {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
146
|
+
_this3.listenForEvents();
|
|
147
|
+
_this3.trigger(_constants.CALENDAR_REGISTERED);
|
|
148
|
+
_this3.registered = true;
|
|
86
149
|
}).catch(function (error) {
|
|
87
|
-
|
|
150
|
+
_this3.logger.error("calendar->register#ERROR, Unable to register, ".concat(error.message));
|
|
88
151
|
return _promise.default.reject(error);
|
|
89
152
|
});
|
|
90
153
|
},
|
|
@@ -97,17 +160,17 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
97
160
|
* @memberof Calendar
|
|
98
161
|
*/
|
|
99
162
|
unregister: function unregister() {
|
|
100
|
-
var
|
|
163
|
+
var _this4 = this;
|
|
101
164
|
if (!this.registered) {
|
|
102
165
|
this.logger.info('calendar->unregister#INFO, Calendar plugin already unregistered');
|
|
103
166
|
return _promise.default.resolve();
|
|
104
167
|
}
|
|
105
168
|
this.stopListeningForEvents();
|
|
106
169
|
return this.webex.internal.mercury.disconnect().then(function () {
|
|
107
|
-
return
|
|
170
|
+
return _this4.webex.internal.device.unregister();
|
|
108
171
|
}).then(function () {
|
|
109
|
-
|
|
110
|
-
|
|
172
|
+
_this4.trigger(_constants.CALENDAR_UNREGISTERED);
|
|
173
|
+
_this4.registered = false;
|
|
111
174
|
});
|
|
112
175
|
},
|
|
113
176
|
/**
|
|
@@ -116,25 +179,25 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
116
179
|
* @private
|
|
117
180
|
*/
|
|
118
181
|
listenForEvents: function listenForEvents() {
|
|
119
|
-
var
|
|
182
|
+
var _this5 = this;
|
|
120
183
|
// Calendar mercury events listener
|
|
121
184
|
this.webex.internal.mercury.on('event:calendar.meeting.create', function (envelope) {
|
|
122
|
-
|
|
185
|
+
_this5._handleCreate(envelope.data);
|
|
123
186
|
});
|
|
124
187
|
this.webex.internal.mercury.on('event:calendar.meeting.update', function (envelope) {
|
|
125
|
-
|
|
188
|
+
_this5._handleUpdate(envelope.data);
|
|
126
189
|
});
|
|
127
190
|
this.webex.internal.mercury.on('event:calendar.meeting.create.minimal', function (envelope) {
|
|
128
|
-
|
|
191
|
+
_this5._handleCreate(envelope.data);
|
|
129
192
|
});
|
|
130
193
|
this.webex.internal.mercury.on('event:calendar.meeting.update.minimal', function (envelope) {
|
|
131
|
-
|
|
194
|
+
_this5._handleUpdate(envelope.data);
|
|
132
195
|
});
|
|
133
196
|
this.webex.internal.mercury.on('event:calendar.meeting.delete', function (envelope) {
|
|
134
|
-
|
|
197
|
+
_this5._handleDelete(envelope.data);
|
|
135
198
|
});
|
|
136
199
|
this.webex.internal.mercury.on('event:calendar.free_busy', function (envelope) {
|
|
137
|
-
|
|
200
|
+
_this5._handleFreeBusy(envelope.data);
|
|
138
201
|
});
|
|
139
202
|
},
|
|
140
203
|
/**
|
|
@@ -187,20 +250,20 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
187
250
|
* @private
|
|
188
251
|
*/
|
|
189
252
|
_handleFreeBusy: function _handleFreeBusy(data) {
|
|
190
|
-
var
|
|
253
|
+
var _this6 = this;
|
|
191
254
|
_calendarDecrypt.default.decryptFreeBusyResponse(this, data).then(function () {
|
|
192
255
|
var response = {};
|
|
193
256
|
if (data && data.calendarFreeBusyScheduleResponse) {
|
|
194
257
|
response = data.calendarFreeBusyScheduleResponse;
|
|
195
258
|
}
|
|
196
|
-
if (response && response.requestId && response.requestId in
|
|
197
|
-
|
|
259
|
+
if (response && response.requestId && response.requestId in _this6.rpcEventRequests) {
|
|
260
|
+
_this6.logger.log("webex.internal.calendar - receive requests, requestId: ".concat(response.requestId));
|
|
198
261
|
delete response.encryptionKeyUrl;
|
|
199
|
-
var resolve =
|
|
262
|
+
var resolve = _this6.rpcEventRequests[response.requestId].resolve;
|
|
200
263
|
resolve(response);
|
|
201
|
-
delete
|
|
264
|
+
delete _this6.rpcEventRequests[response.requestId];
|
|
202
265
|
} else {
|
|
203
|
-
|
|
266
|
+
_this6.logger.log('webex.internal.calendar - receive other requests.');
|
|
204
267
|
}
|
|
205
268
|
});
|
|
206
269
|
},
|
|
@@ -255,15 +318,25 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
255
318
|
});
|
|
256
319
|
},
|
|
257
320
|
/**
|
|
258
|
-
* Retrieves an array of meeting participants for the meeting
|
|
259
|
-
* @param {String}
|
|
321
|
+
* Retrieves an array of meeting participants for the meeting participantsUrl
|
|
322
|
+
* @param {String} participantsUrl
|
|
260
323
|
* @returns {Promise} Resolves with an object of meeting participants
|
|
261
324
|
*/
|
|
262
|
-
getParticipants: function getParticipants(
|
|
325
|
+
getParticipants: function getParticipants(participantsUrl) {
|
|
263
326
|
return this.request({
|
|
264
327
|
method: 'GET',
|
|
265
|
-
|
|
266
|
-
|
|
328
|
+
uri: participantsUrl
|
|
329
|
+
});
|
|
330
|
+
},
|
|
331
|
+
/**
|
|
332
|
+
* get meeting notes using notesUrl from meeting object.
|
|
333
|
+
* @param {String} notesUrl
|
|
334
|
+
* @returns {Promise} Resolves with an object of meeting notes
|
|
335
|
+
*/
|
|
336
|
+
getNotesByUrl: function getNotesByUrl(notesUrl) {
|
|
337
|
+
return this.request({
|
|
338
|
+
method: 'GET',
|
|
339
|
+
uri: notesUrl
|
|
267
340
|
});
|
|
268
341
|
},
|
|
269
342
|
/**
|
|
@@ -286,7 +359,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
286
359
|
* @returns {Promise} Resolves with an array of meetings
|
|
287
360
|
*/
|
|
288
361
|
list: function list(options) {
|
|
289
|
-
var
|
|
362
|
+
var _this7 = this;
|
|
290
363
|
options = options || {};
|
|
291
364
|
return this.webex.request({
|
|
292
365
|
method: 'GET',
|
|
@@ -298,7 +371,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
298
371
|
var promises = [];
|
|
299
372
|
meetingObjects.forEach(function (meeting) {
|
|
300
373
|
if (!meeting.encryptedParticipants) {
|
|
301
|
-
promises.push(
|
|
374
|
+
promises.push(_this7.getParticipants(meeting.participantsUrl).then(function (notesResponse) {
|
|
302
375
|
meeting.encryptedParticipants = notesResponse.body.encryptedParticipants;
|
|
303
376
|
}));
|
|
304
377
|
}
|
|
@@ -315,9 +388,9 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
315
388
|
* @returns {Promise} Resolves with creating calendar event response
|
|
316
389
|
* */
|
|
317
390
|
createCalendarEvent: function createCalendarEvent(data, query) {
|
|
318
|
-
var
|
|
391
|
+
var _this8 = this;
|
|
319
392
|
return _calendarEncrypt.default.encryptCalendarEventRequest(this, data).then(function () {
|
|
320
|
-
return
|
|
393
|
+
return _this8.request({
|
|
321
394
|
method: 'POST',
|
|
322
395
|
service: 'calendar',
|
|
323
396
|
body: data,
|
|
@@ -334,9 +407,9 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
334
407
|
* @returns {Promise} Resolves with updating calendar event response
|
|
335
408
|
* */
|
|
336
409
|
updateCalendarEvent: function updateCalendarEvent(id, data, query) {
|
|
337
|
-
var
|
|
410
|
+
var _this9 = this;
|
|
338
411
|
return _calendarEncrypt.default.encryptCalendarEventRequest(this, data).then(function () {
|
|
339
|
-
return
|
|
412
|
+
return _this9.request({
|
|
340
413
|
method: 'PATCH',
|
|
341
414
|
service: 'calendar',
|
|
342
415
|
body: data,
|
|
@@ -381,14 +454,14 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
381
454
|
* @returns {Promise} Resolves with a decrypted scheduler data
|
|
382
455
|
* */
|
|
383
456
|
getSchedulerData: function getSchedulerData(query) {
|
|
384
|
-
var
|
|
457
|
+
var _this10 = this;
|
|
385
458
|
return this.request({
|
|
386
459
|
method: 'GET',
|
|
387
460
|
service: 'calendar',
|
|
388
461
|
resource: 'schedulerData',
|
|
389
462
|
qs: query || {}
|
|
390
463
|
}).then(function (response) {
|
|
391
|
-
return _calendarDecrypt.default.decryptSchedulerDataResponse(
|
|
464
|
+
return _calendarDecrypt.default.decryptSchedulerDataResponse(_this10, response.body).then(function () {
|
|
392
465
|
return response;
|
|
393
466
|
});
|
|
394
467
|
});
|
|
@@ -400,9 +473,9 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
400
473
|
* @returns {Promise} Resolves with a decrypted response
|
|
401
474
|
* */
|
|
402
475
|
getFreeBusy: function getFreeBusy(data, query) {
|
|
403
|
-
var
|
|
476
|
+
var _this11 = this;
|
|
404
477
|
return _calendarEncrypt.default.encryptFreeBusyRequest(this, data).then(function () {
|
|
405
|
-
return
|
|
478
|
+
return _this11.request({
|
|
406
479
|
method: 'POST',
|
|
407
480
|
service: 'calendar',
|
|
408
481
|
body: data,
|
|
@@ -411,7 +484,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
411
484
|
});
|
|
412
485
|
}).then(function () {
|
|
413
486
|
return new _promise.default(function (resolve, reject) {
|
|
414
|
-
|
|
487
|
+
_this11.rpcEventRequests[data.requestId] = {
|
|
415
488
|
resolve: resolve,
|
|
416
489
|
reject: reject
|
|
417
490
|
};
|
|
@@ -420,8 +493,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
|
|
|
420
493
|
throw error;
|
|
421
494
|
});
|
|
422
495
|
},
|
|
423
|
-
version: "2.
|
|
496
|
+
version: "2.60.0-next.2"
|
|
424
497
|
});
|
|
425
|
-
var _default = Calendar;
|
|
426
|
-
exports.default = _default;
|
|
498
|
+
var _default = exports.default = Calendar;
|
|
427
499
|
//# sourceMappingURL=calendar.js.map
|
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":["/*!\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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"}
|
|
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","_this10","decryptSchedulerDataResponse","getFreeBusy","_this11","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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"}
|
package/dist/collection.js
CHANGED
|
@@ -7,7 +7,7 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
|
|
10
|
-
var
|
|
10
|
+
var _lodash = require("lodash");
|
|
11
11
|
var _util = _interopRequireDefault(require("./util"));
|
|
12
12
|
var _constants = require("./constants");
|
|
13
13
|
/**
|
|
@@ -34,7 +34,7 @@ var CalendarCollection = {
|
|
|
34
34
|
*/
|
|
35
35
|
getBy: function getBy(key, value) {
|
|
36
36
|
if (key && value) {
|
|
37
|
-
return (0,
|
|
37
|
+
return (0, _lodash.find)(this.items, function (item) {
|
|
38
38
|
return item[key] === value;
|
|
39
39
|
});
|
|
40
40
|
}
|
|
@@ -96,6 +96,5 @@ var CalendarCollection = {
|
|
|
96
96
|
return (0, _values.default)(this.items);
|
|
97
97
|
}
|
|
98
98
|
};
|
|
99
|
-
var _default = CalendarCollection;
|
|
100
|
-
exports.default = _default;
|
|
99
|
+
var _default = exports.default = CalendarCollection;
|
|
101
100
|
//# sourceMappingURL=collection.js.map
|
package/dist/collection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_lodash","require","_util","_interopRequireDefault","_constants","CalendarCollection","namespace","CALENDAR","items","get","id","getBy","key","value","find","item","set","itemId","meeting","CalendarUtil","calculateEndTime","reset","remove","setAll","_this","forEach","getAll","_values","default","_default","exports"],"sources":["collection.js"],"sourcesContent":["import {find} from 'lodash';\n\nimport CalendarUtil from './util';\nimport {CALENDAR} from './constants';\n/**\n * @class CalendarCollection\n */\nconst CalendarCollection = {\n namespace: CALENDAR,\n items: {},\n /**\n * @param {String} id calendar ID\n * @returns {Any} Calendar Item specifc to that id\n * @private\n * @memberof CalendarCollection\n */\n get(id) {\n return this.items[id];\n },\n\n /**\n * @param {String} key any key and the corresponding calendar Item\n * @param {String} value any values corresponding to calendar item\n * @returns {Any} returns whatever is being stuffed into the collection\n * @private\n * @memberof CalendarCollection\n */\n getBy(key, value) {\n if (key && value) {\n return find(this.items, (item) => item[key] === value);\n }\n\n return null;\n },\n\n /**\n * @param {Object} item CalendarObject passed to the collection\n * @returns {Any} returns calender id whats get set\n * @private\n * @memberof CalendarCollection\n */\n set(item) {\n const itemId = item.id;\n const meeting = CalendarUtil.calculateEndTime(item);\n\n this.items[itemId] = meeting;\n\n return itemId;\n },\n\n /**\n * resets all the values in the calendarcollection\n * @returns {undefined}\n * @private\n * @memberof CalendarCollection\n */\n reset() {\n this.items = {};\n },\n\n /**\n * @param {Id} id is the id for the calendar item to be removed\n * @returns {Any} calendar item which got removed\n * @private\n * @memberof CalendarCollection\n */\n remove(id) {\n const meeting = this.get(id);\n\n delete this.items[id];\n\n return meeting;\n },\n\n /**\n * sets all the item passed to the collection\n * @param {Array} items array of calendar items\n * @private\n * @returns {undefined}\n * @memberof CalendarCollection\n */\n setAll(items) {\n items.forEach((item) => {\n this.set(item);\n });\n },\n\n /**\n * gets all the calendar stored in the collection\n * @param {Array} items array of calendar items\n * @private\n * @returns {Array} returns an array of calendar items\n * @memberof CalendarCollection\n */\n getAll() {\n return Object.values(this.items);\n },\n};\n\nexport default CalendarCollection;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA;AACA;AACA;AACA,IAAMI,kBAAkB,GAAG;EACzBC,SAAS,EAAEC,mBAAQ;EACnBC,KAAK,EAAE,CAAC,CAAC;EACT;AACF;AACA;AACA;AACA;AACA;EACEC,GAAG,WAAAA,IAACC,EAAE,EAAE;IACN,OAAO,IAAI,CAACF,KAAK,CAACE,EAAE,CAAC;EACvB,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,KAAK,WAAAA,MAACC,GAAG,EAAEC,KAAK,EAAE;IAChB,IAAID,GAAG,IAAIC,KAAK,EAAE;MAChB,OAAO,IAAAC,YAAI,EAAC,IAAI,CAACN,KAAK,EAAE,UAACO,IAAI;QAAA,OAAKA,IAAI,CAACH,GAAG,CAAC,KAAKC,KAAK;MAAA,EAAC;IACxD;IAEA,OAAO,IAAI;EACb,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEG,GAAG,WAAAA,IAACD,IAAI,EAAE;IACR,IAAME,MAAM,GAAGF,IAAI,CAACL,EAAE;IACtB,IAAMQ,OAAO,GAAGC,aAAY,CAACC,gBAAgB,CAACL,IAAI,CAAC;IAEnD,IAAI,CAACP,KAAK,CAACS,MAAM,CAAC,GAAGC,OAAO;IAE5B,OAAOD,MAAM;EACf,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEI,KAAK,WAAAA,MAAA,EAAG;IACN,IAAI,CAACb,KAAK,GAAG,CAAC,CAAC;EACjB,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEc,MAAM,WAAAA,OAACZ,EAAE,EAAE;IACT,IAAMQ,OAAO,GAAG,IAAI,CAACT,GAAG,CAACC,EAAE,CAAC;IAE5B,OAAO,IAAI,CAACF,KAAK,CAACE,EAAE,CAAC;IAErB,OAAOQ,OAAO;EAChB,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEK,MAAM,WAAAA,OAACf,KAAK,EAAE;IAAA,IAAAgB,KAAA;IACZhB,KAAK,CAACiB,OAAO,CAAC,UAACV,IAAI,EAAK;MACtBS,KAAI,CAACR,GAAG,CAACD,IAAI,CAAC;IAChB,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEW,MAAM,WAAAA,OAAA,EAAG;IACP,OAAO,IAAAC,OAAA,CAAAC,OAAA,EAAc,IAAI,CAACpB,KAAK,CAAC;EAClC;AACF,CAAC;AAAC,IAAAqB,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAEavB,kBAAkB"}
|
package/dist/config.js
CHANGED
|
@@ -8,11 +8,10 @@ exports.default = void 0;
|
|
|
8
8
|
/*!
|
|
9
9
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
10
10
|
*/
|
|
11
|
-
var _default = {
|
|
11
|
+
var _default = exports.default = {
|
|
12
12
|
calendar: {
|
|
13
13
|
fromDate: new Date(new Date().setDate(new Date().getDate() - 1)),
|
|
14
14
|
toDate: new Date(new Date().setDate(new Date().getDate() + 7))
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
|
-
exports.default = _default;
|
|
18
17
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_default","calendar","fromDate","Date","setDate","getDate","toDate"
|
|
1
|
+
{"version":3,"names":["_default","exports","default","calendar","fromDate","Date","setDate","getDate","toDate"],"sources":["config.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport default {\n calendar: {\n fromDate: new Date(new Date().setDate(new Date().getDate() - 1)),\n toDate: new Date(new Date().setDate(new Date().getDate() + 7)),\n },\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAFA,IAAAA,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAIe;EACbC,QAAQ,EAAE;IACRC,QAAQ,EAAE,IAAIC,IAAI,CAAC,IAAIA,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,IAAID,IAAI,CAAC,CAAC,CAACE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChEC,MAAM,EAAE,IAAIH,IAAI,CAAC,IAAIA,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,IAAID,IAAI,CAAC,CAAC,CAACE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EAC/D;AACF,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -5,16 +5,10 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.CALENDAR_UPDATED = exports.CALENDAR_UNREGISTERED = exports.CALENDAR_REGISTERED = exports.CALENDAR_DELETE = exports.CALENDAR_CREATE = exports.CALENDAR = void 0;
|
|
8
|
-
var CALENDAR_REGISTERED = 'calendar:registered';
|
|
9
|
-
exports.
|
|
10
|
-
var
|
|
11
|
-
exports.
|
|
12
|
-
var
|
|
13
|
-
exports.
|
|
14
|
-
var CALENDAR_DELETE = 'calendar:delete';
|
|
15
|
-
exports.CALENDAR_DELETE = CALENDAR_DELETE;
|
|
16
|
-
var CALENDAR_CREATE = 'calendar:create';
|
|
17
|
-
exports.CALENDAR_CREATE = CALENDAR_CREATE;
|
|
18
|
-
var CALENDAR = 'CALENDAR';
|
|
19
|
-
exports.CALENDAR = CALENDAR;
|
|
8
|
+
var CALENDAR_REGISTERED = exports.CALENDAR_REGISTERED = 'calendar:registered';
|
|
9
|
+
var CALENDAR_UNREGISTERED = exports.CALENDAR_UNREGISTERED = 'calendar:unregistered';
|
|
10
|
+
var CALENDAR_UPDATED = exports.CALENDAR_UPDATED = 'calendar:update';
|
|
11
|
+
var CALENDAR_DELETE = exports.CALENDAR_DELETE = 'calendar:delete';
|
|
12
|
+
var CALENDAR_CREATE = exports.CALENDAR_CREATE = 'calendar:create';
|
|
13
|
+
var CALENDAR = exports.CALENDAR = 'CALENDAR';
|
|
20
14
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CALENDAR_REGISTERED","exports","CALENDAR_UNREGISTERED","CALENDAR_UPDATED","CALENDAR_DELETE","CALENDAR_CREATE","CALENDAR"],"sources":["constants.js"],"sourcesContent":["export const CALENDAR_REGISTERED = 'calendar:registered';\nexport const CALENDAR_UNREGISTERED = 'calendar:unregistered';\nexport const CALENDAR_UPDATED = 'calendar:update';\nexport const CALENDAR_DELETE = 'calendar:delete';\nexport const CALENDAR_CREATE = 'calendar:create';\nexport const CALENDAR = 'CALENDAR';\n"],"mappings":";;;;;;;AAAO,IAAMA,mBAAmB,
|
|
1
|
+
{"version":3,"names":["CALENDAR_REGISTERED","exports","CALENDAR_UNREGISTERED","CALENDAR_UPDATED","CALENDAR_DELETE","CALENDAR_CREATE","CALENDAR"],"sources":["constants.js"],"sourcesContent":["export const CALENDAR_REGISTERED = 'calendar:registered';\nexport const CALENDAR_UNREGISTERED = 'calendar:unregistered';\nexport const CALENDAR_UPDATED = 'calendar:update';\nexport const CALENDAR_DELETE = 'calendar:delete';\nexport const CALENDAR_CREATE = 'calendar:create';\nexport const CALENDAR = 'CALENDAR';\n"],"mappings":";;;;;;;AAAO,IAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,qBAAqB;AACjD,IAAME,qBAAqB,GAAAD,OAAA,CAAAC,qBAAA,GAAG,uBAAuB;AACrD,IAAMC,gBAAgB,GAAAF,OAAA,CAAAE,gBAAA,GAAG,iBAAiB;AAC1C,IAAMC,eAAe,GAAAH,OAAA,CAAAG,eAAA,GAAG,iBAAiB;AACzC,IAAMC,eAAe,GAAAJ,OAAA,CAAAI,eAAA,GAAG,iBAAiB;AACzC,IAAMC,QAAQ,GAAAL,OAAA,CAAAK,QAAA,GAAG,UAAU"}
|
package/dist/index.js
CHANGED
|
@@ -12,11 +12,11 @@ _Object$defineProperty(exports, "default", {
|
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
14
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
15
|
-
var _has2 = _interopRequireDefault(require("lodash/has"));
|
|
16
15
|
require("@webex/internal-plugin-device");
|
|
17
16
|
require("@webex/internal-plugin-encryption");
|
|
18
17
|
require("@webex/internal-plugin-conversation");
|
|
19
18
|
var _webexCore = require("@webex/webex-core");
|
|
19
|
+
var _lodash = require("lodash");
|
|
20
20
|
var _calendar = _interopRequireDefault(require("./calendar"));
|
|
21
21
|
var _config = _interopRequireDefault(require("./config"));
|
|
22
22
|
/*!
|
|
@@ -30,7 +30,7 @@ var _config = _interopRequireDefault(require("./config"));
|
|
|
30
30
|
name: 'transformMeetingNotes',
|
|
31
31
|
direction: 'inbound',
|
|
32
32
|
test: function test(ctx, response) {
|
|
33
|
-
return _promise.default.resolve((0,
|
|
33
|
+
return _promise.default.resolve((0, _lodash.has)(response, 'body.encryptedNotes') && !(response.options && response.options.service === 'calendar' && response.options.method === 'GET' && response.options.resource === 'schedulerData'));
|
|
34
34
|
},
|
|
35
35
|
extract: function extract(response) {
|
|
36
36
|
return _promise.default.resolve(response.body);
|
|
@@ -39,7 +39,7 @@ var _config = _interopRequireDefault(require("./config"));
|
|
|
39
39
|
name: 'transformMeetingParticipants',
|
|
40
40
|
direction: 'inbound',
|
|
41
41
|
test: function test(ctx, response) {
|
|
42
|
-
return _promise.default.resolve((0,
|
|
42
|
+
return _promise.default.resolve((0, _lodash.has)(response, 'body.encryptedParticipants') && !(response.options && response.options.service === 'calendar' && response.options.method === 'GET' && response.options.resource === 'schedulerData'));
|
|
43
43
|
},
|
|
44
44
|
extract: function extract(response) {
|
|
45
45
|
return _promise.default.resolve(response.body);
|
|
@@ -48,7 +48,7 @@ var _config = _interopRequireDefault(require("./config"));
|
|
|
48
48
|
name: 'transformMeetingArray',
|
|
49
49
|
direction: 'inbound',
|
|
50
50
|
test: function test(ctx, response) {
|
|
51
|
-
return _promise.default.resolve((0,
|
|
51
|
+
return _promise.default.resolve((0, _lodash.has)(response, 'body.items[0].seriesId'));
|
|
52
52
|
},
|
|
53
53
|
extract: function extract(response) {
|
|
54
54
|
return _promise.default.resolve(response.body.items);
|
|
@@ -57,7 +57,7 @@ var _config = _interopRequireDefault(require("./config"));
|
|
|
57
57
|
name: 'transformMeeting',
|
|
58
58
|
direction: 'inbound',
|
|
59
59
|
test: function test(ctx, response) {
|
|
60
|
-
return _promise.default.resolve((0,
|
|
60
|
+
return _promise.default.resolve((0, _lodash.has)(response, 'body.seriesId') && !(response.options && response.options.service === 'calendar' && response.options.method === 'GET' && response.options.resource === 'schedulerData'));
|
|
61
61
|
},
|
|
62
62
|
extract: function extract(response) {
|
|
63
63
|
return _promise.default.resolve(response.body);
|
|
@@ -66,7 +66,7 @@ var _config = _interopRequireDefault(require("./config"));
|
|
|
66
66
|
name: 'transformMeeting',
|
|
67
67
|
direction: 'inbound',
|
|
68
68
|
test: function test(ctx, response) {
|
|
69
|
-
return _promise.default.resolve((0,
|
|
69
|
+
return _promise.default.resolve((0, _lodash.has)(response, 'calendarMeetingExternal'));
|
|
70
70
|
},
|
|
71
71
|
extract: function extract(response) {
|
|
72
72
|
return _promise.default.resolve(response.calendarMeetingExternal);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["require","_webexCore","_calendar","_interopRequireDefault","_config","registerInternalPlugin","Calendar","config","payloadTransformer","predicates","name","direction","test","ctx","response","_promise","default","resolve","_has2","options","service","method","resource","extract","body","items","calendarMeetingExternal","transforms","fn","array","all","map","item","transform","object","encryptionKeyUrl","decryptedParticipants","encryptedParticipants","participant","decryptedMeetingJoinInfo","meetingJoinInfo","decryptedOrganizer","encryptedOrganizer","concat"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-device';\nimport '@webex/internal-plugin-encryption';\nimport '@webex/internal-plugin-conversation';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {has} from 'lodash';\n\nimport Calendar from './calendar';\nimport config from './config';\n\nregisterInternalPlugin('calendar', Calendar, {\n config,\n payloadTransformer: {\n predicates: [\n {\n name: 'transformMeetingNotes',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(\n has(response, 'body.encryptedNotes') &&\n !(\n response.options &&\n response.options.service === 'calendar' &&\n response.options.method === 'GET' &&\n response.options.resource === 'schedulerData'\n )\n );\n },\n extract(response) {\n return Promise.resolve(response.body);\n },\n },\n {\n name: 'transformMeetingParticipants',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(\n has(response, 'body.encryptedParticipants') &&\n !(\n response.options &&\n response.options.service === 'calendar' &&\n response.options.method === 'GET' &&\n response.options.resource === 'schedulerData'\n )\n );\n },\n extract(response) {\n return Promise.resolve(response.body);\n },\n },\n {\n name: 'transformMeetingArray',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(has(response, 'body.items[0].seriesId'));\n },\n extract(response) {\n return Promise.resolve(response.body.items);\n },\n },\n {\n name: 'transformMeeting',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(\n has(response, 'body.seriesId') &&\n !(\n response.options &&\n response.options.service === 'calendar' &&\n response.options.method === 'GET' &&\n response.options.resource === 'schedulerData'\n )\n );\n },\n extract(response) {\n return Promise.resolve(response.body);\n },\n },\n {\n name: 'transformMeeting',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(has(response, 'calendarMeetingExternal'));\n },\n extract(response) {\n return Promise.resolve(response.calendarMeetingExternal);\n },\n },\n ],\n transforms: [\n {\n name: 'transformMeetingArray',\n fn(ctx, array) {\n return Promise.all(array.map((item) => ctx.transform('transformMeeting', item)));\n },\n },\n {\n name: 'transformMeeting',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.encryptionKeyUrl) {\n return Promise.resolve();\n }\n\n // Decrypt participant properties if meeting object contains participants\n const decryptedParticipants = object.encryptedParticipants\n ? object.encryptedParticipants.map((participant) =>\n Promise.all([\n ctx.transform(\n 'decryptTextProp',\n 'encryptedEmailAddress',\n object.encryptionKeyUrl,\n participant\n ),\n ctx.transform(\n 'decryptTextProp',\n 'encryptedName',\n object.encryptionKeyUrl,\n participant\n ),\n ])\n )\n : [];\n\n // Decrypt meetingJoinInfo properties if meeting object contains meetingJoinInfo\n const decryptedMeetingJoinInfo = object.meetingJoinInfo\n ? Promise.all([\n ctx.transform(\n 'decryptTextProp',\n 'meetingJoinURI',\n object.encryptionKeyUrl,\n object.meetingJoinInfo\n ),\n ctx.transform(\n 'decryptTextProp',\n 'meetingJoinURL',\n object.encryptionKeyUrl,\n object.meetingJoinInfo\n ),\n ])\n : [];\n\n const decryptedOrganizer = object.encryptedOrganizer\n ? Promise.all([\n ctx.transform(\n 'decryptTextProp',\n 'encryptedEmailAddress',\n object.encryptionKeyUrl,\n object.encryptedOrganizer\n ),\n ctx.transform(\n 'decryptTextProp',\n 'encryptedName',\n object.encryptionKeyUrl,\n object.encryptedOrganizer\n ),\n ])\n : [];\n\n return Promise.all(\n [\n ctx.transform('decryptTextProp', 'encryptedSubject', object.encryptionKeyUrl, object),\n ctx.transform(\n 'decryptTextProp',\n 'encryptedLocation',\n object.encryptionKeyUrl,\n object\n ),\n ctx.transform('decryptTextProp', 'encryptedNotes', object.encryptionKeyUrl, object),\n ctx.transform('decryptTextProp', 'webexURI', object.encryptionKeyUrl, object),\n ctx.transform('decryptTextProp', 'webexURL', object.encryptionKeyUrl, object),\n ctx.transform('decryptTextProp', 'spaceMeetURL', object.encryptionKeyUrl, object),\n ctx.transform('decryptTextProp', 'spaceURI', object.encryptionKeyUrl, object),\n ctx.transform('decryptTextProp', 'spaceURL', object.encryptionKeyUrl, object),\n ].concat(decryptedOrganizer, decryptedParticipants, decryptedMeetingJoinInfo)\n );\n },\n },\n {\n name: 'transformMeetingNotes',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.encryptionKeyUrl) {\n return Promise.resolve();\n }\n\n return Promise.all([\n ctx.transform('decryptTextProp', 'encryptedNotes', object.encryptionKeyUrl, object),\n ]);\n },\n },\n {\n name: 'transformMeetingParticipants',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.encryptionKeyUrl || !object.encryptedParticipants) {\n return Promise.resolve();\n }\n\n // Decrypt participant properties\n const decryptedParticipants = object.encryptedParticipants.map((participant) =>\n Promise.all([\n ctx.transform(\n 'decryptTextProp',\n 'encryptedEmailAddress',\n object.encryptionKeyUrl,\n participant\n ),\n ctx.transform(\n 'decryptTextProp',\n 'encryptedName',\n object.encryptionKeyUrl,\n participant\n ),\n ])\n );\n\n return Promise.all(decryptedParticipants);\n },\n },\n ],\n },\n});\n\nexport {default} from './calendar';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["require","_webexCore","_lodash","_calendar","_interopRequireDefault","_config","registerInternalPlugin","Calendar","config","payloadTransformer","predicates","name","direction","test","ctx","response","_promise","default","resolve","has","options","service","method","resource","extract","body","items","calendarMeetingExternal","transforms","fn","array","all","map","item","transform","object","encryptionKeyUrl","decryptedParticipants","encryptedParticipants","participant","decryptedMeetingJoinInfo","meetingJoinInfo","decryptedOrganizer","encryptedOrganizer","concat"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-device';\nimport '@webex/internal-plugin-encryption';\nimport '@webex/internal-plugin-conversation';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {has} from 'lodash';\n\nimport Calendar from './calendar';\nimport config from './config';\n\nregisterInternalPlugin('calendar', Calendar, {\n config,\n payloadTransformer: {\n predicates: [\n {\n name: 'transformMeetingNotes',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(\n has(response, 'body.encryptedNotes') &&\n !(\n response.options &&\n response.options.service === 'calendar' &&\n response.options.method === 'GET' &&\n response.options.resource === 'schedulerData'\n )\n );\n },\n extract(response) {\n return Promise.resolve(response.body);\n },\n },\n {\n name: 'transformMeetingParticipants',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(\n has(response, 'body.encryptedParticipants') &&\n !(\n response.options &&\n response.options.service === 'calendar' &&\n response.options.method === 'GET' &&\n response.options.resource === 'schedulerData'\n )\n );\n },\n extract(response) {\n return Promise.resolve(response.body);\n },\n },\n {\n name: 'transformMeetingArray',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(has(response, 'body.items[0].seriesId'));\n },\n extract(response) {\n return Promise.resolve(response.body.items);\n },\n },\n {\n name: 'transformMeeting',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(\n has(response, 'body.seriesId') &&\n !(\n response.options &&\n response.options.service === 'calendar' &&\n response.options.method === 'GET' &&\n response.options.resource === 'schedulerData'\n )\n );\n },\n extract(response) {\n return Promise.resolve(response.body);\n },\n },\n {\n name: 'transformMeeting',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(has(response, 'calendarMeetingExternal'));\n },\n extract(response) {\n return Promise.resolve(response.calendarMeetingExternal);\n },\n },\n ],\n transforms: [\n {\n name: 'transformMeetingArray',\n fn(ctx, array) {\n return Promise.all(array.map((item) => ctx.transform('transformMeeting', item)));\n },\n },\n {\n name: 'transformMeeting',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.encryptionKeyUrl) {\n return Promise.resolve();\n }\n\n // Decrypt participant properties if meeting object contains participants\n const decryptedParticipants = object.encryptedParticipants\n ? object.encryptedParticipants.map((participant) =>\n Promise.all([\n ctx.transform(\n 'decryptTextProp',\n 'encryptedEmailAddress',\n object.encryptionKeyUrl,\n participant\n ),\n ctx.transform(\n 'decryptTextProp',\n 'encryptedName',\n object.encryptionKeyUrl,\n participant\n ),\n ])\n )\n : [];\n\n // Decrypt meetingJoinInfo properties if meeting object contains meetingJoinInfo\n const decryptedMeetingJoinInfo = object.meetingJoinInfo\n ? Promise.all([\n ctx.transform(\n 'decryptTextProp',\n 'meetingJoinURI',\n object.encryptionKeyUrl,\n object.meetingJoinInfo\n ),\n ctx.transform(\n 'decryptTextProp',\n 'meetingJoinURL',\n object.encryptionKeyUrl,\n object.meetingJoinInfo\n ),\n ])\n : [];\n\n const decryptedOrganizer = object.encryptedOrganizer\n ? Promise.all([\n ctx.transform(\n 'decryptTextProp',\n 'encryptedEmailAddress',\n object.encryptionKeyUrl,\n object.encryptedOrganizer\n ),\n ctx.transform(\n 'decryptTextProp',\n 'encryptedName',\n object.encryptionKeyUrl,\n object.encryptedOrganizer\n ),\n ])\n : [];\n\n return Promise.all(\n [\n ctx.transform('decryptTextProp', 'encryptedSubject', object.encryptionKeyUrl, object),\n ctx.transform(\n 'decryptTextProp',\n 'encryptedLocation',\n object.encryptionKeyUrl,\n object\n ),\n ctx.transform('decryptTextProp', 'encryptedNotes', object.encryptionKeyUrl, object),\n ctx.transform('decryptTextProp', 'webexURI', object.encryptionKeyUrl, object),\n ctx.transform('decryptTextProp', 'webexURL', object.encryptionKeyUrl, object),\n ctx.transform('decryptTextProp', 'spaceMeetURL', object.encryptionKeyUrl, object),\n ctx.transform('decryptTextProp', 'spaceURI', object.encryptionKeyUrl, object),\n ctx.transform('decryptTextProp', 'spaceURL', object.encryptionKeyUrl, object),\n ].concat(decryptedOrganizer, decryptedParticipants, decryptedMeetingJoinInfo)\n );\n },\n },\n {\n name: 'transformMeetingNotes',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.encryptionKeyUrl) {\n return Promise.resolve();\n }\n\n return Promise.all([\n ctx.transform('decryptTextProp', 'encryptedNotes', object.encryptionKeyUrl, object),\n ]);\n },\n },\n {\n name: 'transformMeetingParticipants',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.encryptionKeyUrl || !object.encryptedParticipants) {\n return Promise.resolve();\n }\n\n // Decrypt participant properties\n const decryptedParticipants = object.encryptedParticipants.map((participant) =>\n Promise.all([\n ctx.transform(\n 'decryptTextProp',\n 'encryptedEmailAddress',\n object.encryptionKeyUrl,\n participant\n ),\n ctx.transform(\n 'decryptTextProp',\n 'encryptedName',\n object.encryptionKeyUrl,\n participant\n ),\n ])\n );\n\n return Promise.all(decryptedParticipants);\n },\n },\n ],\n },\n});\n\nexport {default} from './calendar';\n"],"mappings":"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"}
|
package/dist/util.js
CHANGED
|
@@ -12,8 +12,8 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
12
12
|
});
|
|
13
13
|
exports.default = void 0;
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
15
|
-
function ownKeys(
|
|
16
|
-
function _objectSpread(
|
|
15
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
17
|
var CalendarUtil = {
|
|
18
18
|
// calculate the end time for the meeting based on the duration so it's stored on
|
|
19
19
|
// the scheduled meeting item, that way client can display start and end without
|
|
@@ -33,6 +33,5 @@ var CalendarUtil = {
|
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
|
-
var _default = CalendarUtil;
|
|
37
|
-
exports.default = _default;
|
|
36
|
+
var _default = exports.default = CalendarUtil;
|
|
38
37
|
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CalendarUtil","calculateEndTime","item","_objectSpread","endTime","Date","start","getTime","durationMinutes","_default","exports","default"],"sources":["util.js"],"sourcesContent":["const CalendarUtil = {\n // calculate the end time for the meeting based on the duration so it's stored on\n // the scheduled meeting item, that way client can display start and end without\n // calculation on their side\n // gets the start time from server, and the duration, and reformats\n /**\n * calculates the end time for meeting\n * @param {Object} item the locus.host property\n * @param {Object} item.start start time of the meeting\n * @param {Object} item.duration duration of the meeting\n * @returns {Object} end time of the meeting\n * @memberof CalendarUtil\n */\n calculateEndTime(item) {\n return {\n ...item,\n endTime: new Date(new Date(item.start).getTime() + item.durationMinutes * 60000),\n };\n },\n};\n\nexport default CalendarUtil;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAMA,YAAY,GAAG;EACnB;EACA;EACA;EACA;EACA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,gBAAgB,WAAAA,iBAACC,IAAI,EAAE;IACrB,OAAAC,aAAA,CAAAA,aAAA,KACKD,IAAI;MACPE,OAAO,EAAE,IAAIC,IAAI,CAAC,IAAIA,IAAI,CAACH,IAAI,CAACI,KAAK,CAAC,CAACC,OAAO,
|
|
1
|
+
{"version":3,"names":["CalendarUtil","calculateEndTime","item","_objectSpread","endTime","Date","start","getTime","durationMinutes","_default","exports","default"],"sources":["util.js"],"sourcesContent":["const CalendarUtil = {\n // calculate the end time for the meeting based on the duration so it's stored on\n // the scheduled meeting item, that way client can display start and end without\n // calculation on their side\n // gets the start time from server, and the duration, and reformats\n /**\n * calculates the end time for meeting\n * @param {Object} item the locus.host property\n * @param {Object} item.start start time of the meeting\n * @param {Object} item.duration duration of the meeting\n * @returns {Object} end time of the meeting\n * @memberof CalendarUtil\n */\n calculateEndTime(item) {\n return {\n ...item,\n endTime: new Date(new Date(item.start).getTime() + item.durationMinutes * 60000),\n };\n },\n};\n\nexport default CalendarUtil;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAMA,YAAY,GAAG;EACnB;EACA;EACA;EACA;EACA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,gBAAgB,WAAAA,iBAACC,IAAI,EAAE;IACrB,OAAAC,aAAA,CAAAA,aAAA,KACKD,IAAI;MACPE,OAAO,EAAE,IAAIC,IAAI,CAAC,IAAIA,IAAI,CAACH,IAAI,CAACI,KAAK,CAAC,CAACC,OAAO,CAAC,CAAC,GAAGL,IAAI,CAACM,eAAe,GAAG,KAAK;IAAC;EAEpF;AACF,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaX,YAAY"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"directory": "packages/@webex/internal-plugin-calendar"
|
|
12
12
|
},
|
|
13
13
|
"engines": {
|
|
14
|
-
"node": ">=
|
|
14
|
+
"node": ">=16"
|
|
15
15
|
},
|
|
16
16
|
"browserify": {
|
|
17
17
|
"transform": [
|
|
@@ -19,37 +19,38 @@
|
|
|
19
19
|
"envify"
|
|
20
20
|
]
|
|
21
21
|
},
|
|
22
|
-
"version": "2.59.8",
|
|
23
22
|
"devDependencies": {
|
|
24
23
|
"@babel/core": "^7.17.10",
|
|
25
|
-
"@webex/babel-config-legacy": "
|
|
26
|
-
"@webex/eslint-config-legacy": "
|
|
27
|
-
"@webex/jest-config-legacy": "
|
|
28
|
-
"@webex/legacy-tools": "
|
|
29
|
-
"@webex/test-helper-chai": "2.
|
|
30
|
-
"@webex/test-helper-mocha": "2.
|
|
31
|
-
"@webex/test-helper-mock-webex": "2.
|
|
32
|
-
"@webex/test-helper-retry": "2.
|
|
33
|
-
"@webex/test-helper-test-users": "2.
|
|
24
|
+
"@webex/babel-config-legacy": "^0.0.0",
|
|
25
|
+
"@webex/eslint-config-legacy": "^0.0.0",
|
|
26
|
+
"@webex/jest-config-legacy": "^0.0.0",
|
|
27
|
+
"@webex/legacy-tools": "^0.0.0",
|
|
28
|
+
"@webex/test-helper-chai": "^2.60.0-next.2",
|
|
29
|
+
"@webex/test-helper-mocha": "^2.60.0-next.2",
|
|
30
|
+
"@webex/test-helper-mock-webex": "^2.60.0-next.2",
|
|
31
|
+
"@webex/test-helper-retry": "^2.60.0-next.2",
|
|
32
|
+
"@webex/test-helper-test-users": "^2.60.0-next.2",
|
|
34
33
|
"eslint": "^8.24.0",
|
|
35
34
|
"prettier": "^2.7.1",
|
|
36
35
|
"sinon": "^9.2.4"
|
|
37
36
|
},
|
|
38
37
|
"dependencies": {
|
|
39
|
-
"@webex/internal-plugin-conversation": "2.
|
|
40
|
-
"@webex/internal-plugin-device": "2.
|
|
41
|
-
"@webex/internal-plugin-encryption": "2.
|
|
42
|
-
"@webex/webex-core": "2.
|
|
38
|
+
"@webex/internal-plugin-conversation": "^2.60.0-next.2",
|
|
39
|
+
"@webex/internal-plugin-device": "^2.60.0-next.2",
|
|
40
|
+
"@webex/internal-plugin-encryption": "^2.60.0-next.2",
|
|
41
|
+
"@webex/webex-core": "^2.60.0-next.2",
|
|
43
42
|
"lodash": "^4.17.21",
|
|
44
43
|
"uuid": "^3.3.2"
|
|
45
44
|
},
|
|
46
45
|
"scripts": {
|
|
47
46
|
"build": "yarn build:src",
|
|
48
47
|
"build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
|
|
48
|
+
"deploy:npm": "yarn npm publish",
|
|
49
49
|
"test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
|
|
50
50
|
"test:browser": "webex-legacy-tools test --integration --unit --runner karma",
|
|
51
51
|
"test:integration": "webex-legacy-tools test --integration --runner mocha",
|
|
52
52
|
"test:style": "eslint ./src/**/*.*",
|
|
53
53
|
"test:unit": "webex-legacy-tools test --unit --runner jest"
|
|
54
|
-
}
|
|
55
|
-
|
|
54
|
+
},
|
|
55
|
+
"version": "2.60.0-next.2"
|
|
56
|
+
}
|
package/src/calendar.js
CHANGED
|
@@ -78,30 +78,52 @@ const Calendar = WebexPlugin.extend({
|
|
|
78
78
|
* */
|
|
79
79
|
encryptionKeyUrl: null,
|
|
80
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
|
+
|
|
81
113
|
/**
|
|
82
114
|
* WebexPlugin initialize method. This triggers once Webex has completed its
|
|
83
115
|
* initialization workflow.
|
|
84
116
|
*
|
|
85
117
|
* If the plugin is meant to perform startup actions, place them in this
|
|
86
118
|
* `initialize()` method instead of the `constructor()` method.
|
|
119
|
+
* @private
|
|
87
120
|
* @returns {void}
|
|
88
121
|
*/
|
|
89
122
|
initialize() {
|
|
90
123
|
// Used to perform actions after webex is fully qualified and ready for
|
|
91
124
|
// operation.
|
|
92
125
|
this.listenToOnce(this.webex, 'ready', () => {
|
|
93
|
-
|
|
94
|
-
this.webex.internal.encryption.kms.createUnboundKeys({count: 1}).then((keys) => {
|
|
95
|
-
const key = isArray(keys) ? keys[0] : keys;
|
|
96
|
-
this.encryptionKeyUrl = key ? key.uri : null;
|
|
97
|
-
this.logger.info('calendar->bind a KMS encryption key url');
|
|
98
|
-
this.webex.internal.encryption
|
|
99
|
-
.getKey(this.encryptionKeyUrl, {onBehalfOf: null})
|
|
100
|
-
.then((retrievedKey) => {
|
|
101
|
-
this.encryptionKeyUrl = retrievedKey ? retrievedKey.uri : null;
|
|
102
|
-
this.logger.info('calendar->retrieve the KMS encryption key url and cache it');
|
|
103
|
-
});
|
|
104
|
-
});
|
|
126
|
+
this.prefetchEncryptionKey();
|
|
105
127
|
});
|
|
106
128
|
},
|
|
107
129
|
|
|
@@ -315,15 +337,26 @@ const Calendar = WebexPlugin.extend({
|
|
|
315
337
|
},
|
|
316
338
|
|
|
317
339
|
/**
|
|
318
|
-
* Retrieves an array of meeting participants for the meeting
|
|
319
|
-
* @param {String}
|
|
340
|
+
* Retrieves an array of meeting participants for the meeting participantsUrl
|
|
341
|
+
* @param {String} participantsUrl
|
|
320
342
|
* @returns {Promise} Resolves with an object of meeting participants
|
|
321
343
|
*/
|
|
322
|
-
getParticipants(
|
|
344
|
+
getParticipants(participantsUrl) {
|
|
323
345
|
return this.request({
|
|
324
346
|
method: 'GET',
|
|
325
|
-
|
|
326
|
-
|
|
347
|
+
uri: participantsUrl,
|
|
348
|
+
});
|
|
349
|
+
},
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* get meeting notes using notesUrl from meeting object.
|
|
353
|
+
* @param {String} notesUrl
|
|
354
|
+
* @returns {Promise} Resolves with an object of meeting notes
|
|
355
|
+
*/
|
|
356
|
+
getNotesByUrl(notesUrl) {
|
|
357
|
+
return this.request({
|
|
358
|
+
method: 'GET',
|
|
359
|
+
uri: notesUrl,
|
|
327
360
|
});
|
|
328
361
|
},
|
|
329
362
|
|
|
@@ -364,7 +397,7 @@ const Calendar = WebexPlugin.extend({
|
|
|
364
397
|
meetingObjects.forEach((meeting) => {
|
|
365
398
|
if (!meeting.encryptedParticipants) {
|
|
366
399
|
promises.push(
|
|
367
|
-
this.getParticipants(meeting.
|
|
400
|
+
this.getParticipants(meeting.participantsUrl).then((notesResponse) => {
|
|
368
401
|
meeting.encryptedParticipants = notesResponse.body.encryptedParticipants;
|
|
369
402
|
})
|
|
370
403
|
);
|
|
@@ -58,6 +58,55 @@ describe('internal-plugin-calendar', () => {
|
|
|
58
58
|
};
|
|
59
59
|
});
|
|
60
60
|
|
|
61
|
+
describe('Private API', () => {
|
|
62
|
+
describe('#prefetchEncryptionKey', () => {
|
|
63
|
+
it('waits for the ability to authorize before doing anything', () => {
|
|
64
|
+
webex.canAuthorize = false;
|
|
65
|
+
|
|
66
|
+
webex.internal.calendar.prefetchEncryptionKey();
|
|
67
|
+
|
|
68
|
+
assert.notCalled(webex.internal.encryption.kms.createUnboundKeys);
|
|
69
|
+
|
|
70
|
+
// Behaviour when the user can authorize is tested elsewhere, so just ensure it gets called again
|
|
71
|
+
const prefetchEncryptionKeyStub = sinon.stub(webex.internal.calendar, 'prefetchEncryptionKey');
|
|
72
|
+
|
|
73
|
+
webex.trigger('change:canAuthorize');
|
|
74
|
+
|
|
75
|
+
assert.calledOnce(prefetchEncryptionKeyStub);
|
|
76
|
+
assert.calledWith(prefetchEncryptionKeyStub);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it('does nothing when the current user is an unverified guest', () => {
|
|
80
|
+
webex.credentials.isUnverifiedGuest = true;
|
|
81
|
+
|
|
82
|
+
webex.internal.calendar.prefetchEncryptionKey();
|
|
83
|
+
|
|
84
|
+
assert.notCalled(webex.internal.encryption.kms.createUnboundKeys);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('creates an encryption key when the current user can authorize', () => {
|
|
88
|
+
webex.internal.calendar.prefetchEncryptionKey();
|
|
89
|
+
|
|
90
|
+
assert.calledOnce(webex.internal.encryption.kms.createUnboundKeys);
|
|
91
|
+
assert.calledWith(webex.internal.encryption.kms.createUnboundKeys, {count: 1});
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
describe('#initialize', () => {
|
|
96
|
+
it('adds relevant handlers when webex is ready', () => {
|
|
97
|
+
const prefetchEncryptionKeyStub = sinon.stub(webex.internal.calendar, 'prefetchEncryptionKey');
|
|
98
|
+
|
|
99
|
+
assert.notCalled(prefetchEncryptionKeyStub);
|
|
100
|
+
|
|
101
|
+
// Initialize should have already run, so there should be an event handler already
|
|
102
|
+
webex.trigger('ready');
|
|
103
|
+
|
|
104
|
+
assert.calledOnce(prefetchEncryptionKeyStub);
|
|
105
|
+
assert.calledWith(prefetchEncryptionKeyStub);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
|
|
61
110
|
describe('Public Api Contract', () => {
|
|
62
111
|
describe('#register()', () => {
|
|
63
112
|
it('on calendar register call mercury registration', async () => {
|
|
@@ -299,7 +348,7 @@ describe('internal-plugin-calendar', () => {
|
|
|
299
348
|
});
|
|
300
349
|
|
|
301
350
|
describe('#getParticipants()', () => {
|
|
302
|
-
const
|
|
351
|
+
const uri = 'participantsUrl';
|
|
303
352
|
|
|
304
353
|
it('should fetch the meeting participants', async () => {
|
|
305
354
|
webex.request = sinon.stub().returns(
|
|
@@ -310,13 +359,34 @@ describe('internal-plugin-calendar', () => {
|
|
|
310
359
|
})
|
|
311
360
|
);
|
|
312
361
|
|
|
313
|
-
const res = await webex.internal.calendar.getParticipants(
|
|
362
|
+
const res = await webex.internal.calendar.getParticipants(uri);
|
|
314
363
|
|
|
315
364
|
assert.equal(res.body.encryptedParticipants.length, 1);
|
|
316
365
|
assert.calledWith(webex.request, {
|
|
317
366
|
method: 'GET',
|
|
318
|
-
|
|
319
|
-
|
|
367
|
+
uri,
|
|
368
|
+
});
|
|
369
|
+
});
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
describe('#getNotesByUrl()', () => {
|
|
373
|
+
const uri = 'notesUrl';
|
|
374
|
+
|
|
375
|
+
it('should fetch the meeting notes', async () => {
|
|
376
|
+
webex.request = sinon.stub().returns(
|
|
377
|
+
Promise.resolve({
|
|
378
|
+
body: {
|
|
379
|
+
encryptedParticipants: ['participant1'],
|
|
380
|
+
},
|
|
381
|
+
})
|
|
382
|
+
);
|
|
383
|
+
|
|
384
|
+
const res = await webex.internal.calendar.getNotesByUrl(uri);
|
|
385
|
+
|
|
386
|
+
assert.equal(res.body.encryptedParticipants.length, 1);
|
|
387
|
+
assert.calledWith(webex.request, {
|
|
388
|
+
method: 'GET',
|
|
389
|
+
uri,
|
|
320
390
|
});
|
|
321
391
|
});
|
|
322
392
|
});
|