@webex/plugin-meetings 3.0.0-beta.34 → 3.0.0-beta.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/meeting/request.js +135 -85
- package/dist/meeting/request.js.map +1 -1
- package/dist/reachability/index.js +25 -17
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +12 -5
- package/dist/reachability/request.js.map +1 -1
- package/dist/roap/request.js +114 -83
- package/dist/roap/request.js.map +1 -1
- package/dist/types/constants.d.ts +2 -1
- package/dist/types/meeting/request.d.ts +10 -0
- package/dist/types/reachability/request.d.ts +5 -3
- package/dist/types/roap/request.d.ts +6 -3
- package/package.json +18 -18
- package/src/constants.ts +2 -1
- package/src/meeting/request.ts +35 -1
- package/src/reachability/index.ts +12 -4
- package/src/reachability/request.ts +10 -5
- package/src/roap/request.ts +93 -78
- package/test/unit/spec/meeting/request.js +27 -0
- package/test/unit/spec/reachability/index.ts +18 -7
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/roap/request.ts +187 -84
package/dist/meeting/request.js
CHANGED
|
@@ -39,11 +39,51 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_R
|
|
|
39
39
|
var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
40
40
|
(0, _inherits2.default)(MeetingRequest, _StatelessWebexPlugin);
|
|
41
41
|
var _super = _createSuper(MeetingRequest);
|
|
42
|
+
/**
|
|
43
|
+
* Constructor
|
|
44
|
+
* @param {Object} attrs
|
|
45
|
+
* @param {Object} options
|
|
46
|
+
*/
|
|
42
47
|
function MeetingRequest(attrs, options) {
|
|
43
48
|
var _this;
|
|
44
49
|
(0, _classCallCheck2.default)(this, MeetingRequest);
|
|
45
50
|
_this = _super.call(this, attrs, options);
|
|
46
51
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "changeVideoLayoutDebounced", void 0);
|
|
52
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getJoinCookie", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
53
|
+
var joinCookieRaw, joinCookie;
|
|
54
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
55
|
+
while (1) switch (_context.prev = _context.next) {
|
|
56
|
+
case 0:
|
|
57
|
+
_context.next = 2;
|
|
58
|
+
return _this.webex.boundedStorage.get(_constants.REACHABILITY.namespace, _constants.REACHABILITY.localStorageJoinCookie).catch(function () {});
|
|
59
|
+
case 2:
|
|
60
|
+
joinCookieRaw = _context.sent;
|
|
61
|
+
if (!joinCookieRaw) {
|
|
62
|
+
_context.next = 13;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
_context.prev = 4;
|
|
66
|
+
joinCookie = JSON.parse(joinCookieRaw);
|
|
67
|
+
if (!joinCookie) {
|
|
68
|
+
_context.next = 8;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
return _context.abrupt("return", joinCookie);
|
|
72
|
+
case 8:
|
|
73
|
+
_context.next = 13;
|
|
74
|
+
break;
|
|
75
|
+
case 10:
|
|
76
|
+
_context.prev = 10;
|
|
77
|
+
_context.t0 = _context["catch"](4);
|
|
78
|
+
_loggerProxy.default.logger.error("MeetingRequest#constructor --> Error in parsing join cookie data: ".concat(_context.t0));
|
|
79
|
+
case 13:
|
|
80
|
+
return _context.abrupt("return", null);
|
|
81
|
+
case 14:
|
|
82
|
+
case "end":
|
|
83
|
+
return _context.stop();
|
|
84
|
+
}
|
|
85
|
+
}, _callee, null, [[4, 10]]);
|
|
86
|
+
})));
|
|
47
87
|
_this.changeVideoLayoutDebounced = (0, _debounce2.default)(_this.changeVideoLayout, 2000, {
|
|
48
88
|
leading: true,
|
|
49
89
|
trailing: true
|
|
@@ -52,32 +92,41 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
52
92
|
}
|
|
53
93
|
|
|
54
94
|
/**
|
|
55
|
-
*
|
|
56
|
-
* @
|
|
57
|
-
* @param {String} options.sipUri
|
|
58
|
-
* @param {String} options.deviceUrl
|
|
59
|
-
* @param {String} options.locusUrl
|
|
60
|
-
* @param {String} options.resourceId,
|
|
61
|
-
* @param {String} options.correlationId
|
|
62
|
-
* @param {boolean} options.ensureConversation
|
|
63
|
-
* @param {boolean} options.moderator
|
|
64
|
-
* @param {boolean} options.pin
|
|
65
|
-
* @param {boolean} options.moveToResource
|
|
66
|
-
* @param {Object} options.roapMessage
|
|
67
|
-
* @param {boolean} options.breakoutsSupported
|
|
68
|
-
* @returns {Promise}
|
|
95
|
+
* Returns joinCookie from boundedStorage if present.
|
|
96
|
+
* @returns {Object} joinCookie
|
|
69
97
|
*/
|
|
70
98
|
(0, _createClass2.default)(MeetingRequest, [{
|
|
71
99
|
key: "joinMeeting",
|
|
72
|
-
value:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
100
|
+
value:
|
|
101
|
+
/**
|
|
102
|
+
* Make a network request to join a meeting
|
|
103
|
+
* @param {Object} options
|
|
104
|
+
* @param {String} options.sipUri
|
|
105
|
+
* @param {String} options.deviceUrl
|
|
106
|
+
* @param {String} options.locusUrl
|
|
107
|
+
* @param {String} options.resourceId,
|
|
108
|
+
* @param {String} options.correlationId
|
|
109
|
+
* @param {boolean} options.ensureConversation
|
|
110
|
+
* @param {boolean} options.moderator
|
|
111
|
+
* @param {boolean} options.pin
|
|
112
|
+
* @param {boolean} options.moveToResource
|
|
113
|
+
* @param {Object} options.roapMessage
|
|
114
|
+
* @param {boolean} options.breakoutsSupported
|
|
115
|
+
* @returns {Promise}
|
|
116
|
+
*/
|
|
117
|
+
function () {
|
|
118
|
+
var _joinMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
|
|
119
|
+
var asResourceOccupant, inviteeAddress, meetingNumber, permissionToken, deviceUrl, locusUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, preferTranscoding, breakoutsSupported, url, joinCookie, body;
|
|
120
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
121
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
77
122
|
case 0:
|
|
78
123
|
asResourceOccupant = options.asResourceOccupant, inviteeAddress = options.inviteeAddress, meetingNumber = options.meetingNumber, permissionToken = options.permissionToken, deviceUrl = options.deviceUrl, locusUrl = options.locusUrl, resourceId = options.resourceId, correlationId = options.correlationId, ensureConversation = options.ensureConversation, moderator = options.moderator, pin = options.pin, moveToResource = options.moveToResource, roapMessage = options.roapMessage, preferTranscoding = options.preferTranscoding, breakoutsSupported = options.breakoutsSupported;
|
|
79
124
|
_loggerProxy.default.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
|
|
80
125
|
url = '';
|
|
126
|
+
_context2.next = 5;
|
|
127
|
+
return this.getJoinCookie();
|
|
128
|
+
case 5:
|
|
129
|
+
joinCookie = _context2.sent;
|
|
81
130
|
body = {
|
|
82
131
|
asResourceOccupant: asResourceOccupant,
|
|
83
132
|
device: {
|
|
@@ -93,7 +142,8 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
93
142
|
ensureConversation: ensureConversation || false,
|
|
94
143
|
supportsNativeLobby: 1,
|
|
95
144
|
clientMediaPreferences: {
|
|
96
|
-
preferTranscoding: preferTranscoding !== null && preferTranscoding !== void 0 ? preferTranscoding : true
|
|
145
|
+
preferTranscoding: preferTranscoding !== null && preferTranscoding !== void 0 ? preferTranscoding : true,
|
|
146
|
+
joinCookie: joinCookie
|
|
97
147
|
}
|
|
98
148
|
};
|
|
99
149
|
if (breakoutsSupported) {
|
|
@@ -117,34 +167,34 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
117
167
|
body.pin = pin;
|
|
118
168
|
}
|
|
119
169
|
if (!locusUrl) {
|
|
120
|
-
|
|
170
|
+
_context2.next = 16;
|
|
121
171
|
break;
|
|
122
172
|
}
|
|
123
173
|
url = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT);
|
|
124
|
-
|
|
174
|
+
_context2.next = 28;
|
|
125
175
|
break;
|
|
126
|
-
case
|
|
176
|
+
case 16:
|
|
127
177
|
if (!(inviteeAddress || meetingNumber)) {
|
|
128
|
-
|
|
178
|
+
_context2.next = 28;
|
|
129
179
|
break;
|
|
130
180
|
}
|
|
131
|
-
|
|
132
|
-
|
|
181
|
+
_context2.prev = 17;
|
|
182
|
+
_context2.next = 20;
|
|
133
183
|
return this.webex.internal.services.waitForCatalog('postauth');
|
|
134
|
-
case
|
|
184
|
+
case 20:
|
|
135
185
|
// @ts-ignore
|
|
136
186
|
url = "".concat(this.webex.internal.services.get('locus'), "/").concat(_constants.LOCI, "/").concat(_constants.CALL);
|
|
137
187
|
body.invitee = {
|
|
138
188
|
address: inviteeAddress || "wbxmn:".concat(meetingNumber)
|
|
139
189
|
};
|
|
140
|
-
|
|
190
|
+
_context2.next = 28;
|
|
141
191
|
break;
|
|
142
|
-
case
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
_loggerProxy.default.logger.error("Meeting:request#joinMeeting Error Joining ".concat(inviteeAddress || meetingNumber, " --> ").concat(
|
|
146
|
-
throw
|
|
147
|
-
case
|
|
192
|
+
case 24:
|
|
193
|
+
_context2.prev = 24;
|
|
194
|
+
_context2.t0 = _context2["catch"](17);
|
|
195
|
+
_loggerProxy.default.logger.error("Meeting:request#joinMeeting Error Joining ".concat(inviteeAddress || meetingNumber, " --> ").concat(_context2.t0));
|
|
196
|
+
throw _context2.t0;
|
|
197
|
+
case 28:
|
|
148
198
|
// TODO: -- this will be resolved in SDK request
|
|
149
199
|
url = url.concat("?".concat(_constants.ALTERNATE_REDIRECT_TRUE));
|
|
150
200
|
if (resourceId === inviteeAddress) {
|
|
@@ -157,16 +207,16 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
157
207
|
}
|
|
158
208
|
|
|
159
209
|
/// @ts-ignore
|
|
160
|
-
return
|
|
210
|
+
return _context2.abrupt("return", this.request({
|
|
161
211
|
method: _constants.HTTP_VERBS.POST,
|
|
162
212
|
uri: url,
|
|
163
213
|
body: body
|
|
164
214
|
}));
|
|
165
|
-
case
|
|
215
|
+
case 32:
|
|
166
216
|
case "end":
|
|
167
|
-
return
|
|
217
|
+
return _context2.stop();
|
|
168
218
|
}
|
|
169
|
-
},
|
|
219
|
+
}, _callee2, this, [[17, 24]]);
|
|
170
220
|
}));
|
|
171
221
|
function joinMeeting(_x) {
|
|
172
222
|
return _joinMeeting.apply(this, arguments);
|
|
@@ -183,9 +233,9 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
183
233
|
*/
|
|
184
234
|
}, {
|
|
185
235
|
key: "refreshCaptcha",
|
|
186
|
-
value: function refreshCaptcha(
|
|
187
|
-
var captchaRefreshUrl =
|
|
188
|
-
captchaId =
|
|
236
|
+
value: function refreshCaptcha(_ref2) {
|
|
237
|
+
var captchaRefreshUrl = _ref2.captchaRefreshUrl,
|
|
238
|
+
captchaId = _ref2.captchaId;
|
|
189
239
|
var body = {
|
|
190
240
|
captchaId: captchaId
|
|
191
241
|
};
|
|
@@ -213,11 +263,11 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
213
263
|
*/
|
|
214
264
|
}, {
|
|
215
265
|
key: "dialIn",
|
|
216
|
-
value: function dialIn(
|
|
217
|
-
var locusUrl =
|
|
218
|
-
dialInUrl =
|
|
219
|
-
clientUrl =
|
|
220
|
-
correlationId =
|
|
266
|
+
value: function dialIn(_ref3) {
|
|
267
|
+
var locusUrl = _ref3.locusUrl,
|
|
268
|
+
dialInUrl = _ref3.dialInUrl,
|
|
269
|
+
clientUrl = _ref3.clientUrl,
|
|
270
|
+
correlationId = _ref3.correlationId;
|
|
221
271
|
_loggerProxy.default.logger.info('Meeting:request#dialIn --> Provisioning a dial in device', correlationId);
|
|
222
272
|
var uri = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT);
|
|
223
273
|
var body = {
|
|
@@ -254,12 +304,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
254
304
|
*/
|
|
255
305
|
}, {
|
|
256
306
|
key: "dialOut",
|
|
257
|
-
value: function dialOut(
|
|
258
|
-
var locusUrl =
|
|
259
|
-
dialOutUrl =
|
|
260
|
-
phoneNumber =
|
|
261
|
-
clientUrl =
|
|
262
|
-
correlationId =
|
|
307
|
+
value: function dialOut(_ref4) {
|
|
308
|
+
var locusUrl = _ref4.locusUrl,
|
|
309
|
+
dialOutUrl = _ref4.dialOutUrl,
|
|
310
|
+
phoneNumber = _ref4.phoneNumber,
|
|
311
|
+
clientUrl = _ref4.clientUrl,
|
|
312
|
+
correlationId = _ref4.correlationId;
|
|
263
313
|
_loggerProxy.default.logger.info('Meeting:request#dialOut --> Provisioning a dial out device', correlationId);
|
|
264
314
|
var uri = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT);
|
|
265
315
|
var body = {
|
|
@@ -356,11 +406,11 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
356
406
|
*/
|
|
357
407
|
}, {
|
|
358
408
|
key: "disconnectPhoneAudio",
|
|
359
|
-
value: function disconnectPhoneAudio(
|
|
360
|
-
var locusUrl =
|
|
361
|
-
phoneUrl =
|
|
362
|
-
correlationId =
|
|
363
|
-
selfId =
|
|
409
|
+
value: function disconnectPhoneAudio(_ref5) {
|
|
410
|
+
var locusUrl = _ref5.locusUrl,
|
|
411
|
+
phoneUrl = _ref5.phoneUrl,
|
|
412
|
+
correlationId = _ref5.correlationId,
|
|
413
|
+
selfId = _ref5.selfId;
|
|
364
414
|
_loggerProxy.default.logger.info("Meeting:request#disconnectPhoneAudio --> request phone ".concat(phoneUrl, " to leave"), correlationId);
|
|
365
415
|
var uri = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT, "/").concat(selfId, "/").concat(_constants.LEAVE);
|
|
366
416
|
var body = {
|
|
@@ -394,12 +444,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
394
444
|
*/
|
|
395
445
|
}, {
|
|
396
446
|
key: "leaveMeeting",
|
|
397
|
-
value: function leaveMeeting(
|
|
398
|
-
var locusUrl =
|
|
399
|
-
selfId =
|
|
400
|
-
url =
|
|
401
|
-
resourceId =
|
|
402
|
-
correlationId =
|
|
447
|
+
value: function leaveMeeting(_ref6) {
|
|
448
|
+
var locusUrl = _ref6.locusUrl,
|
|
449
|
+
selfId = _ref6.selfId,
|
|
450
|
+
url = _ref6.deviceUrl,
|
|
451
|
+
resourceId = _ref6.resourceId,
|
|
452
|
+
correlationId = _ref6.correlationId;
|
|
403
453
|
_loggerProxy.default.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);
|
|
404
454
|
var uri = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT, "/").concat(selfId, "/").concat(_constants.LEAVE);
|
|
405
455
|
var body = {
|
|
@@ -595,10 +645,10 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
595
645
|
*/
|
|
596
646
|
}, {
|
|
597
647
|
key: "sendDTMF",
|
|
598
|
-
value: function sendDTMF(
|
|
599
|
-
var locusUrl =
|
|
600
|
-
deviceUrl =
|
|
601
|
-
tones =
|
|
648
|
+
value: function sendDTMF(_ref7) {
|
|
649
|
+
var locusUrl = _ref7.locusUrl,
|
|
650
|
+
deviceUrl = _ref7.deviceUrl,
|
|
651
|
+
tones = _ref7.tones;
|
|
602
652
|
// @ts-ignore
|
|
603
653
|
return this.request({
|
|
604
654
|
method: _constants.HTTP_VERBS.POST,
|
|
@@ -629,12 +679,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
629
679
|
*/
|
|
630
680
|
}, {
|
|
631
681
|
key: "changeVideoLayout",
|
|
632
|
-
value: function changeVideoLayout(
|
|
633
|
-
var locusUrl =
|
|
634
|
-
deviceUrl =
|
|
635
|
-
layoutType =
|
|
636
|
-
main =
|
|
637
|
-
content =
|
|
682
|
+
value: function changeVideoLayout(_ref8) {
|
|
683
|
+
var locusUrl = _ref8.locusUrl,
|
|
684
|
+
deviceUrl = _ref8.deviceUrl,
|
|
685
|
+
layoutType = _ref8.layoutType,
|
|
686
|
+
main = _ref8.main,
|
|
687
|
+
content = _ref8.content;
|
|
638
688
|
// send main/content renderInfo only if both width and height are specified
|
|
639
689
|
if (main && (!main.width || !main.height)) {
|
|
640
690
|
return _promise.default.reject(new Error("Both width and height must be specified. One of them is missing for main: ".concat((0, _stringify.default)(main))));
|
|
@@ -679,8 +729,8 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
679
729
|
*/
|
|
680
730
|
}, {
|
|
681
731
|
key: "endMeetingForAll",
|
|
682
|
-
value: function endMeetingForAll(
|
|
683
|
-
var locusUrl =
|
|
732
|
+
value: function endMeetingForAll(_ref9) {
|
|
733
|
+
var locusUrl = _ref9.locusUrl;
|
|
684
734
|
var uri = "".concat(locusUrl, "/").concat(_constants.END);
|
|
685
735
|
|
|
686
736
|
// @ts-ignore
|
|
@@ -698,8 +748,8 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
698
748
|
*/
|
|
699
749
|
}, {
|
|
700
750
|
key: "keepAlive",
|
|
701
|
-
value: function keepAlive(
|
|
702
|
-
var keepAliveUrl =
|
|
751
|
+
value: function keepAlive(_ref10) {
|
|
752
|
+
var keepAliveUrl = _ref10.keepAliveUrl;
|
|
703
753
|
// @ts-ignore
|
|
704
754
|
return this.request({
|
|
705
755
|
method: _constants.HTTP_VERBS.GET,
|
|
@@ -717,10 +767,10 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
717
767
|
*/
|
|
718
768
|
}, {
|
|
719
769
|
key: "sendReaction",
|
|
720
|
-
value: function sendReaction(
|
|
721
|
-
var reactionChannelUrl =
|
|
722
|
-
reaction =
|
|
723
|
-
participantId =
|
|
770
|
+
value: function sendReaction(_ref11) {
|
|
771
|
+
var reactionChannelUrl = _ref11.reactionChannelUrl,
|
|
772
|
+
reaction = _ref11.reaction,
|
|
773
|
+
participantId = _ref11.participantId;
|
|
724
774
|
var uri = reactionChannelUrl;
|
|
725
775
|
|
|
726
776
|
// @ts-ignore
|
|
@@ -744,10 +794,10 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
744
794
|
*/
|
|
745
795
|
}, {
|
|
746
796
|
key: "toggleReactions",
|
|
747
|
-
value: function toggleReactions(
|
|
748
|
-
var enable =
|
|
749
|
-
locusUrl =
|
|
750
|
-
requestingParticipantId =
|
|
797
|
+
value: function toggleReactions(_ref12) {
|
|
798
|
+
var enable = _ref12.enable,
|
|
799
|
+
locusUrl = _ref12.locusUrl,
|
|
800
|
+
requestingParticipantId = _ref12.requestingParticipantId;
|
|
751
801
|
var uri = "".concat(locusUrl, "/").concat(_constants.CONTROLS);
|
|
752
802
|
|
|
753
803
|
// @ts-ignore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeetingRequest","attrs","options","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","breakoutsSupported","LoggerProxy","logger","info","url","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","deviceCapabilities","BREAKOUTS","BREAKOUTS_SUPPORTED","webex","clientRegion","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","get","LOCI","CALL","invitee","address","error","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","catch","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","MEDIA","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","reactionChannelUrl","reaction","participantId","sender","enable","requestingParticipantId","reactions","enabled","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n LOCUS,\n MEDIA,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n} from '../constants';\nimport {Reaction} from '../reactions/reactions.type';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n\n constructor(attrs: any, options: any) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n breakoutsSupported: boolean;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding,\n breakoutsSupported,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences: {\n preferTranscoding: preferTranscoding ?? true,\n },\n };\n\n if (breakoutsSupported) {\n body.deviceCapabilities = [BREAKOUTS.BREAKOUTS_SUPPORTED];\n }\n\n // @ts-ignore\n if (this.webex.meetings.clientRegion) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.clientRegion.regionCode;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage) {\n body.localMedias = roapMessage.localMedias;\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.syncUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n syncMeeting(options: {desync: boolean; syncUrl: string}) {\n /* eslint-disable no-else-return */\n const {desync} = options;\n let {syncUrl} = options;\n\n /* istanbul ignore else */\n if (desync) {\n // check for existing URL parameters\n syncUrl = syncUrl\n .concat(syncUrl.split('?')[1] ? '&' : '?')\n .concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: syncUrl,\n }) // TODO: Handle if delta sync failed . Get the full locus object\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`\n );\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getFullLocus(options: {desync: boolean; locusUrl: string}) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getFullLocus --> Error getting full locus, error ${err}`\n );\n\n return err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Toggle remote audio and/or video\n * @param {Object} options options for toggling\n * @param {String} options.selfId Locus self id??\n * @param {String} options.locusUrl Locus url\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.localMedias local sdps\n * @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)\n * @returns {Promise}\n */\n remoteAudioVideoToggle(\n options:\n | {\n selfId: string;\n locusUrl: string;\n deviceUrl: string;\n resourceId: string;\n localMedias: string;\n }\n | any\n ) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n respOnlySdp: true,\n localMedias: options.localMedias,\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true,\n },\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MeetingRequest","attrs","options","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","joinCookieRaw","joinCookie","JSON","parse","LoggerProxy","logger","error","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","breakoutsSupported","info","url","getJoinCookie","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","deviceCapabilities","BREAKOUTS","BREAKOUTS_SUPPORTED","clientRegion","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","LOCI","CALL","invitee","address","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","MEDIA","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","reactionChannelUrl","reaction","participantId","sender","enable","requestingParticipantId","reactions","enabled","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n LOCUS,\n MEDIA,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n} from '../constants';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n breakoutsSupported: boolean;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding,\n breakoutsSupported,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const joinCookie = await this.getJoinCookie();\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences: {\n preferTranscoding: preferTranscoding ?? true,\n joinCookie,\n },\n };\n\n if (breakoutsSupported) {\n body.deviceCapabilities = [BREAKOUTS.BREAKOUTS_SUPPORTED];\n }\n\n // @ts-ignore\n if (this.webex.meetings.clientRegion) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.clientRegion.regionCode;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage) {\n body.localMedias = roapMessage.localMedias;\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.syncUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n syncMeeting(options: {desync: boolean; syncUrl: string}) {\n /* eslint-disable no-else-return */\n const {desync} = options;\n let {syncUrl} = options;\n\n /* istanbul ignore else */\n if (desync) {\n // check for existing URL parameters\n syncUrl = syncUrl\n .concat(syncUrl.split('?')[1] ? '&' : '?')\n .concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: syncUrl,\n }) // TODO: Handle if delta sync failed . Get the full locus object\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`\n );\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getFullLocus(options: {desync: boolean; locusUrl: string}) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getFullLocus --> Error getting full locus, error ${err}`\n );\n\n return err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Toggle remote audio and/or video\n * @param {Object} options options for toggling\n * @param {String} options.selfId Locus self id??\n * @param {String} options.locusUrl Locus url\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.localMedias local sdps\n * @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)\n * @returns {Promise}\n */\n remoteAudioVideoToggle(\n options:\n | {\n selfId: string;\n locusUrl: string;\n deviceUrl: string;\n resourceId: string;\n localMedias: string;\n }\n | any\n ) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n respOnlySdp: true,\n localMedias: options.localMedias,\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true,\n },\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -72,7 +72,7 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
72
72
|
key: "gatherReachability",
|
|
73
73
|
value: function () {
|
|
74
74
|
var _gatherReachability = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
75
|
-
var clusters, results;
|
|
75
|
+
var _yield$this$reachabil, clusters, joinCookie, results;
|
|
76
76
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
77
77
|
while (1) switch (_context.prev = _context.next) {
|
|
78
78
|
case 0:
|
|
@@ -81,32 +81,40 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
81
81
|
// Remove stored reachability results to ensure no stale data
|
|
82
82
|
// @ts-ignore
|
|
83
83
|
_context.next = 3;
|
|
84
|
-
return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.
|
|
84
|
+
return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.localStorageResult);
|
|
85
85
|
case 3:
|
|
86
|
-
_context.
|
|
87
|
-
|
|
86
|
+
_context.next = 5;
|
|
87
|
+
return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.localStorageJoinCookie);
|
|
88
|
+
case 5:
|
|
89
|
+
_context.prev = 5;
|
|
90
|
+
_context.next = 8;
|
|
88
91
|
return this.reachabilityRequest.getClusters();
|
|
89
|
-
case
|
|
90
|
-
|
|
91
|
-
|
|
92
|
+
case 8:
|
|
93
|
+
_yield$this$reachabil = _context.sent;
|
|
94
|
+
clusters = _yield$this$reachabil.clusters;
|
|
95
|
+
joinCookie = _yield$this$reachabil.joinCookie;
|
|
96
|
+
_context.next = 13;
|
|
92
97
|
return this.performReachabilityCheck(clusters);
|
|
93
|
-
case
|
|
98
|
+
case 13:
|
|
94
99
|
results = _context.sent;
|
|
95
|
-
_context.next =
|
|
96
|
-
return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.
|
|
97
|
-
case
|
|
100
|
+
_context.next = 16;
|
|
101
|
+
return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorageResult, (0, _stringify.default)(results));
|
|
102
|
+
case 16:
|
|
103
|
+
_context.next = 18;
|
|
104
|
+
return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorageJoinCookie, (0, _stringify.default)(joinCookie));
|
|
105
|
+
case 18:
|
|
98
106
|
_loggerProxy.default.logger.log('Reachability:index#gatherReachability --> Reachability checks completed');
|
|
99
107
|
return _context.abrupt("return", results);
|
|
100
|
-
case
|
|
101
|
-
_context.prev =
|
|
102
|
-
_context.t0 = _context["catch"](
|
|
108
|
+
case 22:
|
|
109
|
+
_context.prev = 22;
|
|
110
|
+
_context.t0 = _context["catch"](5);
|
|
103
111
|
_loggerProxy.default.logger.error("Reachability:index#gatherReachability --> Error in calling getClusters(): ".concat(_context.t0));
|
|
104
112
|
return _context.abrupt("return", {});
|
|
105
|
-
case
|
|
113
|
+
case 26:
|
|
106
114
|
case "end":
|
|
107
115
|
return _context.stop();
|
|
108
116
|
}
|
|
109
|
-
}, _callee, this, [[
|
|
117
|
+
}, _callee, this, [[5, 22]]);
|
|
110
118
|
}));
|
|
111
119
|
function gatherReachability() {
|
|
112
120
|
return _gatherReachability.apply(this, arguments);
|
|
@@ -129,7 +137,7 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
129
137
|
case 0:
|
|
130
138
|
reachable = false; // @ts-ignore
|
|
131
139
|
_context2.next = 3;
|
|
132
|
-
return this.webex.boundedStorage.get(this.namespace, _constants.REACHABILITY.
|
|
140
|
+
return this.webex.boundedStorage.get(this.namespace, _constants.REACHABILITY.localStorageResult).catch(function () {});
|
|
133
141
|
case 3:
|
|
134
142
|
reachabilityData = _context2.sent;
|
|
135
143
|
if (reachabilityData) {
|