@webex/plugin-meetings 3.0.0-beta.301 → 3.0.0-beta.303

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.
@@ -209,7 +209,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
209
209
  sessionId: this.sessionId
210
210
  });
211
211
  },
212
- version: "3.0.0-beta.301"
212
+ version: "3.0.0-beta.303"
213
213
  });
214
214
  var _default = Breakout;
215
215
  exports.default = _default;
@@ -1041,7 +1041,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
1041
1041
  this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
1042
1042
  }
1043
1043
  },
1044
- version: "3.0.0-beta.301"
1044
+ version: "3.0.0-beta.303"
1045
1045
  });
1046
1046
  var _default = Breakouts;
1047
1047
  exports.default = _default;
@@ -359,7 +359,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
359
359
  throw error;
360
360
  });
361
361
  },
362
- version: "3.0.0-beta.301"
362
+ version: "3.0.0-beta.303"
363
363
  });
364
364
  var _default = SimultaneousInterpretation;
365
365
  exports.default = _default;
@@ -18,7 +18,7 @@ var SILanguage = _webexCore.WebexPlugin.extend({
18
18
  languageCode: 'number',
19
19
  languageName: 'string'
20
20
  },
21
- version: "3.0.0-beta.301"
21
+ version: "3.0.0-beta.303"
22
22
  });
23
23
  var _default = SILanguage;
24
24
  exports.default = _default;
@@ -28,6 +28,7 @@ var _debounce2 = _interopRequireDefault(require("lodash/debounce"));
28
28
  var _uuid = _interopRequireDefault(require("uuid"));
29
29
  var _webexCore = require("@webex/webex-core");
30
30
  var _common = require("@webex/common");
31
+ var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
31
32
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
32
33
  var _constants = require("../constants");
33
34
  var _util = _interopRequireDefault(require("./util"));
@@ -180,6 +181,9 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
180
181
  body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
181
182
  // @ts-ignore
182
183
  body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
184
+ body.device.localIp =
185
+ // @ts-ignore
186
+ _internalPluginMetrics.CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) || undefined;
183
187
  }
184
188
  if (moderator !== undefined) {
185
189
  body.moderator = moderator;
@@ -1 +1 @@
1
- {"version":3,"names":["MeetingRequest","attrs","options","meeting","otherAttrs","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","joinCookieRaw","joinCookie","JSON","parse","LoggerProxy","logger","error","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","ipVersion","info","url","getJoinCookie","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","ipver","push","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","length","geoHintInfo","countryCode","regionCode","undefined","PARTICIPANT","clusterUrl","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","GET","reject","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","annotationInfo","annotation","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 PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n IP_VERSION,\n} from '../constants';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\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 * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: 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 locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n ipVersion?: IP_VERSION;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n ipVersion,\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 ipver: ipVersion,\n },\n };\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.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 let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${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.locusDeltaRequest({\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.locusDeltaRequest({\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 * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n throw 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.locusDeltaRequest({\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 * Prepares request options to 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 {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\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 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 return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\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 return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\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 return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\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.locusDeltaRequest({\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 return this.locusDeltaRequest({\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 annotationInfo: AnnotationInfo;\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 if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\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.locusDeltaRequest({\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.locusDeltaRequest({\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.locusDeltaRequest({\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.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["MeetingRequest","attrs","options","meeting","otherAttrs","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","joinCookieRaw","joinCookie","JSON","parse","LoggerProxy","logger","error","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","ipVersion","info","url","getJoinCookie","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","ipver","push","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","length","geoHintInfo","countryCode","regionCode","localIp","CallDiagnosticUtils","anonymizeIPAddress","clientAddress","undefined","PARTICIPANT","clusterUrl","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","GET","reject","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","annotationInfo","annotation","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';\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\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 PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n IP_VERSION,\n} from '../constants';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\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 * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: 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 locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n ipVersion?: IP_VERSION;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n ipVersion,\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 ipver: ipVersion,\n },\n };\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;\n body.device.localIp =\n // @ts-ignore\n CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||\n undefined;\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 let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${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.locusDeltaRequest({\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.locusDeltaRequest({\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 * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n throw 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.locusDeltaRequest({\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 * Prepares request options to 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 {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\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 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 return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\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 return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\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 return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\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.locusDeltaRequest({\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 return this.locusDeltaRequest({\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 annotationInfo: AnnotationInfo;\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 if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\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.locusDeltaRequest({\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.locusDeltaRequest({\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.locusDeltaRequest({\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.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n}\n"],"mappings":"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"}
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
62
62
  updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
63
63
  this.set('canManageWebcast', canManageWebcast);
64
64
  },
65
- version: "3.0.0-beta.301"
65
+ version: "3.0.0-beta.303"
66
66
  });
67
67
  var _default = Webinar;
68
68
  exports.default = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
- "version": "3.0.0-beta.301",
3
+ "version": "3.0.0-beta.303",
4
4
  "description": "",
5
5
  "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
6
6
  "contributors": [
@@ -32,12 +32,12 @@
32
32
  "build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
33
33
  },
34
34
  "devDependencies": {
35
- "@webex/plugin-meetings": "3.0.0-beta.301",
36
- "@webex/test-helper-chai": "3.0.0-beta.301",
37
- "@webex/test-helper-mocha": "3.0.0-beta.301",
38
- "@webex/test-helper-mock-webex": "3.0.0-beta.301",
39
- "@webex/test-helper-retry": "3.0.0-beta.301",
40
- "@webex/test-helper-test-users": "3.0.0-beta.301",
35
+ "@webex/plugin-meetings": "3.0.0-beta.303",
36
+ "@webex/test-helper-chai": "3.0.0-beta.303",
37
+ "@webex/test-helper-mocha": "3.0.0-beta.303",
38
+ "@webex/test-helper-mock-webex": "3.0.0-beta.303",
39
+ "@webex/test-helper-retry": "3.0.0-beta.303",
40
+ "@webex/test-helper-test-users": "3.0.0-beta.303",
41
41
  "chai": "^4.3.4",
42
42
  "chai-as-promised": "^7.1.1",
43
43
  "jsdom-global": "3.0.2",
@@ -46,19 +46,19 @@
46
46
  "typescript": "^4.7.4"
47
47
  },
48
48
  "dependencies": {
49
- "@webex/common": "3.0.0-beta.301",
49
+ "@webex/common": "3.0.0-beta.303",
50
50
  "@webex/internal-media-core": "2.2.1",
51
- "@webex/internal-plugin-conversation": "3.0.0-beta.301",
52
- "@webex/internal-plugin-device": "3.0.0-beta.301",
53
- "@webex/internal-plugin-llm": "3.0.0-beta.301",
54
- "@webex/internal-plugin-mercury": "3.0.0-beta.301",
55
- "@webex/internal-plugin-metrics": "3.0.0-beta.301",
56
- "@webex/internal-plugin-support": "3.0.0-beta.301",
57
- "@webex/internal-plugin-user": "3.0.0-beta.301",
58
- "@webex/media-helpers": "3.0.0-beta.301",
59
- "@webex/plugin-people": "3.0.0-beta.301",
60
- "@webex/plugin-rooms": "3.0.0-beta.301",
61
- "@webex/webex-core": "3.0.0-beta.301",
51
+ "@webex/internal-plugin-conversation": "3.0.0-beta.303",
52
+ "@webex/internal-plugin-device": "3.0.0-beta.303",
53
+ "@webex/internal-plugin-llm": "3.0.0-beta.303",
54
+ "@webex/internal-plugin-mercury": "3.0.0-beta.303",
55
+ "@webex/internal-plugin-metrics": "3.0.0-beta.303",
56
+ "@webex/internal-plugin-support": "3.0.0-beta.303",
57
+ "@webex/internal-plugin-user": "3.0.0-beta.303",
58
+ "@webex/media-helpers": "3.0.0-beta.303",
59
+ "@webex/plugin-people": "3.0.0-beta.303",
60
+ "@webex/plugin-rooms": "3.0.0-beta.303",
61
+ "@webex/webex-core": "3.0.0-beta.303",
62
62
  "ampersand-collection": "^2.0.2",
63
63
  "bowser": "^2.11.0",
64
64
  "btoa": "^1.2.1",
@@ -4,6 +4,7 @@ import {debounce} from 'lodash';
4
4
  import {StatelessWebexPlugin} from '@webex/webex-core';
5
5
  // @ts-ignore
6
6
  import {deviceType} from '@webex/common';
7
+ import {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';
7
8
 
8
9
  import LoggerProxy from '../common/logs/logger-proxy';
9
10
  import {
@@ -198,6 +199,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
198
199
  body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
199
200
  // @ts-ignore
200
201
  body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
202
+ body.device.localIp =
203
+ // @ts-ignore
204
+ CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||
205
+ undefined;
201
206
  }
202
207
 
203
208
  if (moderator !== undefined) {
@@ -6,23 +6,24 @@ import MeetingRequest from '@webex/plugin-meetings/src/meeting/request';
6
6
  import uuid from 'uuid';
7
7
  import { merge } from 'lodash';
8
8
  import {IP_VERSION} from '@webex/plugin-meetings/src/constants';
9
+ import {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';
9
10
 
10
11
 
11
12
  describe('plugin-meetings', () => {
12
13
  let meetingsRequest;
13
14
  let locusDeltaRequestSpy;
15
+ let webex;
16
+ const geoHintInfoDefaults = {countryCode: 'US', regionCode: 'WEST-COAST', clientAddress: '127.0.0.1'};
17
+ let anonymizeIpSpy;
14
18
 
15
19
  beforeEach(() => {
16
- const webex = new MockWebex({
20
+ webex = new MockWebex({
17
21
  children: {
18
22
  meetings: Meetings,
19
23
  },
20
24
  });
21
25
 
22
- webex.meetings.geoHintInfo = {
23
- countryCode: 'US',
24
- regionCode: 'WEST-COAST',
25
- };
26
+ webex.meetings.geoHintInfo = {...geoHintInfoDefaults};
26
27
 
27
28
  webex.internal = {
28
29
  services: {
@@ -53,6 +54,11 @@ describe('plugin-meetings', () => {
53
54
 
54
55
  meetingsRequest.request = request;
55
56
  locusDeltaRequestSpy = sinon.spy(meetingsRequest, 'locusDeltaRequest');
57
+ anonymizeIpSpy = sinon.spy(CallDiagnosticUtils, 'anonymizeIPAddress');
58
+ });
59
+
60
+ afterEach(() => {
61
+ anonymizeIpSpy.restore();
56
62
  });
57
63
 
58
64
  const checkRequest = (expectedParams) => {
@@ -195,8 +201,41 @@ describe('plugin-meetings', () => {
195
201
  assert.equal(requestParams.body.device.countryCode, 'US');
196
202
  assert.equal(requestParams.body.permissionToken, 'permission-token');
197
203
  assert.equal(requestParams.body.device.regionCode, 'WEST-COAST');
204
+ assert.include(requestParams.body.device.localIp, '127.0.0');
205
+
206
+ assert.calledOnceWithExactly(anonymizeIpSpy, '127.0.0.1');
198
207
  });
199
208
 
209
+ describe('clientAddress geoHintInfo undefined', () => {
210
+ beforeEach(() => {
211
+ webex.meetings.geoHintInfo = {};
212
+ });
213
+
214
+ // reset
215
+ afterEach(() => {
216
+ webex.meetings.geoHintInfo = {...geoHintInfoDefaults};
217
+ });
218
+
219
+ it('doesnt send the clientAddress if not available as localIp', async () => {
220
+ const locusUrl = 'locusURL';
221
+ const deviceUrl = 'deviceUrl';
222
+ const correlationId = 'random-uuid';
223
+ const roapMessage = 'roap-message';
224
+ const permissionToken = 'permission-token';
225
+
226
+ await meetingsRequest.joinMeeting({
227
+ locusUrl,
228
+ deviceUrl,
229
+ correlationId,
230
+ roapMessage,
231
+ permissionToken,
232
+ });
233
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
234
+
235
+ assert.equal(requestParams.body.device.localIp, undefined);
236
+ });
237
+ })
238
+
200
239
  it('sends /call with meetingNumber if inviteeAddress does not exist', async () => {
201
240
  const deviceUrl = 'deviceUrl';
202
241
  const correlationId = 'random-uuid';