@webex/plugin-meetings 1.149.1 → 1.151.0
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/constants.js +14 -4
- package/dist/constants.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +88 -11
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/meeting/index.js +368 -42
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +17 -41
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting-info/index.js +1 -1
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/util.js +14 -0
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meetings/index.js +1 -1
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/util.js +0 -16
- package/dist/meetings/util.js.map +1 -1
- package/dist/members/index.js +72 -11
- package/dist/members/index.js.map +1 -1
- package/dist/metrics/config.js +6 -0
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/index.js +26 -1
- package/dist/metrics/index.js.map +1 -1
- package/dist/peer-connection-manager/index.js +1 -1
- package/dist/peer-connection-manager/index.js.map +1 -1
- package/package.json +5 -5
- package/src/constants.js +11 -2
- package/src/locus-info/mediaSharesUtils.js +84 -12
- package/src/meeting/index.js +350 -29
- package/src/meeting/request.js +50 -29
- package/src/meeting-info/index.js +4 -1
- package/src/meeting-info/util.js +13 -0
- package/src/meetings/index.js +1 -1
- package/src/meetings/util.js +0 -14
- package/src/members/index.js +80 -11
- package/src/metrics/config.js +6 -0
- package/src/metrics/index.js +23 -2
- package/src/peer-connection-manager/index.js +7 -2
- package/test/integration/spec/journey.js +177 -3
- package/test/integration/spec/space-meeting.js +33 -5
- package/test/unit/spec/meeting/index.js +547 -2
- package/test/utils/testUtils.js +18 -1
- package/test/utils/webex-test-users.js +2 -0
package/dist/meeting/request.js
CHANGED
|
@@ -149,12 +149,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
url = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT);
|
|
152
|
-
_context.next =
|
|
152
|
+
_context.next = 23;
|
|
153
153
|
break;
|
|
154
154
|
|
|
155
155
|
case 11:
|
|
156
|
-
if (!meetingNumber) {
|
|
157
|
-
_context.next =
|
|
156
|
+
if (!(sipUri || meetingNumber)) {
|
|
157
|
+
_context.next = 23;
|
|
158
158
|
break;
|
|
159
159
|
}
|
|
160
160
|
|
|
@@ -165,7 +165,7 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
165
165
|
case 15:
|
|
166
166
|
url = "".concat(this.webex.internal.services.get('locus'), "/").concat(_constants.LOCI, "/").concat(_constants.CALL);
|
|
167
167
|
body.invitee = {
|
|
168
|
-
address: "wbxmn:".concat(meetingNumber)
|
|
168
|
+
address: sipUri || "wbxmn:".concat(meetingNumber)
|
|
169
169
|
};
|
|
170
170
|
_context.next = 23;
|
|
171
171
|
break;
|
|
@@ -174,41 +174,11 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
174
174
|
_context.prev = 19;
|
|
175
175
|
_context.t0 = _context["catch"](12);
|
|
176
176
|
|
|
177
|
-
_loggerProxy.default.logger.error("Meeting:request#joinMeeting
|
|
177
|
+
_loggerProxy.default.logger.error("Meeting:request#joinMeeting ".concat(sipUri ? 'sipUri' : 'meetingNumber', " --> ").concat(_context.t0));
|
|
178
178
|
|
|
179
179
|
throw _context.t0;
|
|
180
180
|
|
|
181
181
|
case 23:
|
|
182
|
-
_context.next = 37;
|
|
183
|
-
break;
|
|
184
|
-
|
|
185
|
-
case 25:
|
|
186
|
-
if (!sipUri) {
|
|
187
|
-
_context.next = 37;
|
|
188
|
-
break;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
_context.prev = 26;
|
|
192
|
-
_context.next = 29;
|
|
193
|
-
return this.webex.internal.services.waitForCatalog('postauth');
|
|
194
|
-
|
|
195
|
-
case 29:
|
|
196
|
-
url = "".concat(this.webex.internal.services.get('locus'), "/").concat(_constants.LOCI, "/").concat(_constants.CALL);
|
|
197
|
-
body.invitee = {
|
|
198
|
-
address: sipUri
|
|
199
|
-
};
|
|
200
|
-
_context.next = 37;
|
|
201
|
-
break;
|
|
202
|
-
|
|
203
|
-
case 33:
|
|
204
|
-
_context.prev = 33;
|
|
205
|
-
_context.t1 = _context["catch"](26);
|
|
206
|
-
|
|
207
|
-
_loggerProxy.default.logger.error("Meeting:request#joinMeeting sipUrl --> ".concat(_context.t1));
|
|
208
|
-
|
|
209
|
-
throw _context.t1;
|
|
210
|
-
|
|
211
|
-
case 37:
|
|
212
182
|
// TODO: -- this will be resolved in SDK request
|
|
213
183
|
url = url.concat("?".concat(_constants.ALTERNATE_REDIRECT_TRUE));
|
|
214
184
|
|
|
@@ -228,12 +198,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
228
198
|
body: body
|
|
229
199
|
}));
|
|
230
200
|
|
|
231
|
-
case
|
|
201
|
+
case 27:
|
|
232
202
|
case "end":
|
|
233
203
|
return _context.stop();
|
|
234
204
|
}
|
|
235
205
|
}
|
|
236
|
-
}, _callee, this, [[12, 19]
|
|
206
|
+
}, _callee, this, [[12, 19]]);
|
|
237
207
|
}));
|
|
238
208
|
|
|
239
209
|
function joinMeeting(_x) {
|
|
@@ -631,13 +601,19 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
631
601
|
};
|
|
632
602
|
}
|
|
633
603
|
|
|
604
|
+
var body = {
|
|
605
|
+
floor: floorReq,
|
|
606
|
+
resourceUrl: options.resourceUrl
|
|
607
|
+
};
|
|
608
|
+
|
|
609
|
+
if (options !== null && options !== void 0 && options.resourceToken) {
|
|
610
|
+
body.resourceToken = options === null || options === void 0 ? void 0 : options.resourceToken;
|
|
611
|
+
}
|
|
612
|
+
|
|
634
613
|
return this.request({
|
|
635
614
|
uri: options.uri,
|
|
636
615
|
method: _constants.HTTP_VERBS.PUT,
|
|
637
|
-
body:
|
|
638
|
-
floor: floorReq,
|
|
639
|
-
resourceUrl: options.resourceUrl
|
|
640
|
-
}
|
|
616
|
+
body: body
|
|
641
617
|
});
|
|
642
618
|
}
|
|
643
619
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["request.js"],"names":["MeetingRequest","attrs","options","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","sipUri","meetingNumber","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","LoggerProxy","logger","info","url","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","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","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","catch","err","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","record","recording","paused","PATCH","lock","locked","DECLINE","reason","MEDIA","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","StatelessWebexPlugin"],"mappings":"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","sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\nimport {StatelessWebexPlugin} from '@webex/webex-core';\nimport {\n deviceType\n} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n CALL,\n CONTROLS,\n DECLINE,\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';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n constructor(attrs, options) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {leading: true, trailing: true});\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 * @returns {Promise}\n */\n async joinMeeting(options) {\n const {\n asResourceOccupant, sipUri, meetingNumber, deviceUrl, locusUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, preferTranscoding\n } = options;\n\n LoggerProxy.logger.info(\n 'Meeting:request#joinMeeting --> Joining a meeting',\n correlationId\n );\n\n let url = '';\n\n const body = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\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 (this.webex.meetings.clientRegion) {\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n body.device.regionCode = this.webex.meetings.clientRegion.regionCode;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n }\n else if (meetingNumber) {\n try {\n await this.webex.internal.services.waitForCatalog('postauth');\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: `wbxmn:${meetingNumber}`\n };\n }\n catch (e) {\n LoggerProxy.logger.error(`Meeting:request#joinMeeting webex meeting id--> ${e}`);\n throw (e);\n }\n }\n else if (sipUri) {\n try {\n await this.webex.internal.services.waitForCatalog('postauth');\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: sipUri\n };\n }\n catch (e) {\n LoggerProxy.logger.error(`Meeting:request#joinMeeting sipUrl --> ${e}`);\n throw (e);\n }\n }\n\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === sipUri) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_]\n };\n }\n\n if (roapMessage) {\n body.localMedias = roapMessage.localMedias;\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body\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.localUrl 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 dialIn({\n locusUrl, dialInUrl, clientUrl, correlationId\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 return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`);\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.localUrl 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 dialOut({\n locusUrl, dialOutUrl, phoneNumber, clientUrl, correlationId\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 return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolen} 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) {\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.concat(syncUrl.split('?')[1] ? '&' : '?').concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\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(`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`);\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolen} 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) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#getFullLocus --> Error getting full locus, error ${err}`);\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 disconnectPhoneAudio({\n locusUrl, phoneUrl, correlationId, selfId\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 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, selfId, deviceUrl: url, resourceId, correlationId\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#leaveMeeting --> Leaving a meeting',\n correlationId\n );\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url\n },\n usingResource: resourceId || null,\n correlationId\n };\n\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) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n correlationId: options.correlationId\n };\n\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.id\n * @returns {Promise}\n */\n recordMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n record: {\n recording: options.recording,\n paused: options.paused\n }\n };\n\n return this.request({\n method: HTTP_VERBS.PATCH,\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 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) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n ...(options.reason && {reason: options.reason})\n };\n\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 * @returns {Promise}\n */\n remoteAudioVideoToggle(options) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\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 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(options) {\n let floorReq = {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 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 return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body: {\n floor: floorReq,\n resourceUrl: options.resourceUrl\n }\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}) {\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 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, deviceUrl, layoutType, main, content\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(new Error(`Both width and height must be specified. One of them is missing for main: ${JSON.stringify(main)}`));\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for content: ${JSON.stringify(content)}`));\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 = (renderInfoMain || renderInfoContent) ?\n {\n renderInfo:\n {\n main: renderInfoMain,\n content: renderInfoContent\n }\n } : undefined;\n\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"]}
|
|
1
|
+
{"version":3,"sources":["request.js"],"names":["MeetingRequest","attrs","options","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","sipUri","meetingNumber","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","LoggerProxy","logger","info","url","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","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","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","catch","err","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","record","recording","paused","PATCH","lock","locked","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","StatelessWebexPlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;AAEA;;AACA;;;;;;;;;;AAmBA;AACA;AACA;IACqBA,c;;;;;AACnB,0BAAYC,KAAZ,EAAmBC,OAAnB,EAA4B;AAAA;;AAAA;AAC1B,8BAAMD,KAAN,EAAaC,OAAb;AACA,UAAKC,0BAAL,GAAkC,wBAAS,MAAKC,iBAAd,EAAiC,IAAjC,EAAuC;AAACC,MAAAA,OAAO,EAAE,IAAV;AAAgBC,MAAAA,QAAQ,EAAE;AAA1B,KAAvC,CAAlC;AAF0B;AAG3B;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;iGACE,iBAAkBJ,OAAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAEIK,gBAAAA,kBAFJ,GAeML,OAfN,CAEIK,kBAFJ,EAGIC,MAHJ,GAeMN,OAfN,CAGIM,MAHJ,EAIIC,aAJJ,GAeMP,OAfN,CAIIO,aAJJ,EAKIC,SALJ,GAeMR,OAfN,CAKIQ,SALJ,EAMIC,QANJ,GAeMT,OAfN,CAMIS,QANJ,EAOIC,UAPJ,GAeMV,OAfN,CAOIU,UAPJ,EAQIC,aARJ,GAeMX,OAfN,CAQIW,aARJ,EASIC,kBATJ,GAeMZ,OAfN,CASIY,kBATJ,EAUIC,SAVJ,GAeMb,OAfN,CAUIa,SAVJ,EAWIC,GAXJ,GAeMd,OAfN,CAWIc,GAXJ,EAYIC,cAZJ,GAeMf,OAfN,CAYIe,cAZJ,EAaIC,WAbJ,GAeMhB,OAfN,CAaIgB,WAbJ,EAcIC,iBAdJ,GAeMjB,OAfN,CAcIiB,iBAdJ;;AAiBEC,qCAAYC,MAAZ,CAAmBC,IAAnB,CACE,mDADF,EAEET,aAFF;;AAKIU,gBAAAA,GAtBN,GAsBY,EAtBZ;AAwBQC,gBAAAA,IAxBR,GAwBe;AACXjB,kBAAAA,kBAAkB,EAAlBA,kBADW;AAEXkB,kBAAAA,MAAM,EAAE;AACNF,oBAAAA,GAAG,EAAEb,SADC;AAENgB,oBAAAA,UAAU,EAAE,KAAKC,MAAL,CAAYC,QAAZ,CAAqBF;AAF3B,mBAFG;AAMXG,kBAAAA,aAAa,EAAEjB,UAAU,IAAI,IANlB;AAOXkB,kBAAAA,mBAAmB,EAAElB,UAAU,IAAIK,cAAd,IAAgC,KAP1C;AAQXJ,kBAAAA,aAAa,EAAbA,aARW;AASXkB,kBAAAA,WAAW,EAAE,IATF;AAUXC,kBAAAA,gBAAgB,EAAE,IAVP;AAWXlB,kBAAAA,kBAAkB,EAAEA,kBAAkB,IAAI,KAX/B;AAYXmB,kBAAAA,mBAAmB,EAAE,CAZV;AAaXC,kBAAAA,sBAAsB,EAAE;AACtBf,oBAAAA,iBAAiB,EAAEA,iBAAF,aAAEA,iBAAF,cAAEA,iBAAF,GAAuB;AADlB;AAbb,iBAxBf;;AA0CE,oBAAI,KAAKgB,KAAL,CAAWP,QAAX,CAAoBQ,YAAxB,EAAsC;AACpCZ,kBAAAA,IAAI,CAACC,MAAL,CAAYY,WAAZ,GAA0B,KAAKF,KAAL,CAAWP,QAAX,CAAoBQ,YAApB,CAAiCC,WAA3D;AACAb,kBAAAA,IAAI,CAACC,MAAL,CAAYa,UAAZ,GAAyB,KAAKH,KAAL,CAAWP,QAAX,CAAoBQ,YAApB,CAAiCE,UAA1D;AACD;;AAED,oBAAIvB,SAAS,KAAKwB,SAAlB,EAA6B;AAC3Bf,kBAAAA,IAAI,CAACT,SAAL,GAAiBA,SAAjB;AACD;;AAED,oBAAIC,GAAG,KAAKuB,SAAZ,EAAuB;AACrBf,kBAAAA,IAAI,CAACR,GAAL,GAAWA,GAAX;AACD;;AArDH,qBAuDML,QAvDN;AAAA;AAAA;AAAA;;AAwDIY,gBAAAA,GAAG,aAAMZ,QAAN,cAAkB6B,sBAAlB,CAAH;AAxDJ;AAAA;;AAAA;AAAA,sBA0DWhC,MAAM,IAAIC,aA1DrB;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,uBA4DY,KAAK0B,KAAL,CAAWM,QAAX,CAAoBC,QAApB,CAA6BC,cAA7B,CAA4C,UAA5C,CA5DZ;;AAAA;AA6DMpB,gBAAAA,GAAG,aAAM,KAAKY,KAAL,CAAWM,QAAX,CAAoBC,QAApB,CAA6BE,GAA7B,CAAiC,OAAjC,CAAN,cAAmDC,eAAnD,cAA2DC,eAA3D,CAAH;AACAtB,gBAAAA,IAAI,CAACuB,OAAL,GAAe;AACbC,kBAAAA,OAAO,EAAExC,MAAM,oBAAaC,aAAb;AADF,iBAAf;AA9DN;AAAA;;AAAA;AAAA;AAAA;;AAmEMW,qCAAYC,MAAZ,CAAmB4B,KAAnB,uCAAwDzC,MAAM,GAAG,QAAH,GAAc,eAA5E;;AAnEN;;AAAA;AAyEE;AACAe,gBAAAA,GAAG,GAAGA,GAAG,CAAC2B,MAAJ,YAAeC,kCAAf,EAAN;;AAEA,oBAAIvC,UAAU,KAAKJ,MAAnB,EAA2B;AACzBgB,kBAAAA,IAAI,CAAC4B,eAAL,GAAuB;AACrBC,oBAAAA,cAAc,EAAE,CAACC,mBAAD;AADK,mBAAvB;AAGD;;AAED,oBAAIpC,WAAJ,EAAiB;AACfM,kBAAAA,IAAI,CAAC+B,WAAL,GAAmBrC,WAAW,CAACqC,WAA/B;AACD;;AApFH,iDAsFS,KAAKC,OAAL,CAAa;AAClBC,kBAAAA,MAAM,EAAEC,sBAAWC,IADD;AAElBC,kBAAAA,GAAG,EAAErC,GAFa;AAGlBC,kBAAAA,IAAI,EAAJA;AAHkB,iBAAb,CAtFT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;AA6FA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,sBAKG;AAAA,UAJDb,QAIC,QAJDA,QAIC;AAAA,UAHDkD,SAGC,QAHDA,SAGC;AAAA,UAFDC,SAEC,QAFDA,SAEC;AAAA,UADDjD,aACC,QADDA,aACC;;AACDO,2BAAYC,MAAZ,CAAmBC,IAAnB,CACE,0DADF,EAEET,aAFF;;AAIA,UAAM+C,GAAG,aAAMjD,QAAN,cAAkB6B,sBAAlB,CAAT;AAEA,UAAMhB,IAAI,GAAG;AACXC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAEA,mBAAWqC,WADjB;AAENC,UAAAA,eAAe,EAAEC,mCAFX;AAGN1C,UAAAA,GAAG,EAAEsC,SAHC;AAINC,UAAAA,SAAS,EAATA;AAJM,SADG;AAOXjD,QAAAA,aAAa,EAAbA;AAPW,OAAb;AAUA,aAAO,KAAK2C,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAWC,IADD;AAElBC,QAAAA,GAAG,EAAHA,GAFkB;AAGlBpC,QAAAA,IAAI,EAAJA;AAHkB,OAAb,EAIJ0C,KAJI,CAIE,UAACC,GAAD,EAAS;AAChB/C,6BAAYC,MAAZ,CAAmB4B,KAAnB,iFAAkGkB,GAAlG;;AAEA,cAAMA,GAAN;AACD,OARM,CAAP;AASD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,wBAMG;AAAA,UALDxD,QAKC,SALDA,QAKC;AAAA,UAJDyD,UAIC,SAJDA,UAIC;AAAA,UAHDC,WAGC,SAHDA,WAGC;AAAA,UAFDP,SAEC,SAFDA,SAEC;AAAA,UADDjD,aACC,SADDA,aACC;;AACDO,2BAAYC,MAAZ,CAAmBC,IAAnB,CACE,4DADF,EAEET,aAFF;;AAIA,UAAM+C,GAAG,aAAMjD,QAAN,cAAkB6B,sBAAlB,CAAT;AAEA,UAAMhB,IAAI,GAAG;AACXC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAEA,mBAAWqC,WADjB;AAENC,UAAAA,eAAe,EAAEM,oCAFX;AAGN/C,UAAAA,GAAG,EAAE6C,UAHC;AAING,UAAAA,cAAc,EAAEF,WAJV;AAKNP,UAAAA,SAAS,EAATA;AALM,SADG;AAQXjD,QAAAA,aAAa,EAAbA;AARW,OAAb;AAWA,aAAO,KAAK2C,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAWC,IADD;AAElBC,QAAAA,GAAG,EAAHA,GAFkB;AAGlBpC,QAAAA,IAAI,EAAJA;AAHkB,OAAb,EAIJ0C,KAJI,CAIE,UAACC,GAAD,EAAS;AAChB/C,6BAAYC,MAAZ,CAAmB4B,KAAnB,mFAAoGkB,GAApG;;AAEA,cAAMA,GAAN;AACD,OARM,CAAP;AASD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,qBAAYjE,OAAZ,EAAqB;AACnB;AACA,UAAOsE,MAAP,GAAiBtE,OAAjB,CAAOsE,MAAP;AACA,UAAKC,OAAL,GAAgBvE,OAAhB,CAAKuE,OAAL;AAEA;;AACA,UAAID,MAAJ,EAAY;AACV;AACAC,QAAAA,OAAO,GAAGA,OAAO,CAACvB,MAAR,CAAeuB,OAAO,CAACC,KAAR,CAAc,GAAd,EAAmB,CAAnB,IAAwB,GAAxB,GAA8B,GAA7C,EAAkDxB,MAAlD,WAA4DyB,iBAAMC,SAAlE,cAA+EJ,MAA/E,EAAV;AACD;;AAED,aAAO,KAAKhB,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAWmB,GADD;AAElBjB,QAAAA,GAAG,EAAEa;AAFa,OAAb,EAGJ;AAHI,OAIJP,KAJI,CAIE,UAACC,GAAD,EAAS;AACd/C,6BAAYC,MAAZ,CAAmB4B,KAAnB,wEAAyFkB,GAAzF;;AAEA,eAAOA,GAAP;AACD,OARI,CAAP;AASD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,sBAAajE,OAAb,EAAsB;AACpB,UAAKS,QAAL,GAAiBT,OAAjB,CAAKS,QAAL;AACA,UAAO6D,MAAP,GAAiBtE,OAAjB,CAAOsE,MAAP;;AAEA,UAAI7D,QAAJ,EAAc;AACZ,YAAI6D,MAAJ,EAAY;AACV7D,UAAAA,QAAQ,eAAQgE,iBAAMC,SAAd,cAA2BJ,MAA3B,CAAR;AACD;;AAED,eAAO,KAAKhB,OAAL,CAAa;AAClBC,UAAAA,MAAM,EAAEC,sBAAWmB,GADD;AAElBjB,UAAAA,GAAG,EAAEjD;AAFa,SAAb,EAGJuD,KAHI,CAGE,UAACC,GAAD,EAAS;AAChB/C,+BAAYC,MAAZ,CAAmB4B,KAAnB,4EAA6FkB,GAA7F;;AAEA,iBAAOA,GAAP;AACD,SAPM,CAAP;AAQD;;AAED,aAAO,iBAAQW,MAAR,EAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,qCAKG;AAAA,UAJDnE,QAIC,SAJDA,QAIC;AAAA,UAHDoE,QAGC,SAHDA,QAGC;AAAA,UAFDlE,aAEC,SAFDA,aAEC;AAAA,UADDmE,MACC,SADDA,MACC;;AACD5D,2BAAYC,MAAZ,CAAmBC,IAAnB,kEAC4DyD,QAD5D,gBAEElE,aAFF;;AAIA,UAAM+C,GAAG,aAAMjD,QAAN,cAAkB6B,sBAAlB,cAAiCwC,MAAjC,cAA2CC,gBAA3C,CAAT;AAEA,UAAMzD,IAAI,GAAG;AACXC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAEA,mBAAWqC,WADjB;AAENxC,UAAAA,GAAG,EAAEwD;AAFC,SADG;AAKXlE,QAAAA,aAAa,EAAbA;AALW,OAAb;AAQA,aAAO,KAAK2C,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAWwB,GADD;AAElBtB,QAAAA,GAAG,EAAHA,GAFkB;AAGlBpC,QAAAA,IAAI,EAAJA;AAHkB,OAAb,EAIJ0C,KAJI,CAIE,UAACC,GAAD,EAAS;AAChB/C,6BAAYC,MAAZ,CAAmB4B,KAAnB,gFAC0E8B,QAD1E,8BACsGZ,GADtG;;AAIA,cAAMA,GAAN;AACD,OAVM,CAAP;AAWD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,6BAMG;AAAA,UALDxD,QAKC,SALDA,QAKC;AAAA,UAJDqE,MAIC,SAJDA,MAIC;AAAA,UAHUzD,GAGV,SAHDb,SAGC;AAAA,UAFDE,UAEC,SAFDA,UAEC;AAAA,UADDC,aACC,SADDA,aACC;;AACDO,2BAAYC,MAAZ,CAAmBC,IAAnB,CACE,oDADF,EAEET,aAFF;;AAKA,UAAM+C,GAAG,aAAMjD,QAAN,cAAkB6B,sBAAlB,cAAiCwC,MAAjC,cAA2CC,gBAA3C,CAAT;AACA,UAAMzD,IAAI,GAAG;AACXC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAE,KAAKC,MAAL,CAAYC,QAAZ,CAAqBF,UAD3B;AAENH,UAAAA,GAAG,EAAHA;AAFM,SADG;AAKXM,QAAAA,aAAa,EAAEjB,UAAU,IAAI,IALlB;AAMXC,QAAAA,aAAa,EAAbA;AANW,OAAb;AASA,aAAO,KAAK2C,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAWwB,GADD;AAElBtB,QAAAA,GAAG,EAAHA,GAFkB;AAGlBpC,QAAAA,IAAI,EAAJA;AAHkB,OAAb,CAAP;AAKD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,4BAAmBtB,OAAnB,EAA4B;AAC1B,UAAM0D,GAAG,aAAM1D,OAAO,CAACS,QAAd,cAA0B6B,sBAA1B,cAAyC2C,gBAAzC,CAAT;AACA,UAAM3D,IAAI,GAAG;AACXC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAE,KAAKC,MAAL,CAAYC,QAAZ,CAAqBF,UAD3B;AAENH,UAAAA,GAAG,EAAErB,OAAO,CAACQ;AAFP,SADG;AAKXG,QAAAA,aAAa,EAAEX,OAAO,CAACW;AALZ,OAAb;AAQA,aAAO,KAAK2C,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAWwB,GADD;AAElBtB,QAAAA,GAAG,EAAHA,GAFkB;AAGlBpC,QAAAA,IAAI,EAAJA;AAHkB,OAAb,CAAP;AAKD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,uBAActB,OAAd,EAAuB;AACrB,UAAM0D,GAAG,aAAM1D,OAAO,CAACS,QAAd,cAA0ByE,mBAA1B,CAAT;AACA,UAAM5D,IAAI,GAAG;AACX6D,QAAAA,MAAM,EAAE;AACNC,UAAAA,SAAS,EAAEpF,OAAO,CAACoF,SADb;AAENC,UAAAA,MAAM,EAAErF,OAAO,CAACqF;AAFV;AADG,OAAb;AAOA,aAAO,KAAK/B,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAW8B,KADD;AAElB5B,QAAAA,GAAG,EAAHA,GAFkB;AAGlBpC,QAAAA,IAAI,EAAJA;AAHkB,OAAb,CAAP;AAKD;;;WAED,qBAAYtB,OAAZ,EAAqB;AACnB,UAAM0D,GAAG,aAAM1D,OAAO,CAACS,QAAd,cAA0ByE,mBAA1B,CAAT;AACA,UAAM5D,IAAI,GAAG;AACXiE,QAAAA,IAAI,EAAE;AACJC,UAAAA,MAAM,EAAExF,OAAO,CAACuF;AADZ;AADK,OAAb;AAMA,aAAO,KAAKjC,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAW8B,KADD;AAElB5B,QAAAA,GAAG,EAAHA,GAFkB;AAGlBpC,QAAAA,IAAI,EAAJA;AAHkB,OAAb,CAAP;AAKD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,wBAAetB,OAAf,EAAwB;AACtB,UAAM0D,GAAG,aAAM1D,OAAO,CAACS,QAAd,cAA0B6B,sBAA1B,cAAyCmD,kBAAzC,CAAT;;AACA,UAAMnE,IAAI;AACRC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAE,KAAKC,MAAL,CAAYC,QAAZ,CAAqBF,UAD3B;AAENH,UAAAA,GAAG,EAAErB,OAAO,CAACQ;AAFP;AADA,SAKJR,OAAO,CAAC0F,MAAR,IAAkB;AAACA,QAAAA,MAAM,EAAE1F,OAAO,CAAC0F;AAAjB,OALd,CAAV;;AAQA,aAAO,KAAKpC,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAWwB,GADD;AAElBtB,QAAAA,GAAG,EAAHA,GAFkB;AAGlBpC,QAAAA,IAAI,EAAJA;AAHkB,OAAb,CAAP;AAKD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,gCAAuBtB,OAAvB,EAAgC;AAAA;;AAC9B,UAAM0D,GAAG,aAAM1D,OAAO,CAACS,QAAd,cAA0B6B,sBAA1B,cAAyCtC,OAAO,CAAC8E,MAAjD,cAA2Da,gBAA3D,CAAT;AACA,UAAMrE,IAAI,GAAG;AACXC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAE,KAAKC,MAAL,CAAYC,QAAZ,CAAqBF,UAD3B;AAENH,UAAAA,GAAG,EAAErB,OAAO,CAACQ;AAFP,SADG;AAKXmB,QAAAA,aAAa,EAAE3B,OAAO,CAACU,UAAR,IAAsB,IAL1B;AAMXC,QAAAA,aAAa,EAAEX,OAAO,CAACW,aANZ;AAOXkB,QAAAA,WAAW,EAAE,IAPF;AAQXwB,QAAAA,WAAW,EAAErD,OAAO,CAACqD,WARV;AASXrB,QAAAA,sBAAsB,EAAE;AACtBf,UAAAA,iBAAiB,2BAAEjB,OAAO,CAACiB,iBAAV,yEAA+B;AAD1B;AATb,OAAb;AAcA,aAAO,KAAKqC,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAWwB,GADD;AAElBtB,QAAAA,GAAG,EAAHA,GAFkB;AAGlBpC,QAAAA,IAAI,EAAJA;AAHkB,OAAb,CAAP;AAKD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,4BAAmBtB,OAAnB,EAA4B;AAC1B,UAAI4F,QAAQ,GAAG;AAACC,QAAAA,WAAW,EAAE7F,OAAO,CAAC6F;AAAtB,OAAf;AAEA;;AACA,UAAI7F,OAAO,CAAC6F,WAAR,KAAwBC,wBAAaC,OAAzC,EAAkD;AAChDH,QAAAA,QAAQ,GAAG;AACTI,UAAAA,WAAW,EAAE;AACX3E,YAAAA,GAAG,EAAErB,OAAO,CAACiG,SADF;AAEXC,YAAAA,OAAO,EAAE,CACP;AACE1E,cAAAA,UAAU,EAAE,KAAKC,MAAL,CAAYC,QAAZ,CAAqBF,UADnC;AAEEH,cAAAA,GAAG,EAAErB,OAAO,CAACQ;AAFf,aADO;AAFE,WADJ;AAUTqF,UAAAA,WAAW,EAAE7F,OAAO,CAAC6F,WAVZ;AAWTM,UAAAA,SAAS,EAAE;AACT9E,YAAAA,GAAG,EAAErB,OAAO,CAACiG;AADJ;AAXF,SAAX;AAeD;;AAED,UAAM3E,IAAI,GAAG;AACX8E,QAAAA,KAAK,EAAER,QADI;AAEXS,QAAAA,WAAW,EAAErG,OAAO,CAACqG;AAFV,OAAb;;AAKA,UAAIrG,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAEsG,aAAb,EAA4B;AAC1BhF,QAAAA,IAAI,CAACgF,aAAL,GAAqBtG,OAArB,aAAqBA,OAArB,uBAAqBA,OAAO,CAAEsG,aAA9B;AACD;;AAED,aAAO,KAAKhD,OAAL,CAAa;AAClBI,QAAAA,GAAG,EAAE1D,OAAO,CAAC0D,GADK;AAElBH,QAAAA,MAAM,EAAEC,sBAAWwB,GAFD;AAGlB1D,QAAAA,IAAI,EAAJA;AAHkB,OAAb,CAAP;AAKD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,yBAAuC;AAAA,UAA7Bb,QAA6B,SAA7BA,QAA6B;AAAA,UAAnBD,SAAmB,SAAnBA,SAAmB;AAAA,UAAR+F,KAAQ,SAARA,KAAQ;AACrC,aAAO,KAAKjD,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAWC,IADD;AAElBC,QAAAA,GAAG,YAAKjD,QAAL,cAAiB+F,6BAAjB,CAFe;AAGlBlF,QAAAA,IAAI,EAAE;AACJd,UAAAA,SAAS,EAATA,SADI;AAEJiG,UAAAA,IAAI,EAAE;AACJ9F,YAAAA,aAAa,EAAE+F,cAAKC,EAAL,EADX;AAEJJ,YAAAA,KAAK,EAALA;AAFI;AAFF;AAHY,OAAb,CAAP;AAWD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,kCAMG;AAAA,UALD9F,QAKC,SALDA,QAKC;AAAA,UAJDD,SAIC,SAJDA,SAIC;AAAA,UAHDoG,UAGC,SAHDA,UAGC;AAAA,UAFDC,IAEC,SAFDA,IAEC;AAAA,UADDC,OACC,SADDA,OACC;;AACD;AACA,UAAID,IAAI,KAAK,CAACA,IAAI,CAACE,KAAN,IAAe,CAACF,IAAI,CAACG,MAA1B,CAAR,EAA2C;AACzC,eAAO,iBAAQpC,MAAR,CAAe,IAAIqC,KAAJ,qFAAuF,wBAAeJ,IAAf,CAAvF,EAAf,CAAP;AACD;;AAED,UAAIC,OAAO,KAAK,CAACA,OAAO,CAACC,KAAT,IAAkB,CAACD,OAAO,CAACE,MAAhC,CAAX,EAAoD;AAClD,eAAO,iBAAQpC,MAAR,CAAe,IAAIqC,KAAJ,wFAA0F,wBAAeH,OAAf,CAA1F,EAAf,CAAP;AACD;;AAED,UAAMI,cAAc,GAAIL,IAAD,GAAS;AAACE,QAAAA,KAAK,EAAEF,IAAI,CAACE,KAAb;AAAoBC,QAAAA,MAAM,EAAEH,IAAI,CAACG;AAAjC,OAAT,GAAoD3E,SAA3E;AACA,UAAM8E,iBAAiB,GAAIL,OAAD,GAAY;AAACC,QAAAA,KAAK,EAAED,OAAO,CAACC,KAAhB;AAAuBC,QAAAA,MAAM,EAAEF,OAAO,CAACE;AAAvC,OAAZ,GAA6D3E,SAAvF;AAEA,UAAM+E,YAAY,GAAIF,cAAc,IAAIC,iBAAnB,GACnB;AACEE,QAAAA,UAAU,EACV;AACER,UAAAA,IAAI,EAAEK,cADR;AAEEJ,UAAAA,OAAO,EAAEK;AAFX;AAFF,OADmB,GAOf9E,SAPN;AASA,aAAO,KAAKiB,OAAL,CAAa;AAClBC,QAAAA,MAAM,EAAEC,sBAAWwB,GADD;AAElBtB,QAAAA,GAAG,YAAKjD,QAAL,cAAiByE,mBAAjB,CAFe;AAGlB5D,QAAAA,IAAI,EAAE;AACJgG,UAAAA,MAAM,EAAE;AACN9G,YAAAA,SAAS,EAATA,SADM;AAEN+G,YAAAA,IAAI,EAAEX,UAFA;AAGNQ,YAAAA,YAAY,EAAZA;AAHM;AADJ;AAHY,OAAb,CAAP;AAWD;;;EA5kByCI,+B","sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\nimport {StatelessWebexPlugin} from '@webex/webex-core';\nimport {deviceType} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n CALL,\n CONTROLS,\n DECLINE,\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';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n constructor(attrs, options) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {leading: true, trailing: true});\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 * @returns {Promise}\n */\n async joinMeeting(options) {\n const {\n asResourceOccupant,\n sipUri,\n meetingNumber,\n deviceUrl,\n locusUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding\n } = options;\n\n LoggerProxy.logger.info(\n 'Meeting:request#joinMeeting --> Joining a meeting',\n correlationId\n );\n\n let url = '';\n\n const body = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\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 (this.webex.meetings.clientRegion) {\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n body.device.regionCode = this.webex.meetings.clientRegion.regionCode;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n }\n else if (sipUri || meetingNumber) {\n try {\n await this.webex.internal.services.waitForCatalog('postauth');\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: sipUri || `wbxmn:${meetingNumber}`\n };\n }\n catch (e) {\n LoggerProxy.logger.error(`Meeting:request#joinMeeting ${sipUri ? 'sipUri' : 'meetingNumber'} --> ${e}`);\n throw (e);\n }\n }\n\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === sipUri) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_]\n };\n }\n\n if (roapMessage) {\n body.localMedias = roapMessage.localMedias;\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body\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.localUrl 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 dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId\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 return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`);\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.localUrl 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 dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId\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 return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolen} 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) {\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.concat(syncUrl.split('?')[1] ? '&' : '?').concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\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(`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`);\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolen} 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) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#getFullLocus --> Error getting full locus, error ${err}`);\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 disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId\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 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 LoggerProxy.logger.info(\n 'Meeting:request#leaveMeeting --> Leaving a meeting',\n correlationId\n );\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url\n },\n usingResource: resourceId || null,\n correlationId\n };\n\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) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n correlationId: options.correlationId\n };\n\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.id\n * @returns {Promise}\n */\n recordMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n record: {\n recording: options.recording,\n paused: options.paused\n }\n };\n\n return this.request({\n method: HTTP_VERBS.PATCH,\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 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) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n ...(options.reason && {reason: options.reason})\n };\n\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 * @returns {Promise}\n */\n remoteAudioVideoToggle(options) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\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 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(options) {\n let floorReq = {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 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 = {\n floor: floorReq,\n resourceUrl: options.resourceUrl\n };\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n\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}) {\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 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 // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for main: ${JSON.stringify(main)}`));\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for content: ${JSON.stringify(content)}`));\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 = (renderInfoMain || renderInfoContent) ?\n {\n renderInfo:\n {\n main: renderInfoMain,\n content: renderInfoContent\n }\n } : undefined;\n\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"]}
|
|
@@ -144,7 +144,7 @@ var MeetingInfo = /*#__PURE__*/function () {
|
|
|
144
144
|
var _this2 = this;
|
|
145
145
|
|
|
146
146
|
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
147
|
-
return this.fetchInfoOptions(destination, type).then(function (options) {
|
|
147
|
+
return this.fetchInfoOptions(_util.default.extractDestination(destination, type), type).then(function (options) {
|
|
148
148
|
return (// fetch meeting info
|
|
149
149
|
_this2.requestFetchInfo(options).catch(function (error) {
|
|
150
150
|
// if it failed the first time as meeting link
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js"],"names":["MeetingInfo","webex","meetingInfoRequest","MeetingInfoRequest","meetingInfoCollection","MeetingInfoCollection","id","get","info","set","options","fetchMeetingInfo","then","body","setMeetingInfo","sipMeetingUri","meetingLink","catch","error","LoggerProxy","logger","reject","destination","type","MeetingInfoUtil","generateOptions","fetchInfoOptions","requestFetchInfo","_MEETING_LINK_","convertLinkToSip","_SIP_URI_"],"mappings":";;;;;;;;;;;;;;;;;;AAIA;;AAIA;;AAEA;;AACA;;AACA;;AAZA;AACA;AACA;;AAYA;AACA;AACA;IACqBA,W;AACnB;AACF;AACA;AACA;AACE,uBAAYC,KAAZ,EAAmB;AAAA;AACjB,SAAKA,KAAL,GAAaA,KAAb;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;;AACI,SAAKC,kBAAL,GAA0B,IAAIC,gBAAJ,CAAuB,KAAKF,KAA5B,CAA1B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;;AACI,SAAKG,qBAAL,GAA6B,IAAIC,mBAAJ,EAA7B;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;;WACE,wBAAeC,EAAf,EAAmB;AACjB,aAAO,KAAKF,qBAAL,CAA2BG,GAA3B,CAA+BD,EAA/B,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,wBAAeA,EAAf,EAAmBE,IAAnB,EAAyB;AACvB,WAAKJ,qBAAL,CAA2BK,GAA3B,CAA+BH,EAA/B,EAAmCE,IAAnC;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,0BAAiBE,OAAjB,EAA0B;AAAA;;AACxB,aAAO,KAAKR,kBAAL,CAAwBS,gBAAxB,CAAyCD,OAAzC,EAAkDE,IAAlD,CAAuD,UAACJ,IAAD,EAAU;AACtE,YAAIA,IAAI,IAAIA,IAAI,CAACK,IAAjB,EAAuB;AACrB,UAAA,KAAI,CAACC,cAAL,CAAoBN,IAAI,CAACK,IAAL,CAAUE,aAAV,IAA2BP,IAAI,CAACK,IAAL,CAAUG,WAAzD,EAAsER,IAAI,CAACK,IAA3E;AACD;;AAED,eAAOL,IAAP;AACD,OANM,EAMJS,KANI,CAME,UAACC,KAAD,EAAW;AAClBC,6BAAYC,MAAZ,CAAmBF,KAAnB,oDAAqEA,KAArE;;AAEA,eAAO,iBAAQG,MAAR,CAAeH,KAAf,CAAP;AACD,OAVM,CAAP;AAWD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,0BAAiBI,WAAjB,EAA8BC,IAA9B,EAAoC;AAClC,aAAOC,cAAgBC,eAAhB,CAAgC;AACrCH,QAAAA,WAAW,EAAXA,WADqC;AAErCC,QAAAA,IAAI,EAAJA,IAFqC;AAGrCtB,QAAAA,KAAK,EAAE,KAAKA;AAHyB,OAAhC,CAAP;AAKD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,0BAAiBqB,WAAjB,EAA2C;AAAA;;AAAA,UAAbC,IAAa,uEAAN,IAAM;AACzC,aAAO,KAAKG,gBAAL,
|
|
1
|
+
{"version":3,"sources":["index.js"],"names":["MeetingInfo","webex","meetingInfoRequest","MeetingInfoRequest","meetingInfoCollection","MeetingInfoCollection","id","get","info","set","options","fetchMeetingInfo","then","body","setMeetingInfo","sipMeetingUri","meetingLink","catch","error","LoggerProxy","logger","reject","destination","type","MeetingInfoUtil","generateOptions","fetchInfoOptions","extractDestination","requestFetchInfo","_MEETING_LINK_","convertLinkToSip","_SIP_URI_"],"mappings":";;;;;;;;;;;;;;;;;;AAIA;;AAIA;;AAEA;;AACA;;AACA;;AAZA;AACA;AACA;;AAYA;AACA;AACA;IACqBA,W;AACnB;AACF;AACA;AACA;AACE,uBAAYC,KAAZ,EAAmB;AAAA;AACjB,SAAKA,KAAL,GAAaA,KAAb;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;;AACI,SAAKC,kBAAL,GAA0B,IAAIC,gBAAJ,CAAuB,KAAKF,KAA5B,CAA1B;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;;AACI,SAAKG,qBAAL,GAA6B,IAAIC,mBAAJ,EAA7B;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;;WACE,wBAAeC,EAAf,EAAmB;AACjB,aAAO,KAAKF,qBAAL,CAA2BG,GAA3B,CAA+BD,EAA/B,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,wBAAeA,EAAf,EAAmBE,IAAnB,EAAyB;AACvB,WAAKJ,qBAAL,CAA2BK,GAA3B,CAA+BH,EAA/B,EAAmCE,IAAnC;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,0BAAiBE,OAAjB,EAA0B;AAAA;;AACxB,aAAO,KAAKR,kBAAL,CAAwBS,gBAAxB,CAAyCD,OAAzC,EAAkDE,IAAlD,CAAuD,UAACJ,IAAD,EAAU;AACtE,YAAIA,IAAI,IAAIA,IAAI,CAACK,IAAjB,EAAuB;AACrB,UAAA,KAAI,CAACC,cAAL,CAAoBN,IAAI,CAACK,IAAL,CAAUE,aAAV,IAA2BP,IAAI,CAACK,IAAL,CAAUG,WAAzD,EAAsER,IAAI,CAACK,IAA3E;AACD;;AAED,eAAOL,IAAP;AACD,OANM,EAMJS,KANI,CAME,UAACC,KAAD,EAAW;AAClBC,6BAAYC,MAAZ,CAAmBF,KAAnB,oDAAqEA,KAArE;;AAEA,eAAO,iBAAQG,MAAR,CAAeH,KAAf,CAAP;AACD,OAVM,CAAP;AAWD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,0BAAiBI,WAAjB,EAA8BC,IAA9B,EAAoC;AAClC,aAAOC,cAAgBC,eAAhB,CAAgC;AACrCH,QAAAA,WAAW,EAAXA,WADqC;AAErCC,QAAAA,IAAI,EAAJA,IAFqC;AAGrCtB,QAAAA,KAAK,EAAE,KAAKA;AAHyB,OAAhC,CAAP;AAKD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,0BAAiBqB,WAAjB,EAA2C;AAAA;;AAAA,UAAbC,IAAa,uEAAN,IAAM;AACzC,aAAO,KAAKG,gBAAL,CACLF,cAAgBG,kBAAhB,CAAmCL,WAAnC,EAAgDC,IAAhD,CADK,EAELA,IAFK,EAGLX,IAHK,CAGA,UAACF,OAAD;AAAA,eACP;AACE,UAAA,MAAI,CAACkB,gBAAL,CAAsBlB,OAAtB,EAA+BO,KAA/B,CAAqC,UAACC,KAAD,EAAW;AAChD;AACE,gBAAIR,OAAO,CAACa,IAAR,KAAiBM,yBAArB,EAAqC;AACrC;AACE,qBAAO,MAAI,CAACD,gBAAL,CAAsB,MAAI,CAACF,gBAAL,CAAsBF,cAAgBM,gBAAhB,CAAiCR,WAAjC,CAAtB,EAAqES,oBAArE,CAAtB,CAAP;AACD;;AAED,mBAAO,iBAAQV,MAAR,CAAeH,KAAf,CAAP;AACD,WARD;AAFK;AAAA,OAHA,CAAP;AAcD","sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {\n _MEETING_LINK_,\n _SIP_URI_\n} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport MeetingInfoCollection from './collection';\nimport MeetingInfoRequest from './request';\nimport MeetingInfoUtil from './util';\n\n/**\n * @class MeetingInfo\n */\nexport default class MeetingInfo {\n /**\n *\n * @param {WebexSDK} webex\n */\n constructor(webex) {\n this.webex = webex;\n\n /**\n * The meeting info request server interface\n * @instance\n * @type {Object}\n * @private\n * @memberof MeetingInfo\n */\n this.meetingInfoRequest = new MeetingInfoRequest(this.webex);\n /**\n * The meeting information collection interface\n * @instance\n * @type {Object}\n * @private\n * @memberof MeetingInfo\n */\n this.meetingInfoCollection = new MeetingInfoCollection();\n }\n\n /**\n * @param {string} id\n * @returns {object}\n * @public\n * @memberof MeetingInfo\n */\n getMeetingInfo(id) {\n return this.meetingInfoCollection.get(id);\n }\n\n /**\n * @param {string} id\n * @param {object} info\n * @returns {null}\n * @public\n * @memberof MeetingInfo\n */\n setMeetingInfo(id, info) {\n this.meetingInfoCollection.set(id, info);\n }\n\n /**\n * Helper to make the actual MeetingInfo request and set the meetingInfo if successful, else reject\n * @param {Object} options\n * @returns {Promise}\n * @private\n * @memberof MeetingInfo\n */\n requestFetchInfo(options) {\n return this.meetingInfoRequest.fetchMeetingInfo(options).then((info) => {\n if (info && info.body) {\n this.setMeetingInfo(info.body.sipMeetingUri || info.body.meetingLink, info.body);\n }\n\n return info;\n }).catch((error) => {\n LoggerProxy.logger.error(`Meeting-info:index#requestFetchInfo --> ${error} fetch meetingInfo`);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Helper to generate the options for the MeetingInfo request\n * @param {String} destination\n * @param {String} type\n * @returns {Promise}\n * @private\n * @memberof MeetingInfo\n */\n fetchInfoOptions(destination, type) {\n return MeetingInfoUtil.generateOptions({\n destination,\n type,\n webex: this.webex\n });\n }\n\n /**\n * Fetches meeting info from the server\n * @param {String} destination one of many different types of destinations to look up info for\n * @param {String} [type] to match up with the destination value\n * @returns {Promise} returns a meeting info object\n * @public\n * @memberof MeetingInfo\n */\n fetchMeetingInfo(destination, type = null) {\n return this.fetchInfoOptions(\n MeetingInfoUtil.extractDestination(destination, type),\n type\n ).then((options) =>\n // fetch meeting info\n this.requestFetchInfo(options).catch((error) => {\n // if it failed the first time as meeting link\n if (options.type === _MEETING_LINK_) {\n // convert the meeting link to sip URI and retry\n return this.requestFetchInfo(this.fetchInfoOptions(MeetingInfoUtil.convertLinkToSip(destination), _SIP_URI_));\n }\n\n return Promise.reject(error);\n }));\n }\n}\n"]}
|
|
@@ -30,6 +30,20 @@ var _constants = require("../constants");
|
|
|
30
30
|
|
|
31
31
|
var MeetingInfoUtil = {};
|
|
32
32
|
|
|
33
|
+
MeetingInfoUtil.extractDestination = function (destination, type) {
|
|
34
|
+
var dest = destination;
|
|
35
|
+
|
|
36
|
+
if (type === _constants._LOCUS_ID_) {
|
|
37
|
+
if (!(destination && destination.url)) {
|
|
38
|
+
throw new _parameter.default('You cannot create a meeting by locus without a locus.url defined');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
dest = destination.url;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return dest;
|
|
45
|
+
};
|
|
46
|
+
|
|
33
47
|
MeetingInfoUtil.getParsedUrl = function (link) {
|
|
34
48
|
try {
|
|
35
49
|
var parsedUrl = _url.default.parse(link);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["util.js"],"names":["MeetingInfoUtil","getParsedUrl","link","parsedUrl","url","parse","protocol","HTTPS_PROTOCOL","error","LoggerProxy","logger","warn","isMeetingLink","value","hostNameBool","hostname","includes","WEBEX_DOT_COM","pathNameBool","pathname","MEET","MEET_M","JOIN","isConversationUrl","webex","clusterId","internal","services","getClusterId","endsWith","CONVERSATION_SERVICE","convertLinkToSip","user","userIndex","lastIndexOf","substring","company","companyIndex","replace","WWW_DOT","isSipUri","sipString","sipUri","DIALER_REGEX","SIP_ADDRESS","exec","isPhoneNumber","phoneNumber","isValidNumber","PHONE_NUMBER","test","getHydraId","destination","type","id","cluster","UUID_REG","_ROOM_","room","_PEOPLE_","people","getSipUriFromHydraPersonId","get","then","res","emails","length","ParameterError","catch","err","generateOptions","from","options","hydraId","_MEETING_LINK_","_SIP_URI_","_CONVERSATION_URL_","wasHydraPerson","resolve","waitForCatalog","conversationUrl","conversation","getUrlFromClusterId","getResourceUrl","resource","LOCI","MEETINGINFO","method","HTTP_VERBS","GET","uri","_PERSONAL_ROOM_","_MEETING_ID_","encodeURIComponent","TYPE","USE_URI_LOOKUP_FALSE","PUT","_LOCUS_ID_","getRequestParams","resourceOptions","api","requestParams","concat","ALTERNATE_REDIRECT_TRUE","body","lookupType"],"mappings":"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","sourcesContent":["import url from 'url';\n\nimport btoa from 'btoa';\nimport {\n deconstructHydraId\n} from '@webex/common';\n\nimport ParameterError from '../common/errors/parameter';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n _SIP_URI_,\n _PERSONAL_ROOM_,\n _MEETING_ID_,\n _CONVERSATION_URL_,\n _LOCUS_ID_,\n _MEETING_LINK_,\n _PEOPLE_,\n _ROOM_,\n HTTP_VERBS,\n USE_URI_LOOKUP_FALSE,\n TYPE,\n LOCI,\n MEETINGINFO,\n ALTERNATE_REDIRECT_TRUE,\n DIALER_REGEX,\n WEBEX_DOT_COM,\n CONVERSATION_SERVICE,\n WWW_DOT,\n JOIN,\n MEET,\n MEET_M,\n HTTPS_PROTOCOL,\n UUID_REG\n} from '../constants';\n\nconst MeetingInfoUtil = {};\n\nMeetingInfoUtil.getParsedUrl = (link) => {\n try {\n let parsedUrl = url.parse(link);\n\n if (!parsedUrl) {\n return false;\n }\n // hack for links such as <company>.webex.com/meet/<user> without a protocol\n if (!parsedUrl.protocol) {\n parsedUrl = url.parse(`${HTTPS_PROTOCOL}${link}`);\n }\n\n return parsedUrl;\n }\n catch (error) {\n LoggerProxy.logger.warn(`Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`);\n\n return null;\n }\n};\n\n/**\n * Helper function to check if a string matches a known meeting link pattern\n * @param {String} value string to parse and see if it matches a meeting link\n * @returns {Boolean}\n */\nMeetingInfoUtil.isMeetingLink = (value) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);\n const pathNameBool = parsedUrl.pathname && (parsedUrl.pathname.includes(`/${MEET}`) || parsedUrl.pathname.includes(`/${MEET_M}`) || parsedUrl.pathname.includes(`/${JOIN}`));\n\n return hostNameBool && pathNameBool;\n};\n\nMeetingInfoUtil.isConversationUrl = (value, webex) => {\n const clusterId = webex.internal.services.getClusterId(value);\n\n if (clusterId) {\n return clusterId.endsWith(CONVERSATION_SERVICE);\n }\n\n return false;\n};\n\nMeetingInfoUtil.convertLinkToSip = (value) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n\n if (!parsedUrl) {\n return null;\n }\n let user;\n\n if (parsedUrl.pathname) {\n const userIndex = parsedUrl.pathname.lastIndexOf('/');\n\n user = parsedUrl.pathname.substring(userIndex + 1);\n }\n if (!user) {\n return null;\n }\n let company;\n\n if (parsedUrl.hostname) {\n const companyIndex = parsedUrl.hostname.lastIndexOf(`.${WEBEX_DOT_COM}`);\n\n company = parsedUrl.hostname.substring(0, companyIndex).replace(WWW_DOT, '');\n }\n if (!company) {\n return null;\n }\n\n return `${user}@${company}.${WEBEX_DOT_COM}`;\n};\n\n\nMeetingInfoUtil.isSipUri = (sipString) => {\n // TODO: lets remove regex from this equation and user URI matchers and such\n // have not found a great sip uri parser library as of now\n const sipUri = DIALER_REGEX.SIP_ADDRESS.exec(sipString);\n\n return sipUri;\n};\n\nMeetingInfoUtil.isPhoneNumber = (phoneNumber) => {\n const isValidNumber = DIALER_REGEX.PHONE_NUMBER.test(phoneNumber);\n\n return isValidNumber;\n};\n\nMeetingInfoUtil.getHydraId = (destination) => {\n const {type, id, cluster} = deconstructHydraId(destination);\n\n if (id && UUID_REG.test(id)) {\n if (type === _ROOM_) {\n return {room: true, destination: id, cluster};\n }\n if (type === _PEOPLE_) {\n return {people: true, destination: id, cluster};\n }\n\n return {};\n }\n\n return {};\n};\n\nMeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) => webex.people.get(destination).then((res) => {\n if (res.emails && res.emails.length) {\n return res.emails[0];\n }\n throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');\n}).catch((err) => {\n LoggerProxy.logger.error(`Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `);\n throw err;\n});\n\nMeetingInfoUtil.generateOptions = async (from) => {\n const {destination, type, webex} = from;\n\n if (type) {\n return {\n destination,\n type\n };\n }\n const options = {};\n const hydraId = MeetingInfoUtil.getHydraId(destination);\n\n if (MeetingInfoUtil.isMeetingLink(destination)) {\n LoggerProxy.logger.warn('Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead');\n\n options.type = _MEETING_LINK_;\n options.destination = destination;\n }\n else if (MeetingInfoUtil.isSipUri(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n }\n else if (MeetingInfoUtil.isPhoneNumber(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n }\n else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {\n options.type = _CONVERSATION_URL_;\n options.destination = destination;\n }\n else if (hydraId.people) {\n options.type = _SIP_URI_;\n\n return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {\n options.destination = res;\n\n // Since hydra person ids require a unique case in which they are\n // entirely converted to a SIP URI, we need to set a flag for detecting\n // this type of destination.\n options.wasHydraPerson = true;\n\n return Promise.resolve(options);\n });\n }\n else if (hydraId.room) {\n options.type = _CONVERSATION_URL_;\n try {\n await webex.internal.services.waitForCatalog('postauth');\n\n const conversationUrl = webex.internal.conversation.getUrlFromClusterId({\n cluster: hydraId.cluster,\n id: hydraId.destination\n });\n\n options.destination = conversationUrl;\n }\n catch (e) {\n LoggerProxy.logger.error(`Meeting-info:util#generateOptions --> ${e}`);\n throw (e);\n }\n }\n else {\n throw new ParameterError('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');\n }\n\n return Promise.resolve(options);\n};\n\n/**\n * Helper function to build up a correct locus url depending on the value passed\n * @param {String} type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} value ?? value.value\n * @returns {Object} returns an object with {resource, method}\n */\nMeetingInfoUtil.getResourceUrl = (type, value) => {\n let resource = `/${LOCI}/${MEETINGINFO}`;\n let method = HTTP_VERBS.GET;\n let uri = null;\n\n switch (type) {\n case _SIP_URI_:\n case _PERSONAL_ROOM_:\n case _MEETING_ID_:\n resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(value)}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;\n break;\n case _CONVERSATION_URL_:\n method = HTTP_VERBS.PUT;\n break;\n case _LOCUS_ID_:\n uri = `${value}/${MEETINGINFO}`;\n method = HTTP_VERBS.PUT;\n break;\n case _MEETING_LINK_:\n resource = `$/${LOCI}/${MEETINGINFO}/${btoa(value)}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;\n break;\n default:\n }\n\n return {\n uri,\n resource,\n method\n };\n};\n\nMeetingInfoUtil.getRequestParams = (resourceOptions, type, value, api) => {\n let requestParams = {\n method: resourceOptions.method,\n api,\n resource: resourceOptions.resource\n };\n\n if (resourceOptions.method === HTTP_VERBS.GET) {\n // for handling URL redirections\n requestParams.resource = requestParams.resource.concat(`&${ALTERNATE_REDIRECT_TRUE}`);\n }\n else\n if (type !== _LOCUS_ID_) {\n // locus id check is a PUT not sure why\n requestParams.resource = requestParams.resource.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n requestParams.body = {\n value,\n lookupType: type\n };\n }\n else if (type === _LOCUS_ID_) {\n requestParams = {\n method: resourceOptions.method,\n uri: resourceOptions.uri\n };\n }\n\n return requestParams;\n};\n\nexport default MeetingInfoUtil;\n"]}
|
|
1
|
+
{"version":3,"sources":["util.js"],"names":["MeetingInfoUtil","extractDestination","destination","type","dest","_LOCUS_ID_","url","ParameterError","getParsedUrl","link","parsedUrl","parse","protocol","HTTPS_PROTOCOL","error","LoggerProxy","logger","warn","isMeetingLink","value","hostNameBool","hostname","includes","WEBEX_DOT_COM","pathNameBool","pathname","MEET","MEET_M","JOIN","isConversationUrl","webex","clusterId","internal","services","getClusterId","endsWith","CONVERSATION_SERVICE","convertLinkToSip","user","userIndex","lastIndexOf","substring","company","companyIndex","replace","WWW_DOT","isSipUri","sipString","sipUri","DIALER_REGEX","SIP_ADDRESS","exec","isPhoneNumber","phoneNumber","isValidNumber","PHONE_NUMBER","test","getHydraId","id","cluster","UUID_REG","_ROOM_","room","_PEOPLE_","people","getSipUriFromHydraPersonId","get","then","res","emails","length","catch","err","generateOptions","from","options","hydraId","_MEETING_LINK_","_SIP_URI_","_CONVERSATION_URL_","wasHydraPerson","resolve","waitForCatalog","conversationUrl","conversation","getUrlFromClusterId","getResourceUrl","resource","LOCI","MEETINGINFO","method","HTTP_VERBS","GET","uri","_PERSONAL_ROOM_","_MEETING_ID_","encodeURIComponent","TYPE","USE_URI_LOOKUP_FALSE","PUT","getRequestParams","resourceOptions","api","requestParams","concat","ALTERNATE_REDIRECT_TRUE","body","lookupType"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;AAIA;;AACA;;AACA;;AA0BA,IAAMA,eAAe,GAAG,EAAxB;;AAEAA,eAAe,CAACC,kBAAhB,GAAqC,UAACC,WAAD,EAAcC,IAAd,EAAuB;AAC1D,MAAIC,IAAI,GAAGF,WAAX;;AAEA,MAAIC,IAAI,KAAKE,qBAAb,EAAyB;AACvB,QAAI,EAAEH,WAAW,IAAIA,WAAW,CAACI,GAA7B,CAAJ,EAAuC;AACrC,YAAM,IAAIC,kBAAJ,CAAmB,kEAAnB,CAAN;AACD;;AACDH,IAAAA,IAAI,GAAGF,WAAW,CAACI,GAAnB;AACD;;AAED,SAAOF,IAAP;AACD,CAXD;;AAaAJ,eAAe,CAACQ,YAAhB,GAA+B,UAACC,IAAD,EAAU;AACvC,MAAI;AACF,QAAIC,SAAS,GAAGJ,aAAIK,KAAJ,CAAUF,IAAV,CAAhB;;AAEA,QAAI,CAACC,SAAL,EAAgB;AACd,aAAO,KAAP;AACD,KALC,CAMF;;;AACA,QAAI,CAACA,SAAS,CAACE,QAAf,EAAyB;AACvBF,MAAAA,SAAS,GAAGJ,aAAIK,KAAJ,WAAaE,yBAAb,SAA8BJ,IAA9B,EAAZ;AACD;;AAED,WAAOC,SAAP;AACD,GAZD,CAaA,OAAOI,KAAP,EAAc;AACZC,yBAAYC,MAAZ,CAAmBC,IAAnB,8EAA8FH,KAA9F;;AAEA,WAAO,IAAP;AACD;AACF,CAnBD;AAqBA;AACA;AACA;AACA;AACA;;;AACAd,eAAe,CAACkB,aAAhB,GAAgC,UAACC,KAAD,EAAW;AACzC,MAAMT,SAAS,GAAGV,eAAe,CAACQ,YAAhB,CAA6BW,KAA7B,CAAlB;AACA,MAAMC,YAAY,GAAGV,SAAS,CAACW,QAAV,IAAsBX,SAAS,CAACW,QAAV,CAAmBC,QAAnB,CAA4BC,wBAA5B,CAA3C;AACA,MAAMC,YAAY,GAAGd,SAAS,CAACe,QAAV,KAAuBf,SAAS,CAACe,QAAV,CAAmBH,QAAnB,YAAgCI,eAAhC,MAA2ChB,SAAS,CAACe,QAAV,CAAmBH,QAAnB,YAAgCK,iBAAhC,EAA3C,IAAwFjB,SAAS,CAACe,QAAV,CAAmBH,QAAnB,YAAgCM,eAAhC,EAA/G,CAArB;AAEA,SAAOR,YAAY,IAAII,YAAvB;AACD,CAND;;AAQAxB,eAAe,CAAC6B,iBAAhB,GAAoC,UAACV,KAAD,EAAQW,KAAR,EAAkB;AACpD,MAAMC,SAAS,GAAGD,KAAK,CAACE,QAAN,CAAeC,QAAf,CAAwBC,YAAxB,CAAqCf,KAArC,CAAlB;;AAEA,MAAIY,SAAJ,EAAe;AACb,WAAOA,SAAS,CAACI,QAAV,CAAmBC,+BAAnB,CAAP;AACD;;AAED,SAAO,KAAP;AACD,CARD;;AAUApC,eAAe,CAACqC,gBAAhB,GAAmC,UAAClB,KAAD,EAAW;AAC5C,MAAMT,SAAS,GAAGV,eAAe,CAACQ,YAAhB,CAA6BW,KAA7B,CAAlB;;AAEA,MAAI,CAACT,SAAL,EAAgB;AACd,WAAO,IAAP;AACD;;AACD,MAAI4B,IAAJ;;AAEA,MAAI5B,SAAS,CAACe,QAAd,EAAwB;AACtB,QAAMc,SAAS,GAAG7B,SAAS,CAACe,QAAV,CAAmBe,WAAnB,CAA+B,GAA/B,CAAlB;AAEAF,IAAAA,IAAI,GAAG5B,SAAS,CAACe,QAAV,CAAmBgB,SAAnB,CAA6BF,SAAS,GAAG,CAAzC,CAAP;AACD;;AACD,MAAI,CAACD,IAAL,EAAW;AACT,WAAO,IAAP;AACD;;AACD,MAAII,OAAJ;;AAEA,MAAIhC,SAAS,CAACW,QAAd,EAAwB;AACtB,QAAMsB,YAAY,GAAGjC,SAAS,CAACW,QAAV,CAAmBmB,WAAnB,YAAmCjB,wBAAnC,EAArB;AAEAmB,IAAAA,OAAO,GAAGhC,SAAS,CAACW,QAAV,CAAmBoB,SAAnB,CAA6B,CAA7B,EAAgCE,YAAhC,EAA8CC,OAA9C,CAAsDC,kBAAtD,EAA+D,EAA/D,CAAV;AACD;;AACD,MAAI,CAACH,OAAL,EAAc;AACZ,WAAO,IAAP;AACD;;AAED,mBAAUJ,IAAV,cAAkBI,OAAlB,cAA6BnB,wBAA7B;AACD,CA5BD;;AA+BAvB,eAAe,CAAC8C,QAAhB,GAA2B,UAACC,SAAD,EAAe;AACxC;AACA;AACA,MAAMC,MAAM,GAAGC,wBAAaC,WAAb,CAAyBC,IAAzB,CAA8BJ,SAA9B,CAAf;;AAEA,SAAOC,MAAP;AACD,CAND;;AAQAhD,eAAe,CAACoD,aAAhB,GAAgC,UAACC,WAAD,EAAiB;AAC/C,MAAMC,aAAa,GAAGL,wBAAaM,YAAb,CAA0BC,IAA1B,CAA+BH,WAA/B,CAAtB;;AAEA,SAAOC,aAAP;AACD,CAJD;;AAMAtD,eAAe,CAACyD,UAAhB,GAA6B,UAACvD,WAAD,EAAiB;AAC5C,4BAA4B,gCAAmBA,WAAnB,CAA5B;AAAA,MAAOC,IAAP,uBAAOA,IAAP;AAAA,MAAauD,EAAb,uBAAaA,EAAb;AAAA,MAAiBC,OAAjB,uBAAiBA,OAAjB;;AAEA,MAAID,EAAE,IAAIE,oBAASJ,IAAT,CAAcE,EAAd,CAAV,EAA6B;AAC3B,QAAIvD,IAAI,KAAK0D,iBAAb,EAAqB;AACnB,aAAO;AAACC,QAAAA,IAAI,EAAE,IAAP;AAAa5D,QAAAA,WAAW,EAAEwD,EAA1B;AAA8BC,QAAAA,OAAO,EAAPA;AAA9B,OAAP;AACD;;AACD,QAAIxD,IAAI,KAAK4D,mBAAb,EAAuB;AACrB,aAAO;AAACC,QAAAA,MAAM,EAAE,IAAT;AAAe9D,QAAAA,WAAW,EAAEwD,EAA5B;AAAgCC,QAAAA,OAAO,EAAPA;AAAhC,OAAP;AACD;;AAED,WAAO,EAAP;AACD;;AAED,SAAO,EAAP;AACD,CAfD;;AAiBA3D,eAAe,CAACiE,0BAAhB,GAA6C,UAAC/D,WAAD,EAAc4B,KAAd;AAAA,SAAwBA,KAAK,CAACkC,MAAN,CAAaE,GAAb,CAAiBhE,WAAjB,EAA8BiE,IAA9B,CAAmC,UAACC,GAAD,EAAS;AAC/G,QAAIA,GAAG,CAACC,MAAJ,IAAcD,GAAG,CAACC,MAAJ,CAAWC,MAA7B,EAAqC;AACnC,aAAOF,GAAG,CAACC,MAAJ,CAAW,CAAX,CAAP;AACD;;AACD,UAAM,IAAI9D,kBAAJ,CAAmB,iDAAnB,CAAN;AACD,GALoE,EAKlEgE,KALkE,CAK5D,UAACC,GAAD,EAAS;AAChBzD,yBAAYC,MAAZ,CAAmBF,KAAnB,uGAAwH0D,GAAxH;;AACA,UAAMA,GAAN;AACD,GARoE,CAAxB;AAAA,CAA7C;;AAUAxE,eAAe,CAACyE,eAAhB;AAAA,qFAAkC,iBAAOC,IAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACzBxE,YAAAA,WADyB,GACGwE,IADH,CACzBxE,WADyB,EACZC,IADY,GACGuE,IADH,CACZvE,IADY,EACN2B,KADM,GACG4C,IADH,CACN5C,KADM;;AAAA,iBAG5B3B,IAH4B;AAAA;AAAA;AAAA;;AAAA,6CAIvB;AACLD,cAAAA,WAAW,EAAXA,WADK;AAELC,cAAAA,IAAI,EAAJA;AAFK,aAJuB;;AAAA;AAS1BwE,YAAAA,OAT0B,GAShB,EATgB;AAU1BC,YAAAA,OAV0B,GAUhB5E,eAAe,CAACyD,UAAhB,CAA2BvD,WAA3B,CAVgB;;AAAA,iBAY5BF,eAAe,CAACkB,aAAhB,CAA8BhB,WAA9B,CAZ4B;AAAA;AAAA;AAAA;;AAa9Ba,iCAAYC,MAAZ,CAAmBC,IAAnB,CAAwB,6GAAxB;;AAEA0D,YAAAA,OAAO,CAACxE,IAAR,GAAe0E,yBAAf;AACAF,YAAAA,OAAO,CAACzE,WAAR,GAAsBA,WAAtB;AAhB8B;AAAA;;AAAA;AAAA,iBAkBvBF,eAAe,CAAC8C,QAAhB,CAAyB5C,WAAzB,CAlBuB;AAAA;AAAA;AAAA;;AAmB9ByE,YAAAA,OAAO,CAACxE,IAAR,GAAe2E,oBAAf;AACAH,YAAAA,OAAO,CAACzE,WAAR,GAAsBA,WAAtB;AApB8B;AAAA;;AAAA;AAAA,iBAsBvBF,eAAe,CAACoD,aAAhB,CAA8BlD,WAA9B,CAtBuB;AAAA;AAAA;AAAA;;AAuB9ByE,YAAAA,OAAO,CAACxE,IAAR,GAAe2E,oBAAf;AACAH,YAAAA,OAAO,CAACzE,WAAR,GAAsBA,WAAtB;AAxB8B;AAAA;;AAAA;AAAA,iBA0BvBF,eAAe,CAAC6B,iBAAhB,CAAkC3B,WAAlC,EAA+C4B,KAA/C,CA1BuB;AAAA;AAAA;AAAA;;AA2B9B6C,YAAAA,OAAO,CAACxE,IAAR,GAAe4E,6BAAf;AACAJ,YAAAA,OAAO,CAACzE,WAAR,GAAsBA,WAAtB;AA5B8B;AAAA;;AAAA;AAAA,iBA8BvB0E,OAAO,CAACZ,MA9Be;AAAA;AAAA;AAAA;;AA+B9BW,YAAAA,OAAO,CAACxE,IAAR,GAAe2E,oBAAf;AA/B8B,6CAiCvB9E,eAAe,CAACiE,0BAAhB,CAA2CW,OAAO,CAAC1E,WAAnD,EAAgE4B,KAAhE,EAAuEqC,IAAvE,CAA4E,UAACC,GAAD,EAAS;AAC1FO,cAAAA,OAAO,CAACzE,WAAR,GAAsBkE,GAAtB,CAD0F,CAG1F;AACA;AACA;;AAFA;AACA;AACA;AACAO,cAAAA,OAAO,CAACK,cAAR,GAAyB,IAAzB;AAEA,qBAAO,iBAAQC,OAAR,CAAgBN,OAAhB,CAAP;AACD,aATM,CAjCuB;;AAAA;AAAA,iBA4CvBC,OAAO,CAACd,IA5Ce;AAAA;AAAA;AAAA;;AA6C9Ba,YAAAA,OAAO,CAACxE,IAAR,GAAe4E,6BAAf;AA7C8B;AAAA;AAAA,mBA+CtBjD,KAAK,CAACE,QAAN,CAAeC,QAAf,CAAwBiD,cAAxB,CAAuC,UAAvC,CA/CsB;;AAAA;AAiDtBC,YAAAA,eAjDsB,GAiDJrD,KAAK,CAACE,QAAN,CAAeoD,YAAf,CAA4BC,mBAA5B,CAAgD;AACtE1B,cAAAA,OAAO,EAAEiB,OAAO,CAACjB,OADqD;AAEtED,cAAAA,EAAE,EAAEkB,OAAO,CAAC1E;AAF0D,aAAhD,CAjDI;AAsD5ByE,YAAAA,OAAO,CAACzE,WAAR,GAAsBiF,eAAtB;AAtD4B;AAAA;;AAAA;AAAA;AAAA;;AAyD5BpE,iCAAYC,MAAZ,CAAmBF,KAAnB;;AAzD4B;;AAAA;AAAA;AAAA;;AAAA;AAAA,kBA8DxB,IAAIP,kBAAJ,CAAmB,yHAAnB,CA9DwB;;AAAA;AAAA,6CAiEzB,iBAAQ0E,OAAR,CAAgBN,OAAhB,CAjEyB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAlC;;AAAA;AAAA;AAAA;AAAA;AAoEA;AACA;AACA;AACA;AACA;AACA;;;AACA3E,eAAe,CAACsF,cAAhB,GAAiC,UAACnF,IAAD,EAAOgB,KAAP,EAAiB;AAChD,MAAIoE,QAAQ,cAAOC,eAAP,cAAeC,sBAAf,CAAZ;AACA,MAAIC,MAAM,GAAGC,sBAAWC,GAAxB;AACA,MAAIC,GAAG,GAAG,IAAV;;AAEA,UAAQ1F,IAAR;AACE,SAAK2E,oBAAL;AACA,SAAKgB,0BAAL;AACA,SAAKC,uBAAL;AACER,MAAAA,QAAQ,cAAOC,eAAP,cAAeC,sBAAf,cAA8BO,kBAAkB,CAAC7E,KAAD,CAAhD,cAA2D8E,eAA3D,cAAmE9F,IAAnE,cAA2E+F,+BAA3E,CAAR;AACA;;AACF,SAAKnB,6BAAL;AACEW,MAAAA,MAAM,GAAGC,sBAAWQ,GAApB;AACA;;AACF,SAAK9F,qBAAL;AACEwF,MAAAA,GAAG,aAAM1E,KAAN,cAAesE,sBAAf,CAAH;AACAC,MAAAA,MAAM,GAAGC,sBAAWQ,GAApB;AACA;;AACF,SAAKtB,yBAAL;AACEU,MAAAA,QAAQ,eAAQC,eAAR,cAAgBC,sBAAhB,cAA+B,mBAAKtE,KAAL,CAA/B,cAA8C8E,eAA9C,cAAsDpB,yBAAtD,cAAwEqB,+BAAxE,CAAR;AACA;;AACF;AAhBF;;AAmBA,SAAO;AACLL,IAAAA,GAAG,EAAHA,GADK;AAELN,IAAAA,QAAQ,EAARA,QAFK;AAGLG,IAAAA,MAAM,EAANA;AAHK,GAAP;AAKD,CA7BD;;AA+BA1F,eAAe,CAACoG,gBAAhB,GAAmC,UAACC,eAAD,EAAkBlG,IAAlB,EAAwBgB,KAAxB,EAA+BmF,GAA/B,EAAuC;AACxE,MAAIC,aAAa,GAAG;AAClBb,IAAAA,MAAM,EAAEW,eAAe,CAACX,MADN;AAElBY,IAAAA,GAAG,EAAHA,GAFkB;AAGlBf,IAAAA,QAAQ,EAAEc,eAAe,CAACd;AAHR,GAApB;;AAMA,MAAIc,eAAe,CAACX,MAAhB,KAA2BC,sBAAWC,GAA1C,EAA+C;AAC7C;AACAW,IAAAA,aAAa,CAAChB,QAAd,GAAyBgB,aAAa,CAAChB,QAAd,CAAuBiB,MAAvB,YAAkCC,kCAAlC,EAAzB;AACD,GAHD,MAKA,IAAItG,IAAI,KAAKE,qBAAb,EAAyB;AACvB;AACAkG,IAAAA,aAAa,CAAChB,QAAd,GAAyBgB,aAAa,CAAChB,QAAd,CAAuBiB,MAAvB,YAAkCC,kCAAlC,EAAzB;AACAF,IAAAA,aAAa,CAACG,IAAd,GAAqB;AACnBvF,MAAAA,KAAK,EAALA,KADmB;AAEnBwF,MAAAA,UAAU,EAAExG;AAFO,KAArB;AAID,GAPD,MAQK,IAAIA,IAAI,KAAKE,qBAAb,EAAyB;AAC5BkG,IAAAA,aAAa,GAAG;AACdb,MAAAA,MAAM,EAAEW,eAAe,CAACX,MADV;AAEdG,MAAAA,GAAG,EAAEQ,eAAe,CAACR;AAFP,KAAhB;AAID;;AAED,SAAOU,aAAP;AACD,CA5BD;;eA8BevG,e","sourcesContent":["import url from 'url';\n\nimport btoa from 'btoa';\nimport {\n deconstructHydraId\n} from '@webex/common';\n\nimport ParameterError from '../common/errors/parameter';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n _SIP_URI_,\n _PERSONAL_ROOM_,\n _MEETING_ID_,\n _CONVERSATION_URL_,\n _LOCUS_ID_,\n _MEETING_LINK_,\n _PEOPLE_,\n _ROOM_,\n HTTP_VERBS,\n USE_URI_LOOKUP_FALSE,\n TYPE,\n LOCI,\n MEETINGINFO,\n ALTERNATE_REDIRECT_TRUE,\n DIALER_REGEX,\n WEBEX_DOT_COM,\n CONVERSATION_SERVICE,\n WWW_DOT,\n JOIN,\n MEET,\n MEET_M,\n HTTPS_PROTOCOL,\n UUID_REG\n} from '../constants';\n\nconst MeetingInfoUtil = {};\n\nMeetingInfoUtil.extractDestination = (destination, type) => {\n let dest = destination;\n\n if (type === _LOCUS_ID_) {\n if (!(destination && destination.url)) {\n throw new ParameterError('You cannot create a meeting by locus without a locus.url defined');\n }\n dest = destination.url;\n }\n\n return dest;\n};\n\nMeetingInfoUtil.getParsedUrl = (link) => {\n try {\n let parsedUrl = url.parse(link);\n\n if (!parsedUrl) {\n return false;\n }\n // hack for links such as <company>.webex.com/meet/<user> without a protocol\n if (!parsedUrl.protocol) {\n parsedUrl = url.parse(`${HTTPS_PROTOCOL}${link}`);\n }\n\n return parsedUrl;\n }\n catch (error) {\n LoggerProxy.logger.warn(`Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`);\n\n return null;\n }\n};\n\n/**\n * Helper function to check if a string matches a known meeting link pattern\n * @param {String} value string to parse and see if it matches a meeting link\n * @returns {Boolean}\n */\nMeetingInfoUtil.isMeetingLink = (value) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);\n const pathNameBool = parsedUrl.pathname && (parsedUrl.pathname.includes(`/${MEET}`) || parsedUrl.pathname.includes(`/${MEET_M}`) || parsedUrl.pathname.includes(`/${JOIN}`));\n\n return hostNameBool && pathNameBool;\n};\n\nMeetingInfoUtil.isConversationUrl = (value, webex) => {\n const clusterId = webex.internal.services.getClusterId(value);\n\n if (clusterId) {\n return clusterId.endsWith(CONVERSATION_SERVICE);\n }\n\n return false;\n};\n\nMeetingInfoUtil.convertLinkToSip = (value) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n\n if (!parsedUrl) {\n return null;\n }\n let user;\n\n if (parsedUrl.pathname) {\n const userIndex = parsedUrl.pathname.lastIndexOf('/');\n\n user = parsedUrl.pathname.substring(userIndex + 1);\n }\n if (!user) {\n return null;\n }\n let company;\n\n if (parsedUrl.hostname) {\n const companyIndex = parsedUrl.hostname.lastIndexOf(`.${WEBEX_DOT_COM}`);\n\n company = parsedUrl.hostname.substring(0, companyIndex).replace(WWW_DOT, '');\n }\n if (!company) {\n return null;\n }\n\n return `${user}@${company}.${WEBEX_DOT_COM}`;\n};\n\n\nMeetingInfoUtil.isSipUri = (sipString) => {\n // TODO: lets remove regex from this equation and user URI matchers and such\n // have not found a great sip uri parser library as of now\n const sipUri = DIALER_REGEX.SIP_ADDRESS.exec(sipString);\n\n return sipUri;\n};\n\nMeetingInfoUtil.isPhoneNumber = (phoneNumber) => {\n const isValidNumber = DIALER_REGEX.PHONE_NUMBER.test(phoneNumber);\n\n return isValidNumber;\n};\n\nMeetingInfoUtil.getHydraId = (destination) => {\n const {type, id, cluster} = deconstructHydraId(destination);\n\n if (id && UUID_REG.test(id)) {\n if (type === _ROOM_) {\n return {room: true, destination: id, cluster};\n }\n if (type === _PEOPLE_) {\n return {people: true, destination: id, cluster};\n }\n\n return {};\n }\n\n return {};\n};\n\nMeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) => webex.people.get(destination).then((res) => {\n if (res.emails && res.emails.length) {\n return res.emails[0];\n }\n throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');\n}).catch((err) => {\n LoggerProxy.logger.error(`Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `);\n throw err;\n});\n\nMeetingInfoUtil.generateOptions = async (from) => {\n const {destination, type, webex} = from;\n\n if (type) {\n return {\n destination,\n type\n };\n }\n const options = {};\n const hydraId = MeetingInfoUtil.getHydraId(destination);\n\n if (MeetingInfoUtil.isMeetingLink(destination)) {\n LoggerProxy.logger.warn('Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead');\n\n options.type = _MEETING_LINK_;\n options.destination = destination;\n }\n else if (MeetingInfoUtil.isSipUri(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n }\n else if (MeetingInfoUtil.isPhoneNumber(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n }\n else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {\n options.type = _CONVERSATION_URL_;\n options.destination = destination;\n }\n else if (hydraId.people) {\n options.type = _SIP_URI_;\n\n return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {\n options.destination = res;\n\n // Since hydra person ids require a unique case in which they are\n // entirely converted to a SIP URI, we need to set a flag for detecting\n // this type of destination.\n options.wasHydraPerson = true;\n\n return Promise.resolve(options);\n });\n }\n else if (hydraId.room) {\n options.type = _CONVERSATION_URL_;\n try {\n await webex.internal.services.waitForCatalog('postauth');\n\n const conversationUrl = webex.internal.conversation.getUrlFromClusterId({\n cluster: hydraId.cluster,\n id: hydraId.destination\n });\n\n options.destination = conversationUrl;\n }\n catch (e) {\n LoggerProxy.logger.error(`Meeting-info:util#generateOptions --> ${e}`);\n throw (e);\n }\n }\n else {\n throw new ParameterError('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');\n }\n\n return Promise.resolve(options);\n};\n\n/**\n * Helper function to build up a correct locus url depending on the value passed\n * @param {String} type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} value ?? value.value\n * @returns {Object} returns an object with {resource, method}\n */\nMeetingInfoUtil.getResourceUrl = (type, value) => {\n let resource = `/${LOCI}/${MEETINGINFO}`;\n let method = HTTP_VERBS.GET;\n let uri = null;\n\n switch (type) {\n case _SIP_URI_:\n case _PERSONAL_ROOM_:\n case _MEETING_ID_:\n resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(value)}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;\n break;\n case _CONVERSATION_URL_:\n method = HTTP_VERBS.PUT;\n break;\n case _LOCUS_ID_:\n uri = `${value}/${MEETINGINFO}`;\n method = HTTP_VERBS.PUT;\n break;\n case _MEETING_LINK_:\n resource = `$/${LOCI}/${MEETINGINFO}/${btoa(value)}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;\n break;\n default:\n }\n\n return {\n uri,\n resource,\n method\n };\n};\n\nMeetingInfoUtil.getRequestParams = (resourceOptions, type, value, api) => {\n let requestParams = {\n method: resourceOptions.method,\n api,\n resource: resourceOptions.resource\n };\n\n if (resourceOptions.method === HTTP_VERBS.GET) {\n // for handling URL redirections\n requestParams.resource = requestParams.resource.concat(`&${ALTERNATE_REDIRECT_TRUE}`);\n }\n else\n if (type !== _LOCUS_ID_) {\n // locus id check is a PUT not sure why\n requestParams.resource = requestParams.resource.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n requestParams.body = {\n value,\n lookupType: type\n };\n }\n else if (type === _LOCUS_ID_) {\n requestParams = {\n method: resourceOptions.method,\n uri: resourceOptions.uri\n };\n }\n\n return requestParams;\n};\n\nexport default MeetingInfoUtil;\n"]}
|
package/dist/meetings/index.js
CHANGED
|
@@ -794,7 +794,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
794
794
|
this.meetingCollection.set(meeting);
|
|
795
795
|
_context.prev = 3;
|
|
796
796
|
_context.next = 6;
|
|
797
|
-
return this.meetingInfo.fetchMeetingInfo(
|
|
797
|
+
return this.meetingInfo.fetchMeetingInfo(destination, type);
|
|
798
798
|
|
|
799
799
|
case 6:
|
|
800
800
|
info = _context.sent;
|