@webex/plugin-meetings 2.37.0 → 2.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +5 -26
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -26
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -27
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -26
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +5 -26
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -25
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +5 -26
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -26
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +7 -46
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -24
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +35 -61
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +1 -5
- package/dist/config.js.map +1 -1
- package/dist/constants.js +46 -42
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +10 -28
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +101 -193
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +87 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +16 -81
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +74 -137
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +64 -110
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +3 -17
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +10 -12
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +120 -192
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +0 -13
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +812 -1487
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +31 -78
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +157 -227
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +25 -169
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +10 -33
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +179 -268
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +137 -228
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +3 -21
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +451 -570
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +7 -30
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +94 -148
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +49 -89
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +17 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +2 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +68 -184
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +21 -56
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +9 -38
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +0 -2
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +48 -136
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +28 -57
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.js +60 -190
- package/dist/peer-connection-manager/index.js.map +1 -1
- package/dist/peer-connection-manager/util.js +10 -24
- package/dist/peer-connection-manager/util.js.map +1 -1
- package/dist/personal-meeting-room/index.js +10 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -33
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +100 -166
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +2 -18
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.js +0 -2
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +0 -5
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +294 -468
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/collection.js +1 -12
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.js +15 -85
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.js +42 -94
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +81 -148
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.js +2 -39
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/turnDiscovery.js +8 -52
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.js +0 -26
- package/dist/roap/util.js.map +1 -1
- package/dist/statsAnalyzer/global.js +0 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +68 -168
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +54 -53
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +7 -6
- package/package.json +17 -17
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +11 -11
- package/src/constants.ts +138 -119
- package/src/index.js +1 -1
- package/src/locus-info/controlsUtils.ts +34 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +25 -34
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +45 -68
- package/src/locus-info/selfUtils.ts +106 -57
- package/src/media/index.ts +118 -109
- package/src/media/properties.ts +26 -20
- package/src/media/util.ts +2 -2
- package/src/mediaQualityMetrics/config.ts +46 -46
- package/src/meeting/effectsState.ts +35 -35
- package/src/meeting/in-meeting-actions.ts +7 -3
- package/src/meeting/index.ts +1435 -1210
- package/src/meeting/muteState.ts +62 -31
- package/src/meeting/request.ts +160 -113
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +131 -90
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +106 -108
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +59 -53
- package/src/meetings/collection.ts +1 -1
- package/src/meetings/index.ts +513 -441
- package/src/meetings/request.ts +26 -24
- package/src/meetings/util.ts +26 -23
- package/src/member/index.ts +55 -49
- package/src/member/util.ts +26 -13
- package/src/members/collection.ts +0 -1
- package/src/members/index.ts +172 -121
- package/src/members/request.ts +46 -14
- package/src/members/util.ts +44 -42
- package/src/metrics/config.ts +254 -81
- package/src/metrics/constants.ts +0 -2
- package/src/metrics/index.ts +84 -71
- package/src/networkQualityMonitor/index.ts +20 -23
- package/src/peer-connection-manager/index.ts +321 -241
- package/src/peer-connection-manager/util.ts +4 -2
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +61 -59
- package/src/reachability/request.ts +36 -32
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +2 -3
- package/src/reconnection-manager/index.ts +159 -98
- package/src/roap/collection.ts +2 -4
- package/src/roap/handler.ts +63 -32
- package/src/roap/index.ts +78 -58
- package/src/roap/request.ts +69 -54
- package/src/roap/state.ts +17 -11
- package/src/roap/turnDiscovery.ts +60 -31
- package/src/roap/util.ts +39 -31
- package/src/statsAnalyzer/global.ts +30 -33
- package/src/statsAnalyzer/index.ts +397 -169
- package/src/statsAnalyzer/mqaUtil.ts +178 -72
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/journey.js +666 -462
- package/test/integration/spec/space-meeting.js +318 -203
- package/test/integration/spec/transcription.js +6 -7
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +5 -5
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +1 -2
- package/test/unit/spec/locus-info/infoUtils.js +24 -31
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +72 -103
- package/test/unit/spec/locus-info/selfUtils.js +21 -12
- package/test/unit/spec/meeting/effectsState.js +33 -45
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
- package/test/unit/spec/meeting/index.js +1141 -649
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +56 -45
- package/test/unit/spec/meeting/utils.js +66 -49
- package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +110 -74
- package/test/unit/spec/meetings/collection.js +1 -1
- package/test/unit/spec/meetings/index.js +438 -257
- package/test/unit/spec/meetings/utils.js +14 -12
- package/test/unit/spec/member/index.js +0 -1
- package/test/unit/spec/member/util.js +5 -6
- package/test/unit/spec/members/index.js +84 -35
- package/test/unit/spec/members/request.js +29 -20
- package/test/unit/spec/members/utils.js +8 -5
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/networkQualityMonitor/index.js +21 -15
- package/test/unit/spec/peerconnection-manager/index.js +88 -58
- package/test/unit/spec/peerconnection-manager/utils.js +5 -4
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +7 -8
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +9 -11
- package/test/unit/spec/reconnection-manager/index.js +14 -17
- package/test/unit/spec/roap/index.ts +18 -8
- package/test/unit/spec/roap/turnDiscovery.ts +22 -19
- package/test/unit/spec/roap/util.js +3 -3
- package/test/unit/spec/stats-analyzer/index.js +29 -24
- package/test/utils/cmr.js +44 -42
- package/test/utils/testUtils.js +83 -74
- package/test/utils/webex-config.js +18 -18
- package/test/utils/webex-test-users.js +53 -50
|
@@ -2,11 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
_MEETING_LINK_,
|
|
7
|
-
_SIP_URI_,
|
|
8
|
-
_PERSONAL_ROOM_
|
|
9
|
-
} from '../constants';
|
|
5
|
+
import {_MEETING_LINK_, _SIP_URI_, _PERSONAL_ROOM_} from '../constants';
|
|
10
6
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
11
7
|
|
|
12
8
|
import MeetingInfoCollection from './collection';
|
|
@@ -34,7 +30,7 @@ export default class MeetingInfo {
|
|
|
34
30
|
* @type {Object}
|
|
35
31
|
* @private
|
|
36
32
|
* @memberof MeetingInfo
|
|
37
|
-
|
|
33
|
+
*/
|
|
38
34
|
this.meetingInfoRequest = new MeetingInfoRequest(this.webex);
|
|
39
35
|
/**
|
|
40
36
|
* The meeting information collection interface
|
|
@@ -42,7 +38,7 @@ export default class MeetingInfo {
|
|
|
42
38
|
* @type {Object}
|
|
43
39
|
* @private
|
|
44
40
|
* @memberof MeetingInfo
|
|
45
|
-
|
|
41
|
+
*/
|
|
46
42
|
this.meetingInfoCollection = new MeetingInfoCollection();
|
|
47
43
|
}
|
|
48
44
|
|
|
@@ -75,17 +71,22 @@ export default class MeetingInfo {
|
|
|
75
71
|
* @memberof MeetingInfo
|
|
76
72
|
*/
|
|
77
73
|
private requestFetchInfo(options: object) {
|
|
78
|
-
return this.meetingInfoRequest
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
74
|
+
return this.meetingInfoRequest
|
|
75
|
+
.fetchMeetingInfo(options)
|
|
76
|
+
.then((info) => {
|
|
77
|
+
if (info && info.body) {
|
|
78
|
+
this.setMeetingInfo(info.body.sipMeetingUri || info.body.meetingLink, info.body);
|
|
79
|
+
}
|
|
82
80
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
return info;
|
|
82
|
+
})
|
|
83
|
+
.catch((error) => {
|
|
84
|
+
LoggerProxy.logger.error(
|
|
85
|
+
`Meeting-info:index#requestFetchInfo --> ${error} fetch meetingInfo`
|
|
86
|
+
);
|
|
86
87
|
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
return Promise.reject(error);
|
|
89
|
+
});
|
|
89
90
|
}
|
|
90
91
|
|
|
91
92
|
/**
|
|
@@ -100,7 +101,7 @@ export default class MeetingInfo {
|
|
|
100
101
|
return MeetingInfoUtil.generateOptions({
|
|
101
102
|
destination,
|
|
102
103
|
type,
|
|
103
|
-
webex: this.webex
|
|
104
|
+
webex: this.webex,
|
|
104
105
|
});
|
|
105
106
|
}
|
|
106
107
|
|
|
@@ -117,19 +118,20 @@ export default class MeetingInfo {
|
|
|
117
118
|
destination = this.webex.internal.device.userId;
|
|
118
119
|
}
|
|
119
120
|
|
|
120
|
-
return this.fetchInfoOptions(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
121
|
+
return this.fetchInfoOptions(MeetingInfoUtil.extractDestination(destination, type), type).then(
|
|
122
|
+
(options) =>
|
|
123
|
+
// fetch meeting info
|
|
124
|
+
this.requestFetchInfo(options).catch((error) => {
|
|
125
|
+
// if it failed the first time as meeting link
|
|
126
|
+
if (options.type === _MEETING_LINK_) {
|
|
127
|
+
// convert the meeting link to sip URI and retry
|
|
128
|
+
return this.requestFetchInfo(
|
|
129
|
+
this.fetchInfoOptions(MeetingInfoUtil.convertLinkToSip(destination), _SIP_URI_)
|
|
130
|
+
);
|
|
131
|
+
}
|
|
131
132
|
|
|
132
|
-
|
|
133
|
-
|
|
133
|
+
return Promise.reject(error);
|
|
134
|
+
})
|
|
135
|
+
);
|
|
134
136
|
}
|
|
135
137
|
}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {HTTP_VERBS, _CONVERSATION_URL_, WBXAPPAPI_SERVICE} from '../constants';
|
|
2
2
|
import Metrics from '../metrics';
|
|
3
3
|
import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
4
4
|
|
|
5
5
|
import MeetingInfoUtil from './utilv2';
|
|
6
6
|
|
|
7
|
-
const PASSWORD_ERROR_DEFAULT_MESSAGE =
|
|
8
|
-
|
|
9
|
-
const
|
|
7
|
+
const PASSWORD_ERROR_DEFAULT_MESSAGE =
|
|
8
|
+
'Password required. Call fetchMeetingInfo() with password argument';
|
|
9
|
+
const CAPTCHA_ERROR_DEFAULT_MESSAGE =
|
|
10
|
+
'Captcha required. Call fetchMeetingInfo() with captchaInfo argument';
|
|
11
|
+
const ADHOC_MEETING_DEFAULT_ERROR =
|
|
12
|
+
'Failed starting the adhoc meeting, Please contact support team ';
|
|
10
13
|
const CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES = [423005, 423006];
|
|
11
14
|
|
|
12
15
|
/**
|
|
@@ -18,17 +21,21 @@ export class MeetingInfoV2PasswordError extends Error {
|
|
|
18
21
|
wbxAppApiCode: any;
|
|
19
22
|
|
|
20
23
|
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
constructor(
|
|
24
|
+
*
|
|
25
|
+
* @constructor
|
|
26
|
+
* @param {Number} [wbxAppApiErrorCode]
|
|
27
|
+
* @param {Object} [meetingInfo]
|
|
28
|
+
* @param {String} [message]
|
|
29
|
+
*/
|
|
30
|
+
constructor(
|
|
31
|
+
wbxAppApiErrorCode?: number,
|
|
32
|
+
meetingInfo?: object,
|
|
33
|
+
message: string = PASSWORD_ERROR_DEFAULT_MESSAGE
|
|
34
|
+
) {
|
|
28
35
|
super(`${message}, code=${wbxAppApiErrorCode}`);
|
|
29
36
|
this.name = 'MeetingInfoV2PasswordError';
|
|
30
37
|
this.sdkMessage = message;
|
|
31
|
-
this.stack =
|
|
38
|
+
this.stack = new Error().stack;
|
|
32
39
|
this.wbxAppApiCode = wbxAppApiErrorCode;
|
|
33
40
|
this.meetingInfo = meetingInfo;
|
|
34
41
|
}
|
|
@@ -41,40 +48,44 @@ export class MeetingInfoV2AdhocMeetingError extends Error {
|
|
|
41
48
|
sdkMessage: any;
|
|
42
49
|
wbxAppApiCode: any;
|
|
43
50
|
/**
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
*
|
|
52
|
+
* @constructor
|
|
53
|
+
* @param {Number} [wbxAppApiErrorCode]
|
|
54
|
+
* @param {String} [message]
|
|
55
|
+
*/
|
|
49
56
|
constructor(wbxAppApiErrorCode?: number, message: string = ADHOC_MEETING_DEFAULT_ERROR) {
|
|
50
57
|
super(`${message}, code=${wbxAppApiErrorCode}`);
|
|
51
58
|
this.name = 'MeetingInfoV2AdhocMeetingError';
|
|
52
59
|
this.sdkMessage = message;
|
|
53
|
-
this.stack =
|
|
60
|
+
this.stack = new Error().stack;
|
|
54
61
|
this.wbxAppApiCode = wbxAppApiErrorCode;
|
|
55
62
|
}
|
|
56
63
|
}
|
|
57
64
|
|
|
58
65
|
/**
|
|
59
|
-
|
|
60
|
-
|
|
66
|
+
* Error to indicate that preferred webex site not present to start adhoc meeting
|
|
67
|
+
*/
|
|
61
68
|
export class MeetingInfoV2CaptchaError extends Error {
|
|
62
69
|
captchaInfo: any;
|
|
63
70
|
isPasswordRequired: any;
|
|
64
71
|
sdkMessage: any;
|
|
65
72
|
wbxAppApiCode: any;
|
|
66
73
|
/**
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
constructor(
|
|
74
|
+
*
|
|
75
|
+
* @constructor
|
|
76
|
+
* @param {Number} [wbxAppApiErrorCode]
|
|
77
|
+
* @param {Object} [captchaInfo]
|
|
78
|
+
* @param {String} [message]
|
|
79
|
+
*/
|
|
80
|
+
constructor(
|
|
81
|
+
wbxAppApiErrorCode?: number,
|
|
82
|
+
captchaInfo?: object,
|
|
83
|
+
message: string = CAPTCHA_ERROR_DEFAULT_MESSAGE
|
|
84
|
+
) {
|
|
74
85
|
super(`${message}, code=${wbxAppApiErrorCode}`);
|
|
75
86
|
this.name = 'MeetingInfoV2PasswordError';
|
|
76
87
|
this.sdkMessage = message;
|
|
77
|
-
this.stack =
|
|
88
|
+
this.stack = new Error().stack;
|
|
78
89
|
this.wbxAppApiCode = wbxAppApiErrorCode;
|
|
79
90
|
this.isPasswordRequired = CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES.includes(wbxAppApiErrorCode);
|
|
80
91
|
this.captchaInfo = captchaInfo;
|
|
@@ -82,42 +93,42 @@ export class MeetingInfoV2CaptchaError extends Error {
|
|
|
82
93
|
}
|
|
83
94
|
|
|
84
95
|
/**
|
|
85
|
-
|
|
86
|
-
|
|
96
|
+
* @class MeetingInfo
|
|
97
|
+
*/
|
|
87
98
|
export default class MeetingInfoV2 {
|
|
88
99
|
webex: any;
|
|
89
100
|
|
|
90
101
|
/**
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
102
|
+
*
|
|
103
|
+
* @param {WebexSDK} webex
|
|
104
|
+
*/
|
|
94
105
|
constructor(webex) {
|
|
95
106
|
this.webex = webex;
|
|
96
107
|
}
|
|
97
108
|
|
|
98
109
|
/**
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
110
|
+
* converts hydra id into conversation url and persons Id
|
|
111
|
+
* @param {String} destination one of many different types of destinations to look up info for
|
|
112
|
+
* @param {String} [type] to match up with the destination value
|
|
113
|
+
* @returns {Promise} destination and type
|
|
114
|
+
* @public
|
|
115
|
+
* @memberof MeetingInfo
|
|
116
|
+
*/
|
|
106
117
|
fetchInfoOptions(destination: string, type: string = null) {
|
|
107
118
|
return MeetingInfoUtil.getDestinationType({
|
|
108
119
|
destination,
|
|
109
120
|
type,
|
|
110
|
-
webex: this.webex
|
|
121
|
+
webex: this.webex,
|
|
111
122
|
});
|
|
112
123
|
}
|
|
113
124
|
|
|
114
125
|
/**
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
126
|
+
* Creates adhoc space meetings for a space by fetching the conversation infomation
|
|
127
|
+
* @param {String} conversationUrl conversationUrl to start adhoc meeting on
|
|
128
|
+
* @returns {Promise} returns a meeting info object
|
|
129
|
+
* @public
|
|
130
|
+
* @memberof MeetingInfo
|
|
131
|
+
*/
|
|
121
132
|
async createAdhocSpaceMeeting(conversationUrl: string) {
|
|
122
133
|
if (!this.webex.meetings.preferredWebexSite) {
|
|
123
134
|
throw Error('No preferred webex site found');
|
|
@@ -129,7 +140,7 @@ export default class MeetingInfoV2 {
|
|
|
129
140
|
particpants.forEach((participant) => {
|
|
130
141
|
invitees.push({
|
|
131
142
|
email: participant.emailAddress,
|
|
132
|
-
ciUserUuid: participant.entryUUID
|
|
143
|
+
ciUserUuid: participant.entryUUID,
|
|
133
144
|
});
|
|
134
145
|
});
|
|
135
146
|
}
|
|
@@ -137,56 +148,50 @@ export default class MeetingInfoV2 {
|
|
|
137
148
|
return invitees;
|
|
138
149
|
};
|
|
139
150
|
|
|
140
|
-
return this.webex.internal.conversation
|
|
141
|
-
{url: conversationUrl},
|
|
142
|
-
{includeParticipants: true, disableTransform: true}
|
|
143
|
-
)
|
|
151
|
+
return this.webex.internal.conversation
|
|
152
|
+
.get({url: conversationUrl}, {includeParticipants: true, disableTransform: true})
|
|
144
153
|
.then((conversation) => {
|
|
145
154
|
const body = {
|
|
146
155
|
title: conversation.displayName,
|
|
147
156
|
spaceUrl: conversation.url,
|
|
148
157
|
keyUrl: conversation.encryptionKeyUrl,
|
|
149
158
|
kroUrl: conversation.kmsResourceObjectUrl,
|
|
150
|
-
invitees: getInvitees(conversation.participants?.items)
|
|
159
|
+
invitees: getInvitees(conversation.participants?.items),
|
|
151
160
|
};
|
|
152
161
|
|
|
153
|
-
const uri = this.webex.meetings.preferredWebexSite
|
|
154
|
-
`https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant`
|
|
162
|
+
const uri = this.webex.meetings.preferredWebexSite
|
|
163
|
+
? `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant`
|
|
164
|
+
: '';
|
|
155
165
|
|
|
156
|
-
Metrics.sendBehavioralMetric(
|
|
157
|
-
BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS
|
|
158
|
-
);
|
|
166
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);
|
|
159
167
|
|
|
160
168
|
return this.webex.request({
|
|
161
169
|
method: HTTP_VERBS.POST,
|
|
162
170
|
uri,
|
|
163
|
-
body
|
|
171
|
+
body,
|
|
164
172
|
});
|
|
165
173
|
})
|
|
166
174
|
.catch((err) => {
|
|
167
|
-
Metrics.sendBehavioralMetric(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
stack: err.stack
|
|
172
|
-
}
|
|
173
|
-
);
|
|
175
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE, {
|
|
176
|
+
reason: err.message,
|
|
177
|
+
stack: err.stack,
|
|
178
|
+
});
|
|
174
179
|
throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);
|
|
175
180
|
});
|
|
176
181
|
}
|
|
177
182
|
|
|
178
183
|
/**
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
184
|
+
* Fetches meeting info from the server
|
|
185
|
+
* @param {String} destination one of many different types of destinations to look up info for
|
|
186
|
+
* @param {String} [type] to match up with the destination value
|
|
187
|
+
* @param {String} password
|
|
188
|
+
* @param {Object} captchaInfo
|
|
189
|
+
* @param {String} captchaInfo.code
|
|
190
|
+
* @param {String} captchaInfo.id
|
|
191
|
+
* @returns {Promise} returns a meeting info object
|
|
192
|
+
* @public
|
|
193
|
+
* @memberof MeetingInfo
|
|
194
|
+
*/
|
|
190
195
|
async fetchMeetingInfo(
|
|
191
196
|
destination: string,
|
|
192
197
|
type: string = null,
|
|
@@ -199,10 +204,14 @@ export default class MeetingInfoV2 {
|
|
|
199
204
|
const destinationType = await MeetingInfoUtil.getDestinationType({
|
|
200
205
|
destination,
|
|
201
206
|
type,
|
|
202
|
-
webex: this.webex
|
|
207
|
+
webex: this.webex,
|
|
203
208
|
});
|
|
204
209
|
|
|
205
|
-
if (
|
|
210
|
+
if (
|
|
211
|
+
destinationType.type === _CONVERSATION_URL_ &&
|
|
212
|
+
this.webex.config.meetings.experimental.enableAdhocMeetings &&
|
|
213
|
+
this.webex.meetings.preferredWebexSite
|
|
214
|
+
) {
|
|
206
215
|
return this.createAdhocSpaceMeeting(destinationType.destination);
|
|
207
216
|
}
|
|
208
217
|
|
|
@@ -210,63 +219,52 @@ export default class MeetingInfoV2 {
|
|
|
210
219
|
|
|
211
220
|
const options: any = {
|
|
212
221
|
method: HTTP_VERBS.POST,
|
|
213
|
-
body
|
|
222
|
+
body,
|
|
214
223
|
};
|
|
215
224
|
|
|
216
225
|
const directURI = await MeetingInfoUtil.getDirectMeetingInfoURI(destinationType);
|
|
217
226
|
|
|
218
227
|
if (directURI) {
|
|
219
228
|
options.uri = directURI;
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
229
|
+
} else {
|
|
222
230
|
options.service = WBXAPPAPI_SERVICE;
|
|
223
231
|
options.resource = 'meetingInfo';
|
|
224
232
|
}
|
|
225
233
|
|
|
226
|
-
return this.webex
|
|
234
|
+
return this.webex
|
|
235
|
+
.request(options)
|
|
227
236
|
.then((response) => {
|
|
228
|
-
Metrics.sendBehavioralMetric(
|
|
229
|
-
BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS
|
|
230
|
-
);
|
|
237
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS);
|
|
231
238
|
|
|
232
239
|
return response;
|
|
233
240
|
})
|
|
234
241
|
.catch((err) => {
|
|
235
242
|
if (err?.statusCode === 403) {
|
|
236
|
-
Metrics.sendBehavioralMetric(
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
stack: err.stack
|
|
241
|
-
}
|
|
242
|
-
);
|
|
243
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR, {
|
|
244
|
+
reason: err.message,
|
|
245
|
+
stack: err.stack,
|
|
246
|
+
});
|
|
243
247
|
|
|
244
248
|
throw new MeetingInfoV2PasswordError(err.body?.code, err.body?.data?.meetingInfo);
|
|
245
249
|
}
|
|
246
250
|
if (err?.statusCode === 423) {
|
|
247
|
-
Metrics.sendBehavioralMetric(
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
stack: err.stack
|
|
252
|
-
}
|
|
253
|
-
);
|
|
251
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR, {
|
|
252
|
+
reason: err.message,
|
|
253
|
+
stack: err.stack,
|
|
254
|
+
});
|
|
254
255
|
|
|
255
256
|
throw new MeetingInfoV2CaptchaError(err.body?.code, {
|
|
256
257
|
captchaId: err.body.captchaID,
|
|
257
258
|
verificationImageURL: err.body.verificationImageURL,
|
|
258
259
|
verificationAudioURL: err.body.verificationAudioURL,
|
|
259
|
-
refreshURL: err.body.refreshURL
|
|
260
|
+
refreshURL: err.body.refreshURL,
|
|
260
261
|
});
|
|
261
262
|
}
|
|
262
263
|
|
|
263
|
-
Metrics.sendBehavioralMetric(
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
stack: err.stack
|
|
268
|
-
}
|
|
269
|
-
);
|
|
264
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {
|
|
265
|
+
reason: err.message,
|
|
266
|
+
stack: err.stack,
|
|
267
|
+
});
|
|
270
268
|
throw err;
|
|
271
269
|
});
|
|
272
270
|
}
|
|
@@ -3,7 +3,6 @@ import ParameterError from '../common/errors/parameter';
|
|
|
3
3
|
|
|
4
4
|
import MeetingInfoUtil from './util';
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
/**
|
|
8
7
|
* @class MeetingInfoRequest
|
|
9
8
|
*/
|
|
@@ -30,10 +29,17 @@ export default class MeetingInfoRequest {
|
|
|
30
29
|
*/
|
|
31
30
|
fetchMeetingInfo(options: any) {
|
|
32
31
|
if (!options || !options.type || !options.destination) {
|
|
33
|
-
throw new ParameterError(
|
|
32
|
+
throw new ParameterError(
|
|
33
|
+
'MeetingInfo should be fetched with a type and destination specified, see list of valid types and their corresponding values in constants'
|
|
34
|
+
);
|
|
34
35
|
}
|
|
35
36
|
const resourceUrl = MeetingInfoUtil.getResourceUrl(options.type, options.destination);
|
|
36
|
-
const requestParams = MeetingInfoUtil.getRequestParams(
|
|
37
|
+
const requestParams = MeetingInfoUtil.getRequestParams(
|
|
38
|
+
resourceUrl,
|
|
39
|
+
options.type,
|
|
40
|
+
options.destination,
|
|
41
|
+
API.LOCUS
|
|
42
|
+
);
|
|
37
43
|
|
|
38
44
|
return this.webex.request(requestParams);
|
|
39
45
|
}
|