@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.131
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 +45 -1
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +48 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +355 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +193 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +43 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +994 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- 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 +6 -41
- 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 +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +203 -53
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +27 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +294 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +72 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +100 -29
- 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 +406 -216
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -38
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +54 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +88 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +105 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +55 -165
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +71 -117
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +77 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2603 -2462
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +291 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +292 -138
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +315 -336
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +463 -583
- 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 +305 -286
- 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 +156 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +24 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +692 -593
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +23 -42
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +186 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +89 -88
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +101 -69
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +12 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +166 -205
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +120 -85
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +314 -260
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +50 -16
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +4 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +93 -162
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +167 -50
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +74 -93
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +55 -74
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +466 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +32 -59
- package/dist/networkQualityMonitor/index.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 +190 -199
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +14 -23
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +2 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +19 -23
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +326 -465
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +31 -75
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +129 -136
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +143 -103
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +369 -461
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +144 -94
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +35 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +124 -0
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +2 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +69 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +34 -0
- package/dist/types/common/queue.d.ts +32 -0
- package/dist/types/config.d.ts +78 -0
- package/dist/types/constants.d.ts +993 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +15 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +315 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +212 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +108 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +147 -0
- package/dist/types/meeting/index.d.ts +1762 -0
- package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
- package/dist/types/meeting/muteState.d.ts +186 -0
- package/dist/types/meeting/request.d.ts +269 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +76 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +345 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +157 -0
- package/dist/types/member/types.d.ts +21 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +114 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +210 -0
- package/dist/types/metrics/config.d.ts +195 -0
- package/dist/types/metrics/constants.d.ts +55 -0
- package/dist/types/metrics/index.d.ts +169 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +36 -0
- package/dist/types/roap/turnDiscovery.d.ts +91 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/internal-README.md +7 -6
- package/package.json +28 -21
- package/src/annotation/annotation.types.ts +42 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +339 -0
- package/src/breakouts/README.md +220 -0
- package/src/breakouts/breakout.ts +163 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +37 -0
- package/src/breakouts/index.ts +860 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- 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 +16 -12
- package/src/constants.ts +153 -7
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +18 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +281 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +142 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +346 -55
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +52 -4
- package/src/locus-info/parser.ts +46 -68
- package/src/locus-info/selfUtils.ts +195 -56
- package/src/media/index.ts +139 -196
- package/src/media/properties.ts +43 -36
- package/src/media/util.ts +1 -1
- package/src/mediaQualityMetrics/config.ts +380 -378
- package/src/meeting/in-meeting-actions.ts +159 -3
- package/src/meeting/index.ts +2803 -1584
- package/src/meeting/locusMediaRequest.ts +309 -0
- package/src/meeting/muteState.ts +290 -72
- package/src/meeting/request.ts +247 -178
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +445 -395
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +235 -116
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +71 -55
- package/src/meetings/collection.ts +21 -1
- package/src/meetings/index.ts +772 -437
- package/src/meetings/request.ts +29 -25
- package/src/meetings/util.ts +132 -33
- package/src/member/index.ts +95 -49
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +106 -13
- package/src/members/collection.ts +8 -1
- package/src/members/index.ts +288 -130
- package/src/members/request.ts +144 -31
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +316 -235
- package/src/metrics/config.ts +302 -90
- package/src/metrics/constants.ts +2 -6
- package/src/metrics/index.ts +124 -95
- package/src/multistream/mediaRequestManager.ts +203 -45
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +62 -38
- package/src/multistream/remoteMedia.ts +30 -4
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +230 -66
- package/src/networkQualityMonitor/index.ts +24 -27
- 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 +131 -79
- package/src/reachability/request.ts +43 -34
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +8 -8
- package/src/reactions/reactions.type.ts +31 -5
- package/src/reconnection-manager/index.ts +193 -111
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/index.ts +53 -53
- package/src/roap/request.ts +77 -64
- package/src/roap/turnDiscovery.ts +101 -48
- package/src/statsAnalyzer/global.ts +8 -104
- package/src/statsAnalyzer/index.ts +624 -376
- package/src/statsAnalyzer/mqaUtil.ts +203 -90
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/converged-space-meetings.js +177 -0
- package/test/integration/spec/journey.js +670 -466
- package/test/integration/spec/space-meeting.js +320 -204
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +433 -0
- package/test/unit/spec/breakouts/breakout.ts +203 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +77 -0
- package/test/unit/spec/breakouts/index.ts +1609 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +504 -0
- package/test/unit/spec/fixture/locus.js +93 -90
- package/test/unit/spec/locus-info/controlsUtils.js +305 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +636 -5
- package/test/unit/spec/locus-info/infoUtils.js +26 -33
- 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/mediaSharesUtils.ts +22 -0
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +110 -103
- package/test/unit/spec/locus-info/selfUtils.js +252 -12
- package/test/unit/spec/media/index.ts +104 -8
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +76 -3
- package/test/unit/spec/meeting/index.js +3112 -921
- package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
- package/test/unit/spec/meeting/muteState.js +421 -94
- package/test/unit/spec/meeting/request.js +421 -79
- package/test/unit/spec/meeting/utils.js +326 -189
- package/test/unit/spec/meeting-info/meetinginfov2.js +481 -76
- 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 +131 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +1126 -328
- package/test/unit/spec/meetings/utils.js +220 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +383 -32
- package/test/unit/spec/members/index.js +424 -55
- package/test/unit/spec/members/request.js +228 -40
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +113 -20
- package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
- package/test/unit/spec/multistream/receiveSlot.ts +76 -17
- package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
- package/test/unit/spec/multistream/remoteMedia.ts +32 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +62 -31
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +19 -49
- package/test/unit/spec/roap/request.ts +187 -0
- package/test/unit/spec/roap/turnDiscovery.ts +92 -50
- package/test/unit/spec/stats-analyzer/index.js +116 -60
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +64 -0
- package/test/utils/testUtils.js +63 -99
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -334
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/src/index.js +0 -15
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting/effectsState.ts +0 -211
- package/src/multistream/multistreamMedia.ts +0 -92
- package/test/unit/spec/meeting/effectsState.js +0 -291
|
@@ -34,7 +34,8 @@ export default class MeetingInfoCollection extends Collection {
|
|
|
34
34
|
return find(
|
|
35
35
|
// @ts-ignore
|
|
36
36
|
this.meetingInfos,
|
|
37
|
-
(info) =>
|
|
37
|
+
(info) =>
|
|
38
|
+
info.sipUrl === id || info.locusId === id || info.userId === id || info.meetingLink === id
|
|
38
39
|
);
|
|
39
40
|
}
|
|
40
41
|
}
|
|
@@ -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,13 +1,24 @@
|
|
|
1
|
-
import
|
|
1
|
+
import lodash from 'lodash';
|
|
2
|
+
import {
|
|
3
|
+
HTTP_VERBS,
|
|
4
|
+
_CONVERSATION_URL_,
|
|
5
|
+
WBXAPPAPI_SERVICE,
|
|
6
|
+
DEFAULT_MEETING_INFO_REQUEST_BODY,
|
|
7
|
+
} from '../constants';
|
|
2
8
|
import Metrics from '../metrics';
|
|
9
|
+
import {eventType} from '../metrics/config';
|
|
3
10
|
import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
4
11
|
|
|
5
12
|
import MeetingInfoUtil from './utilv2';
|
|
6
13
|
|
|
7
|
-
const PASSWORD_ERROR_DEFAULT_MESSAGE =
|
|
8
|
-
|
|
9
|
-
const
|
|
14
|
+
const PASSWORD_ERROR_DEFAULT_MESSAGE =
|
|
15
|
+
'Password required. Call fetchMeetingInfo() with password argument';
|
|
16
|
+
const CAPTCHA_ERROR_DEFAULT_MESSAGE =
|
|
17
|
+
'Captcha required. Call fetchMeetingInfo() with captchaInfo argument';
|
|
18
|
+
const ADHOC_MEETING_DEFAULT_ERROR =
|
|
19
|
+
'Failed starting the adhoc meeting, Please contact support team ';
|
|
10
20
|
const CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES = [423005, 423006];
|
|
21
|
+
const POLICY_ERROR_CODES = [403049, 403104, 403103, 403048, 403102, 403101];
|
|
11
22
|
|
|
12
23
|
/**
|
|
13
24
|
* Error to indicate that wbxappapi requires a password
|
|
@@ -16,19 +27,24 @@ export class MeetingInfoV2PasswordError extends Error {
|
|
|
16
27
|
meetingInfo: any;
|
|
17
28
|
sdkMessage: any;
|
|
18
29
|
wbxAppApiCode: any;
|
|
30
|
+
body: any;
|
|
19
31
|
|
|
20
32
|
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
constructor(
|
|
33
|
+
*
|
|
34
|
+
* @constructor
|
|
35
|
+
* @param {Number} [wbxAppApiErrorCode]
|
|
36
|
+
* @param {Object} [meetingInfo]
|
|
37
|
+
* @param {String} [message]
|
|
38
|
+
*/
|
|
39
|
+
constructor(
|
|
40
|
+
wbxAppApiErrorCode?: number,
|
|
41
|
+
meetingInfo?: object,
|
|
42
|
+
message: string = PASSWORD_ERROR_DEFAULT_MESSAGE
|
|
43
|
+
) {
|
|
28
44
|
super(`${message}, code=${wbxAppApiErrorCode}`);
|
|
29
45
|
this.name = 'MeetingInfoV2PasswordError';
|
|
30
46
|
this.sdkMessage = message;
|
|
31
|
-
this.stack =
|
|
47
|
+
this.stack = new Error().stack;
|
|
32
48
|
this.wbxAppApiCode = wbxAppApiErrorCode;
|
|
33
49
|
this.meetingInfo = meetingInfo;
|
|
34
50
|
}
|
|
@@ -41,40 +57,69 @@ export class MeetingInfoV2AdhocMeetingError extends Error {
|
|
|
41
57
|
sdkMessage: any;
|
|
42
58
|
wbxAppApiCode: any;
|
|
43
59
|
/**
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
60
|
+
*
|
|
61
|
+
* @constructor
|
|
62
|
+
* @param {Number} [wbxAppApiErrorCode]
|
|
63
|
+
* @param {String} [message]
|
|
64
|
+
*/
|
|
49
65
|
constructor(wbxAppApiErrorCode?: number, message: string = ADHOC_MEETING_DEFAULT_ERROR) {
|
|
50
66
|
super(`${message}, code=${wbxAppApiErrorCode}`);
|
|
51
67
|
this.name = 'MeetingInfoV2AdhocMeetingError';
|
|
52
68
|
this.sdkMessage = message;
|
|
53
|
-
this.stack =
|
|
69
|
+
this.stack = new Error().stack;
|
|
54
70
|
this.wbxAppApiCode = wbxAppApiErrorCode;
|
|
55
71
|
}
|
|
56
72
|
}
|
|
57
73
|
|
|
58
74
|
/**
|
|
59
|
-
|
|
75
|
+
* Error preventing join because of a meeting policy
|
|
76
|
+
*/
|
|
77
|
+
export class MeetingInfoV2PolicyError extends Error {
|
|
78
|
+
meetingInfo: object;
|
|
79
|
+
sdkMessage: string;
|
|
80
|
+
wbxAppApiCode: number;
|
|
81
|
+
/**
|
|
82
|
+
*
|
|
83
|
+
* @constructor
|
|
84
|
+
* @param {Number} [wbxAppApiErrorCode]
|
|
85
|
+
* @param {Object} [meetingInfo]
|
|
86
|
+
* @param {String} [message]
|
|
60
87
|
*/
|
|
88
|
+
constructor(wbxAppApiErrorCode?: number, meetingInfo?: object, message?: string) {
|
|
89
|
+
super(`${message}, code=${wbxAppApiErrorCode}`);
|
|
90
|
+
this.name = 'MeetingInfoV2AdhocMeetingError';
|
|
91
|
+
this.sdkMessage = message;
|
|
92
|
+
this.stack = new Error().stack;
|
|
93
|
+
this.wbxAppApiCode = wbxAppApiErrorCode;
|
|
94
|
+
this.meetingInfo = meetingInfo;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Error to indicate that preferred webex site not present to start adhoc meeting
|
|
100
|
+
*/
|
|
61
101
|
export class MeetingInfoV2CaptchaError extends Error {
|
|
62
102
|
captchaInfo: any;
|
|
63
103
|
isPasswordRequired: any;
|
|
64
104
|
sdkMessage: any;
|
|
65
105
|
wbxAppApiCode: any;
|
|
106
|
+
body: any;
|
|
66
107
|
/**
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
constructor(
|
|
108
|
+
*
|
|
109
|
+
* @constructor
|
|
110
|
+
* @param {Number} [wbxAppApiErrorCode]
|
|
111
|
+
* @param {Object} [captchaInfo]
|
|
112
|
+
* @param {String} [message]
|
|
113
|
+
*/
|
|
114
|
+
constructor(
|
|
115
|
+
wbxAppApiErrorCode?: number,
|
|
116
|
+
captchaInfo?: object,
|
|
117
|
+
message: string = CAPTCHA_ERROR_DEFAULT_MESSAGE
|
|
118
|
+
) {
|
|
74
119
|
super(`${message}, code=${wbxAppApiErrorCode}`);
|
|
75
120
|
this.name = 'MeetingInfoV2PasswordError';
|
|
76
121
|
this.sdkMessage = message;
|
|
77
|
-
this.stack =
|
|
122
|
+
this.stack = new Error().stack;
|
|
78
123
|
this.wbxAppApiCode = wbxAppApiErrorCode;
|
|
79
124
|
this.isPasswordRequired = CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES.includes(wbxAppApiErrorCode);
|
|
80
125
|
this.captchaInfo = captchaInfo;
|
|
@@ -82,43 +127,67 @@ export class MeetingInfoV2CaptchaError extends Error {
|
|
|
82
127
|
}
|
|
83
128
|
|
|
84
129
|
/**
|
|
85
|
-
|
|
86
|
-
|
|
130
|
+
* @class MeetingInfo
|
|
131
|
+
*/
|
|
87
132
|
export default class MeetingInfoV2 {
|
|
88
133
|
webex: any;
|
|
89
134
|
|
|
90
135
|
/**
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
136
|
+
*
|
|
137
|
+
* @param {WebexSDK} webex
|
|
138
|
+
*/
|
|
94
139
|
constructor(webex) {
|
|
95
140
|
this.webex = webex;
|
|
96
141
|
}
|
|
97
142
|
|
|
98
143
|
/**
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
144
|
+
* converts hydra id into conversation url and persons Id
|
|
145
|
+
* @param {String} destination one of many different types of destinations to look up info for
|
|
146
|
+
* @param {String} [type] to match up with the destination value
|
|
147
|
+
* @returns {Promise} destination and type
|
|
148
|
+
* @public
|
|
149
|
+
* @memberof MeetingInfo
|
|
150
|
+
*/
|
|
106
151
|
fetchInfoOptions(destination: string, type: string = null) {
|
|
107
152
|
return MeetingInfoUtil.getDestinationType({
|
|
108
153
|
destination,
|
|
109
154
|
type,
|
|
110
|
-
webex: this.webex
|
|
155
|
+
webex: this.webex,
|
|
111
156
|
});
|
|
112
157
|
}
|
|
113
158
|
|
|
114
159
|
/**
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
160
|
+
* Raises a MeetingInfoV2PolicyError for policy error codes
|
|
161
|
+
* @param {any} err the error from the request
|
|
162
|
+
* @returns {void}
|
|
163
|
+
*/
|
|
164
|
+
handlePolicyError = (err) => {
|
|
165
|
+
if (!err.body) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (POLICY_ERROR_CODES.includes(err.body?.code)) {
|
|
170
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_INFO_POLICY_ERROR, {
|
|
171
|
+
code: err.body?.code,
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
throw new MeetingInfoV2PolicyError(
|
|
175
|
+
err.body?.code,
|
|
176
|
+
err.body?.data?.meetingInfo,
|
|
177
|
+
err.body?.message
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Creates adhoc space meetings for a space by fetching the conversation infomation
|
|
184
|
+
* @param {String} conversationUrl conversationUrl to start adhoc meeting on
|
|
185
|
+
* @param {String} installedOrgID org ID of user's machine
|
|
186
|
+
* @returns {Promise} returns a meeting info object
|
|
187
|
+
* @public
|
|
188
|
+
* @memberof MeetingInfo
|
|
189
|
+
*/
|
|
190
|
+
async createAdhocSpaceMeeting(conversationUrl: string, installedOrgID?: string) {
|
|
122
191
|
if (!this.webex.meetings.preferredWebexSite) {
|
|
123
192
|
throw Error('No preferred webex site found');
|
|
124
193
|
}
|
|
@@ -129,7 +198,7 @@ export default class MeetingInfoV2 {
|
|
|
129
198
|
particpants.forEach((participant) => {
|
|
130
199
|
invitees.push({
|
|
131
200
|
email: participant.emailAddress,
|
|
132
|
-
ciUserUuid: participant.entryUUID
|
|
201
|
+
ciUserUuid: participant.entryUUID,
|
|
133
202
|
});
|
|
134
203
|
});
|
|
135
204
|
}
|
|
@@ -137,56 +206,70 @@ export default class MeetingInfoV2 {
|
|
|
137
206
|
return invitees;
|
|
138
207
|
};
|
|
139
208
|
|
|
140
|
-
return this.webex.internal.conversation
|
|
141
|
-
{url: conversationUrl},
|
|
142
|
-
{includeParticipants: true, disableTransform: true}
|
|
143
|
-
)
|
|
209
|
+
return this.webex.internal.conversation
|
|
210
|
+
.get({url: conversationUrl}, {includeParticipants: true, disableTransform: true})
|
|
144
211
|
.then((conversation) => {
|
|
145
|
-
const body
|
|
212
|
+
const body: {
|
|
213
|
+
title: string;
|
|
214
|
+
spaceUrl: string;
|
|
215
|
+
keyUrl: string;
|
|
216
|
+
kroUrl: string;
|
|
217
|
+
invitees: any[];
|
|
218
|
+
installedOrgID?: string;
|
|
219
|
+
} = {
|
|
146
220
|
title: conversation.displayName,
|
|
147
221
|
spaceUrl: conversation.url,
|
|
148
222
|
keyUrl: conversation.encryptionKeyUrl,
|
|
149
223
|
kroUrl: conversation.kmsResourceObjectUrl,
|
|
150
|
-
invitees: getInvitees(conversation.participants?.items)
|
|
224
|
+
invitees: getInvitees(conversation.participants?.items),
|
|
151
225
|
};
|
|
152
226
|
|
|
153
|
-
|
|
154
|
-
|
|
227
|
+
if (installedOrgID) {
|
|
228
|
+
body.installedOrgID = installedOrgID;
|
|
229
|
+
}
|
|
155
230
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
231
|
+
const uri = this.webex.meetings.preferredWebexSite
|
|
232
|
+
? `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant`
|
|
233
|
+
: '';
|
|
159
234
|
|
|
160
235
|
return this.webex.request({
|
|
161
236
|
method: HTTP_VERBS.POST,
|
|
162
237
|
uri,
|
|
163
|
-
body
|
|
238
|
+
body,
|
|
164
239
|
});
|
|
165
240
|
})
|
|
241
|
+
.then((requestResult) => {
|
|
242
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);
|
|
243
|
+
|
|
244
|
+
return requestResult;
|
|
245
|
+
})
|
|
166
246
|
.catch((err) => {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
);
|
|
247
|
+
this.handlePolicyError(err);
|
|
248
|
+
|
|
249
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE, {
|
|
250
|
+
reason: err.message,
|
|
251
|
+
stack: err.stack,
|
|
252
|
+
});
|
|
174
253
|
throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);
|
|
175
254
|
});
|
|
176
255
|
}
|
|
177
256
|
|
|
178
257
|
/**
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
258
|
+
* Fetches meeting info from the server
|
|
259
|
+
* @param {String} destination one of many different types of destinations to look up info for
|
|
260
|
+
* @param {String} [type] to match up with the destination value
|
|
261
|
+
* @param {String} password
|
|
262
|
+
* @param {Object} captchaInfo
|
|
263
|
+
* @param {String} captchaInfo.code
|
|
264
|
+
* @param {String} captchaInfo.id
|
|
265
|
+
* @param {String} installedOrgID org ID of user's machine
|
|
266
|
+
* @param {String} locusId
|
|
267
|
+
* @param {Object} extraParams
|
|
268
|
+
* @param {Object} options
|
|
269
|
+
* @returns {Promise} returns a meeting info object
|
|
270
|
+
* @public
|
|
271
|
+
* @memberof MeetingInfo
|
|
272
|
+
*/
|
|
190
273
|
async fetchMeetingInfo(
|
|
191
274
|
destination: string,
|
|
192
275
|
type: string = null,
|
|
@@ -194,79 +277,115 @@ export default class MeetingInfoV2 {
|
|
|
194
277
|
captchaInfo: {
|
|
195
278
|
code: string;
|
|
196
279
|
id: string;
|
|
197
|
-
} = null
|
|
280
|
+
} = null,
|
|
281
|
+
installedOrgID = null,
|
|
282
|
+
locusId = null,
|
|
283
|
+
extraParams: object = {},
|
|
284
|
+
options: {meetingId?: string} = {}
|
|
198
285
|
) {
|
|
286
|
+
const {meetingId} = options;
|
|
287
|
+
|
|
199
288
|
const destinationType = await MeetingInfoUtil.getDestinationType({
|
|
200
289
|
destination,
|
|
201
290
|
type,
|
|
202
|
-
webex: this.webex
|
|
291
|
+
webex: this.webex,
|
|
203
292
|
});
|
|
204
293
|
|
|
205
|
-
if (
|
|
206
|
-
|
|
294
|
+
if (
|
|
295
|
+
destinationType.type === _CONVERSATION_URL_ &&
|
|
296
|
+
this.webex.config.meetings.experimental.enableAdhocMeetings &&
|
|
297
|
+
this.webex.meetings.preferredWebexSite
|
|
298
|
+
) {
|
|
299
|
+
return this.createAdhocSpaceMeeting(destinationType.destination, installedOrgID);
|
|
207
300
|
}
|
|
208
301
|
|
|
209
|
-
const body = await MeetingInfoUtil.getRequestBody({
|
|
302
|
+
const body = await MeetingInfoUtil.getRequestBody({
|
|
303
|
+
...destinationType,
|
|
304
|
+
password,
|
|
305
|
+
captchaInfo,
|
|
306
|
+
installedOrgID,
|
|
307
|
+
locusId,
|
|
308
|
+
extraParams,
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
// If the body only contains the default properties, we don't have enough to
|
|
312
|
+
// fetch the meeting info so don't bother trying.
|
|
313
|
+
if (
|
|
314
|
+
!lodash.difference(Object.keys(body), Object.keys(DEFAULT_MEETING_INFO_REQUEST_BODY)).length
|
|
315
|
+
) {
|
|
316
|
+
const err = new Error('Not enough information to fetch meeting info');
|
|
317
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {
|
|
318
|
+
reason: err.message,
|
|
319
|
+
destinationType: destinationType?.type,
|
|
320
|
+
webExMeetingId: destinationType?.info?.webExMeetingId,
|
|
321
|
+
sipUri: destinationType?.info?.sipUri,
|
|
322
|
+
});
|
|
210
323
|
|
|
211
|
-
|
|
324
|
+
throw err;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
const requestOptions: any = {
|
|
212
328
|
method: HTTP_VERBS.POST,
|
|
213
|
-
body
|
|
329
|
+
body,
|
|
214
330
|
};
|
|
215
331
|
|
|
216
332
|
const directURI = await MeetingInfoUtil.getDirectMeetingInfoURI(destinationType);
|
|
217
333
|
|
|
218
334
|
if (directURI) {
|
|
219
|
-
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
options.resource = 'meetingInfo';
|
|
335
|
+
requestOptions.uri = directURI;
|
|
336
|
+
} else {
|
|
337
|
+
requestOptions.service = WBXAPPAPI_SERVICE;
|
|
338
|
+
requestOptions.resource = 'meetingInfo';
|
|
224
339
|
}
|
|
225
340
|
|
|
226
|
-
return this.webex
|
|
341
|
+
return this.webex
|
|
342
|
+
.request(requestOptions)
|
|
227
343
|
.then((response) => {
|
|
228
|
-
Metrics.sendBehavioralMetric(
|
|
229
|
-
BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS
|
|
230
|
-
);
|
|
344
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS);
|
|
231
345
|
|
|
232
346
|
return response;
|
|
233
347
|
})
|
|
234
348
|
.catch((err) => {
|
|
349
|
+
if (meetingId) {
|
|
350
|
+
const parsedError = Metrics.parseWebexApiError(err, true);
|
|
351
|
+
Metrics.postEvent({
|
|
352
|
+
event: eventType.MEETING_INFO_RESPONSE,
|
|
353
|
+
meetingId,
|
|
354
|
+
data: {
|
|
355
|
+
errors: parsedError ? [parsedError] : undefined,
|
|
356
|
+
meetingLookupUrl: err?.url,
|
|
357
|
+
},
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
|
|
235
361
|
if (err?.statusCode === 403) {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
);
|
|
362
|
+
this.handlePolicyError(err);
|
|
363
|
+
|
|
364
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR, {
|
|
365
|
+
reason: err.message,
|
|
366
|
+
stack: err.stack,
|
|
367
|
+
});
|
|
243
368
|
|
|
244
369
|
throw new MeetingInfoV2PasswordError(err.body?.code, err.body?.data?.meetingInfo);
|
|
245
370
|
}
|
|
246
371
|
if (err?.statusCode === 423) {
|
|
247
|
-
Metrics.sendBehavioralMetric(
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
stack: err.stack
|
|
252
|
-
}
|
|
253
|
-
);
|
|
372
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR, {
|
|
373
|
+
reason: err.message,
|
|
374
|
+
stack: err.stack,
|
|
375
|
+
});
|
|
254
376
|
|
|
255
377
|
throw new MeetingInfoV2CaptchaError(err.body?.code, {
|
|
256
378
|
captchaId: err.body.captchaID,
|
|
257
379
|
verificationImageURL: err.body.verificationImageURL,
|
|
258
380
|
verificationAudioURL: err.body.verificationAudioURL,
|
|
259
|
-
refreshURL: err.body.refreshURL
|
|
381
|
+
refreshURL: err.body.refreshURL,
|
|
260
382
|
});
|
|
261
383
|
}
|
|
262
384
|
|
|
263
|
-
Metrics.sendBehavioralMetric(
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
stack: err.stack
|
|
268
|
-
}
|
|
269
|
-
);
|
|
385
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {
|
|
386
|
+
reason: err.message,
|
|
387
|
+
stack: err.stack,
|
|
388
|
+
});
|
|
270
389
|
throw err;
|
|
271
390
|
});
|
|
272
391
|
}
|
|
@@ -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
|
}
|