@webex/internal-plugin-calendar 3.0.0-beta.2 → 3.0.0-beta.200
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/README.md +1 -3
- package/dist/calendar.js +36 -72
- package/dist/calendar.js.map +1 -1
- package/dist/collection.js +0 -19
- package/dist/collection.js.map +1 -1
- package/dist/config.js +0 -3
- package/dist/config.js.map +1 -1
- package/dist/constants.js +0 -2
- package/dist/constants.js.map +1 -1
- package/dist/index.js +7 -21
- package/dist/index.js.map +1 -1
- package/dist/util.js +0 -13
- package/dist/util.js.map +1 -1
- package/package.json +10 -10
- package/src/calendar.js +59 -51
- package/src/collection.js +2 -4
- package/src/config.js +2 -2
- package/src/index.js +97 -40
- package/src/util.js +5 -3
- package/test/integration/spec/calendar.js +379 -271
- package/test/unit/spec/calendar.js +116 -90
- package/test/unit/spec/utils.js +4 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["registerInternalPlugin","Calendar","config","payloadTransformer","predicates","name","direction","test","ctx","response","resolve","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(has(response, 'body.encryptedNotes'));\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(has(response, 'body.encryptedParticipants'));\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(has(response, 'body.seriesId'));\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 ? object.encryptedParticipants.map((participant) => Promise.all([\n ctx.transform('decryptTextProp', 'encryptedEmailAddress', object.encryptionKeyUrl, participant),\n ctx.transform('decryptTextProp', 'encryptedName', object.encryptionKeyUrl, participant)\n ])) : [];\n\n // Decrypt meetingJoinInfo properties if meeting object contains meetingJoinInfo\n const decryptedMeetingJoinInfo = object.meetingJoinInfo ? Promise.all([\n ctx.transform('decryptTextProp', 'meetingJoinURI', object.encryptionKeyUrl, object.meetingJoinInfo),\n ctx.transform('decryptTextProp', 'meetingJoinURL', object.encryptionKeyUrl, object.meetingJoinInfo)\n ]) : [];\n\n const decryptedOrganizer = object.encryptedOrganizer ? Promise.all([\n ctx.transform('decryptTextProp', 'encryptedEmailAddress', object.encryptionKeyUrl, object.encryptedOrganizer),\n ctx.transform('decryptTextProp', 'encryptedName', object.encryptionKeyUrl, object.encryptedOrganizer)\n ]) : [];\n\n return Promise.all([\n ctx.transform('decryptTextProp', 'encryptedSubject', object.encryptionKeyUrl, object),\n ctx.transform('decryptTextProp', 'encryptedLocation', object.encryptionKeyUrl, object),\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 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) => Promise.all([\n ctx.transform('decryptTextProp', 'encryptedEmailAddress', object.encryptionKeyUrl, participant),\n ctx.transform('decryptTextProp', 'encryptedName', object.encryptionKeyUrl, participant)\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":["registerInternalPlugin","Calendar","config","payloadTransformer","predicates","name","direction","test","ctx","response","resolve","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(has(response, 'body.encryptedNotes'));\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(has(response, 'body.encryptedParticipants'));\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(has(response, 'body.seriesId'));\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
|
@@ -1,37 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
4
|
-
|
|
5
4
|
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
6
|
-
|
|
7
5
|
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
8
|
-
|
|
9
6
|
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
10
|
-
|
|
11
7
|
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
12
|
-
|
|
13
8
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
14
|
-
|
|
15
9
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
16
|
-
|
|
17
10
|
_Object$defineProperty(exports, "__esModule", {
|
|
18
11
|
value: true
|
|
19
12
|
});
|
|
20
|
-
|
|
21
13
|
exports.default = void 0;
|
|
22
|
-
|
|
23
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
24
|
-
|
|
25
15
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
26
|
-
|
|
27
16
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
28
|
-
|
|
29
17
|
var CalendarUtil = {
|
|
30
18
|
// calculate the end time for the meeting based on the duration so it's stored on
|
|
31
19
|
// the scheduled meeting item, that way client can display start and end without
|
|
32
20
|
// calculation on their side
|
|
33
21
|
// gets the start time from server, and the duration, and reformats
|
|
34
|
-
|
|
35
22
|
/**
|
|
36
23
|
* calculates the end time for meeting
|
|
37
24
|
* @param {Object} item the locus.host property
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CalendarUtil","calculateEndTime","item","endTime","Date","start","getTime","durationMinutes"],"sources":["util.js"],"sourcesContent":["const CalendarUtil = {\n
|
|
1
|
+
{"version":3,"names":["CalendarUtil","calculateEndTime","item","endTime","Date","start","getTime","durationMinutes"],"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,4BAACC,IAAI,EAAE;IACrB,uCACKA,IAAI;MACPC,OAAO,EAAE,IAAIC,IAAI,CAAC,IAAIA,IAAI,CAACF,IAAI,CAACG,KAAK,CAAC,CAACC,OAAO,EAAE,GAAGJ,IAAI,CAACK,eAAe,GAAG,KAAK;IAAC;EAEpF;AACF,CAAC;AAAC,eAEaP,YAAY;AAAA"}
|
package/package.json
CHANGED
|
@@ -19,20 +19,20 @@
|
|
|
19
19
|
"envify"
|
|
20
20
|
]
|
|
21
21
|
},
|
|
22
|
-
"version": "3.0.0-beta.
|
|
22
|
+
"version": "3.0.0-beta.200",
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
25
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
26
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
27
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
24
|
+
"@webex/test-helper-chai": "3.0.0-beta.200",
|
|
25
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.200",
|
|
26
|
+
"@webex/test-helper-retry": "3.0.0-beta.200",
|
|
27
|
+
"@webex/test-helper-test-users": "3.0.0-beta.200",
|
|
28
28
|
"sinon": "^9.2.4"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@webex/internal-plugin-calendar": "3.0.0-beta.
|
|
32
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
33
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
34
|
-
"@webex/internal-plugin-encryption": "3.0.0-beta.
|
|
35
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
31
|
+
"@webex/internal-plugin-calendar": "3.0.0-beta.200",
|
|
32
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.200",
|
|
33
|
+
"@webex/internal-plugin-device": "3.0.0-beta.200",
|
|
34
|
+
"@webex/internal-plugin-encryption": "3.0.0-beta.200",
|
|
35
|
+
"@webex/webex-core": "3.0.0-beta.200",
|
|
36
36
|
"btoa": "^1.2.1",
|
|
37
37
|
"lodash": "^4.17.21",
|
|
38
38
|
"uuid": "^3.3.2"
|
package/src/calendar.js
CHANGED
|
@@ -3,28 +3,28 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
* Calendar Item Create Event
|
|
7
|
+
* Emitted when a calendar item has been added
|
|
8
|
+
* @event calendar:meeting:create
|
|
9
|
+
* @instance
|
|
10
|
+
* @memberof Calendar
|
|
11
|
+
*/
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
* Calendar Item Update Event
|
|
15
|
+
* Emitted when a calendar item has been updated
|
|
16
|
+
* @event calendar:meeting:update
|
|
17
|
+
* @instance
|
|
18
|
+
* @memberof Calendar
|
|
19
|
+
*/
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
* Calendar Item Update Event
|
|
23
|
+
* Emitted when a calendar item has been deleted
|
|
24
|
+
* @event calendar:meeting:delete
|
|
25
|
+
* @instance
|
|
26
|
+
* @memberof Calendar
|
|
27
|
+
*/
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* Calendar Registered Event
|
|
@@ -46,7 +46,13 @@ import btoa from 'btoa';
|
|
|
46
46
|
import {WebexPlugin} from '@webex/webex-core';
|
|
47
47
|
|
|
48
48
|
import CalendarCollection from './collection';
|
|
49
|
-
import {
|
|
49
|
+
import {
|
|
50
|
+
CALENDAR_REGISTERED,
|
|
51
|
+
CALENDAR_UNREGISTERED,
|
|
52
|
+
CALENDAR_DELETE,
|
|
53
|
+
CALENDAR_CREATE,
|
|
54
|
+
CALENDAR_UPDATED,
|
|
55
|
+
} from './constants';
|
|
50
56
|
|
|
51
57
|
const Calendar = WebexPlugin.extend({
|
|
52
58
|
namespace: 'Calendar',
|
|
@@ -79,7 +85,8 @@ const Calendar = WebexPlugin.extend({
|
|
|
79
85
|
return Promise.resolve();
|
|
80
86
|
}
|
|
81
87
|
|
|
82
|
-
return this.webex.internal.device
|
|
88
|
+
return this.webex.internal.device
|
|
89
|
+
.register()
|
|
83
90
|
.then(() => this.webex.internal.mercury.connect())
|
|
84
91
|
.then(() => {
|
|
85
92
|
this.listenForEvents();
|
|
@@ -110,7 +117,8 @@ const Calendar = WebexPlugin.extend({
|
|
|
110
117
|
|
|
111
118
|
this.stopListeningForEvents();
|
|
112
119
|
|
|
113
|
-
return this.webex.internal.mercury
|
|
120
|
+
return this.webex.internal.mercury
|
|
121
|
+
.disconnect()
|
|
114
122
|
.then(() => this.webex.internal.device.unregister())
|
|
115
123
|
.then(() => {
|
|
116
124
|
this.trigger(CALENDAR_UNREGISTERED);
|
|
@@ -233,20 +241,30 @@ const Calendar = WebexPlugin.extend({
|
|
|
233
241
|
* @returns {Promise} Resolves with a decrypted calendar event
|
|
234
242
|
*/
|
|
235
243
|
processMeetingEvent(event) {
|
|
236
|
-
return this.webex.transform('inbound', event)
|
|
237
|
-
.then(() => event);
|
|
244
|
+
return this.webex.transform('inbound', event).then(() => event);
|
|
238
245
|
},
|
|
239
246
|
|
|
240
247
|
/**
|
|
241
|
-
* Retrieves an array of meeting participants for the meeting
|
|
242
|
-
* @param {String}
|
|
248
|
+
* Retrieves an array of meeting participants for the meeting participantsUrl
|
|
249
|
+
* @param {String} participantsUrl
|
|
243
250
|
* @returns {Promise} Resolves with an object of meeting participants
|
|
244
251
|
*/
|
|
245
|
-
getParticipants(
|
|
252
|
+
getParticipants(participantsUrl) {
|
|
246
253
|
return this.request({
|
|
247
254
|
method: 'GET',
|
|
248
|
-
|
|
249
|
-
|
|
255
|
+
uri: participantsUrl,
|
|
256
|
+
});
|
|
257
|
+
},
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* get meeting notes using notesUrl from meeting object.
|
|
261
|
+
* @param {String} notesUrl
|
|
262
|
+
* @returns {Promise} Resolves with an object of meeting notes
|
|
263
|
+
*/
|
|
264
|
+
getNotesByUrl(notesUrl) {
|
|
265
|
+
return this.request({
|
|
266
|
+
method: 'GET',
|
|
267
|
+
uri: notesUrl,
|
|
250
268
|
});
|
|
251
269
|
},
|
|
252
270
|
|
|
@@ -259,7 +277,7 @@ const Calendar = WebexPlugin.extend({
|
|
|
259
277
|
return this.request({
|
|
260
278
|
method: 'GET',
|
|
261
279
|
service: 'calendar',
|
|
262
|
-
resource: `calendarEvents/${btoa(id)}/notes
|
|
280
|
+
resource: `calendarEvents/${btoa(id)}/notes`,
|
|
263
281
|
});
|
|
264
282
|
},
|
|
265
283
|
|
|
@@ -273,40 +291,30 @@ const Calendar = WebexPlugin.extend({
|
|
|
273
291
|
list(options) {
|
|
274
292
|
options = options || {};
|
|
275
293
|
|
|
276
|
-
return this.webex
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
294
|
+
return this.webex
|
|
295
|
+
.request({
|
|
296
|
+
method: 'GET',
|
|
297
|
+
service: 'calendar',
|
|
298
|
+
resource: 'calendarEvents',
|
|
299
|
+
qs: options,
|
|
300
|
+
})
|
|
282
301
|
.then((res) => {
|
|
283
302
|
const meetingObjects = res.body.items;
|
|
284
303
|
const promises = [];
|
|
285
304
|
|
|
286
305
|
meetingObjects.forEach((meeting) => {
|
|
287
|
-
if (!meeting.encryptedNotes) {
|
|
288
|
-
promises.push(
|
|
289
|
-
this.getNotes(meeting.id)
|
|
290
|
-
.then((notesResponse) => {
|
|
291
|
-
meeting.encryptedNotes = notesResponse.body && notesResponse.body.encryptedNotes;
|
|
292
|
-
})
|
|
293
|
-
);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
306
|
if (!meeting.encryptedParticipants) {
|
|
297
307
|
promises.push(
|
|
298
|
-
this.getParticipants(meeting.
|
|
299
|
-
.
|
|
300
|
-
|
|
301
|
-
})
|
|
308
|
+
this.getParticipants(meeting.participantsUrl).then((notesResponse) => {
|
|
309
|
+
meeting.encryptedParticipants = notesResponse.body.encryptedParticipants;
|
|
310
|
+
})
|
|
302
311
|
);
|
|
303
312
|
}
|
|
304
313
|
});
|
|
305
314
|
|
|
306
|
-
return Promise.all(promises)
|
|
307
|
-
.then(() => meetingObjects);
|
|
315
|
+
return Promise.all(promises).then(() => meetingObjects);
|
|
308
316
|
});
|
|
309
|
-
}
|
|
317
|
+
},
|
|
310
318
|
});
|
|
311
319
|
|
|
312
320
|
export default Calendar;
|
package/src/collection.js
CHANGED
|
@@ -27,7 +27,7 @@ const CalendarCollection = {
|
|
|
27
27
|
*/
|
|
28
28
|
getBy(key, value) {
|
|
29
29
|
if (key && value) {
|
|
30
|
-
return find(this.items, (item) =>
|
|
30
|
+
return find(this.items, (item) => item[key] === value);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
return null;
|
|
@@ -58,7 +58,6 @@ const CalendarCollection = {
|
|
|
58
58
|
this.items = {};
|
|
59
59
|
},
|
|
60
60
|
|
|
61
|
-
|
|
62
61
|
/**
|
|
63
62
|
* @param {Id} id is the id for the calendar item to be removed
|
|
64
63
|
* @returns {Any} calendar item which got removed
|
|
@@ -95,8 +94,7 @@ const CalendarCollection = {
|
|
|
95
94
|
*/
|
|
96
95
|
getAll() {
|
|
97
96
|
return Object.values(this.items);
|
|
98
|
-
}
|
|
99
|
-
|
|
97
|
+
},
|
|
100
98
|
};
|
|
101
99
|
|
|
102
100
|
export default CalendarCollection;
|
package/src/config.js
CHANGED
package/src/index.js
CHANGED
|
@@ -24,7 +24,7 @@ registerInternalPlugin('calendar', Calendar, {
|
|
|
24
24
|
},
|
|
25
25
|
extract(response) {
|
|
26
26
|
return Promise.resolve(response.body);
|
|
27
|
-
}
|
|
27
|
+
},
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
name: 'transformMeetingParticipants',
|
|
@@ -34,7 +34,7 @@ registerInternalPlugin('calendar', Calendar, {
|
|
|
34
34
|
},
|
|
35
35
|
extract(response) {
|
|
36
36
|
return Promise.resolve(response.body);
|
|
37
|
-
}
|
|
37
|
+
},
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
name: 'transformMeetingArray',
|
|
@@ -44,7 +44,7 @@ registerInternalPlugin('calendar', Calendar, {
|
|
|
44
44
|
},
|
|
45
45
|
extract(response) {
|
|
46
46
|
return Promise.resolve(response.body.items);
|
|
47
|
-
}
|
|
47
|
+
},
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
name: 'transformMeeting',
|
|
@@ -54,7 +54,7 @@ registerInternalPlugin('calendar', Calendar, {
|
|
|
54
54
|
},
|
|
55
55
|
extract(response) {
|
|
56
56
|
return Promise.resolve(response.body);
|
|
57
|
-
}
|
|
57
|
+
},
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
name: 'transformMeeting',
|
|
@@ -64,15 +64,15 @@ registerInternalPlugin('calendar', Calendar, {
|
|
|
64
64
|
},
|
|
65
65
|
extract(response) {
|
|
66
66
|
return Promise.resolve(response.calendarMeetingExternal);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
69
|
],
|
|
70
70
|
transforms: [
|
|
71
71
|
{
|
|
72
72
|
name: 'transformMeetingArray',
|
|
73
73
|
fn(ctx, array) {
|
|
74
74
|
return Promise.all(array.map((item) => ctx.transform('transformMeeting', item)));
|
|
75
|
-
}
|
|
75
|
+
},
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
name: 'transformMeeting',
|
|
@@ -87,33 +87,78 @@ registerInternalPlugin('calendar', Calendar, {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// Decrypt participant properties if meeting object contains participants
|
|
90
|
-
const decryptedParticipants = object.encryptedParticipants
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
const decryptedParticipants = object.encryptedParticipants
|
|
91
|
+
? object.encryptedParticipants.map((participant) =>
|
|
92
|
+
Promise.all([
|
|
93
|
+
ctx.transform(
|
|
94
|
+
'decryptTextProp',
|
|
95
|
+
'encryptedEmailAddress',
|
|
96
|
+
object.encryptionKeyUrl,
|
|
97
|
+
participant
|
|
98
|
+
),
|
|
99
|
+
ctx.transform(
|
|
100
|
+
'decryptTextProp',
|
|
101
|
+
'encryptedName',
|
|
102
|
+
object.encryptionKeyUrl,
|
|
103
|
+
participant
|
|
104
|
+
),
|
|
105
|
+
])
|
|
106
|
+
)
|
|
107
|
+
: [];
|
|
94
108
|
|
|
95
109
|
// Decrypt meetingJoinInfo properties if meeting object contains meetingJoinInfo
|
|
96
|
-
const decryptedMeetingJoinInfo = object.meetingJoinInfo
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
110
|
+
const decryptedMeetingJoinInfo = object.meetingJoinInfo
|
|
111
|
+
? Promise.all([
|
|
112
|
+
ctx.transform(
|
|
113
|
+
'decryptTextProp',
|
|
114
|
+
'meetingJoinURI',
|
|
115
|
+
object.encryptionKeyUrl,
|
|
116
|
+
object.meetingJoinInfo
|
|
117
|
+
),
|
|
118
|
+
ctx.transform(
|
|
119
|
+
'decryptTextProp',
|
|
120
|
+
'meetingJoinURL',
|
|
121
|
+
object.encryptionKeyUrl,
|
|
122
|
+
object.meetingJoinInfo
|
|
123
|
+
),
|
|
124
|
+
])
|
|
125
|
+
: [];
|
|
100
126
|
|
|
101
|
-
const decryptedOrganizer = object.encryptedOrganizer
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
127
|
+
const decryptedOrganizer = object.encryptedOrganizer
|
|
128
|
+
? Promise.all([
|
|
129
|
+
ctx.transform(
|
|
130
|
+
'decryptTextProp',
|
|
131
|
+
'encryptedEmailAddress',
|
|
132
|
+
object.encryptionKeyUrl,
|
|
133
|
+
object.encryptedOrganizer
|
|
134
|
+
),
|
|
135
|
+
ctx.transform(
|
|
136
|
+
'decryptTextProp',
|
|
137
|
+
'encryptedName',
|
|
138
|
+
object.encryptionKeyUrl,
|
|
139
|
+
object.encryptedOrganizer
|
|
140
|
+
),
|
|
141
|
+
])
|
|
142
|
+
: [];
|
|
105
143
|
|
|
106
|
-
return Promise.all(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
144
|
+
return Promise.all(
|
|
145
|
+
[
|
|
146
|
+
ctx.transform('decryptTextProp', 'encryptedSubject', object.encryptionKeyUrl, object),
|
|
147
|
+
ctx.transform(
|
|
148
|
+
'decryptTextProp',
|
|
149
|
+
'encryptedLocation',
|
|
150
|
+
object.encryptionKeyUrl,
|
|
151
|
+
object
|
|
152
|
+
),
|
|
153
|
+
ctx.transform('decryptTextProp', 'encryptedNotes', object.encryptionKeyUrl, object),
|
|
154
|
+
ctx.transform('decryptTextProp', 'webexURI', object.encryptionKeyUrl, object),
|
|
155
|
+
ctx.transform('decryptTextProp', 'webexURL', object.encryptionKeyUrl, object),
|
|
156
|
+
ctx.transform('decryptTextProp', 'spaceMeetURL', object.encryptionKeyUrl, object),
|
|
157
|
+
ctx.transform('decryptTextProp', 'spaceURI', object.encryptionKeyUrl, object),
|
|
158
|
+
ctx.transform('decryptTextProp', 'spaceURL', object.encryptionKeyUrl, object),
|
|
159
|
+
].concat(decryptedOrganizer, decryptedParticipants, decryptedMeetingJoinInfo)
|
|
160
|
+
);
|
|
161
|
+
},
|
|
117
162
|
},
|
|
118
163
|
{
|
|
119
164
|
name: 'transformMeetingNotes',
|
|
@@ -128,9 +173,9 @@ registerInternalPlugin('calendar', Calendar, {
|
|
|
128
173
|
}
|
|
129
174
|
|
|
130
175
|
return Promise.all([
|
|
131
|
-
ctx.transform('decryptTextProp', 'encryptedNotes', object.encryptionKeyUrl, object)
|
|
176
|
+
ctx.transform('decryptTextProp', 'encryptedNotes', object.encryptionKeyUrl, object),
|
|
132
177
|
]);
|
|
133
|
-
}
|
|
178
|
+
},
|
|
134
179
|
},
|
|
135
180
|
{
|
|
136
181
|
name: 'transformMeetingParticipants',
|
|
@@ -145,16 +190,28 @@ registerInternalPlugin('calendar', Calendar, {
|
|
|
145
190
|
}
|
|
146
191
|
|
|
147
192
|
// Decrypt participant properties
|
|
148
|
-
const decryptedParticipants = object.encryptedParticipants.map((participant) =>
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
193
|
+
const decryptedParticipants = object.encryptedParticipants.map((participant) =>
|
|
194
|
+
Promise.all([
|
|
195
|
+
ctx.transform(
|
|
196
|
+
'decryptTextProp',
|
|
197
|
+
'encryptedEmailAddress',
|
|
198
|
+
object.encryptionKeyUrl,
|
|
199
|
+
participant
|
|
200
|
+
),
|
|
201
|
+
ctx.transform(
|
|
202
|
+
'decryptTextProp',
|
|
203
|
+
'encryptedName',
|
|
204
|
+
object.encryptionKeyUrl,
|
|
205
|
+
participant
|
|
206
|
+
),
|
|
207
|
+
])
|
|
208
|
+
);
|
|
152
209
|
|
|
153
210
|
return Promise.all(decryptedParticipants);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
]
|
|
157
|
-
}
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
},
|
|
158
215
|
});
|
|
159
216
|
|
|
160
217
|
export {default} from './calendar';
|
package/src/util.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const CalendarUtil = {
|
|
2
|
-
|
|
3
2
|
// calculate the end time for the meeting based on the duration so it's stored on
|
|
4
3
|
// the scheduled meeting item, that way client can display start and end without
|
|
5
4
|
// calculation on their side
|
|
@@ -13,8 +12,11 @@ const CalendarUtil = {
|
|
|
13
12
|
* @memberof CalendarUtil
|
|
14
13
|
*/
|
|
15
14
|
calculateEndTime(item) {
|
|
16
|
-
return {
|
|
17
|
-
|
|
15
|
+
return {
|
|
16
|
+
...item,
|
|
17
|
+
endTime: new Date(new Date(item.start).getTime() + item.durationMinutes * 60000),
|
|
18
|
+
};
|
|
19
|
+
},
|
|
18
20
|
};
|
|
19
21
|
|
|
20
22
|
export default CalendarUtil;
|