@webex/plugin-meetings 1.143.2 → 1.144.2

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.
Files changed (39) hide show
  1. package/dist/config.js +2 -1
  2. package/dist/config.js.map +1 -1
  3. package/dist/constants.js +4 -2
  4. package/dist/constants.js.map +1 -1
  5. package/dist/locus-info/index.js +3 -1
  6. package/dist/locus-info/index.js.map +1 -1
  7. package/dist/locus-info/infoUtils.js +4 -0
  8. package/dist/locus-info/infoUtils.js.map +1 -1
  9. package/dist/meeting/index.js +12 -11
  10. package/dist/meeting/index.js.map +1 -1
  11. package/dist/meeting/request.js +39 -9
  12. package/dist/meeting/request.js.map +1 -1
  13. package/dist/meeting/util.js +2 -1
  14. package/dist/meeting/util.js.map +1 -1
  15. package/dist/meeting-info/meeting-info-v2.js +119 -0
  16. package/dist/meeting-info/meeting-info-v2.js.map +1 -0
  17. package/dist/meeting-info/utilv2.js +332 -0
  18. package/dist/meeting-info/utilv2.js.map +1 -0
  19. package/dist/meetings/index.js +5 -1
  20. package/dist/meetings/index.js.map +1 -1
  21. package/dist/metrics/config.js +1 -1
  22. package/dist/metrics/config.js.map +1 -1
  23. package/package.json +5 -5
  24. package/src/config.js +2 -1
  25. package/src/constants.js +1 -0
  26. package/src/locus-info/index.js +1 -1
  27. package/src/locus-info/infoUtils.js +4 -0
  28. package/src/meeting/index.js +8 -11
  29. package/src/meeting/request.js +16 -2
  30. package/src/meeting/util.js +2 -1
  31. package/src/meeting-info/meeting-info-v2.js +58 -0
  32. package/src/meeting-info/utilv2.js +231 -0
  33. package/src/meetings/index.js +6 -1
  34. package/src/metrics/config.js +1 -1
  35. package/test/integration/spec/space-meeting.js +11 -0
  36. package/test/unit/spec/locus-info/index.js +40 -1
  37. package/test/unit/spec/meeting/index.js +2 -0
  38. package/test/unit/spec/meeting-info/meetinginfov2.js +68 -0
  39. package/test/unit/spec/meeting-info/utilv2.js +139 -0
@@ -102,12 +102,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
102
102
  key: "joinMeeting",
103
103
  value: function () {
104
104
  var _joinMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options) {
105
- var asResourceOccupant, sipUri, deviceUrl, locusUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, preferTranscoding, url, body;
105
+ var asResourceOccupant, sipUri, meetingNumber, deviceUrl, locusUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, preferTranscoding, url, body;
106
106
  return _regenerator.default.wrap(function _callee$(_context) {
107
107
  while (1) {
108
108
  switch (_context.prev = _context.next) {
109
109
  case 0:
110
- asResourceOccupant = options.asResourceOccupant, sipUri = options.sipUri, deviceUrl = options.deviceUrl, locusUrl = options.locusUrl, resourceId = options.resourceId, correlationId = options.correlationId, ensureConversation = options.ensureConversation, moderator = options.moderator, pin = options.pin, moveToResource = options.moveToResource, roapMessage = options.roapMessage, preferTranscoding = options.preferTranscoding;
110
+ asResourceOccupant = options.asResourceOccupant, sipUri = options.sipUri, meetingNumber = options.meetingNumber, deviceUrl = options.deviceUrl, locusUrl = options.locusUrl, resourceId = options.resourceId, correlationId = options.correlationId, ensureConversation = options.ensureConversation, moderator = options.moderator, pin = options.pin, moveToResource = options.moveToResource, roapMessage = options.roapMessage, preferTranscoding = options.preferTranscoding;
111
111
 
112
112
  _loggerProxy.default.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
113
113
 
@@ -149,12 +149,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
149
149
  }
150
150
 
151
151
  url = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT);
152
- _context.next = 23;
152
+ _context.next = 37;
153
153
  break;
154
154
 
155
155
  case 11:
156
- if (!sipUri) {
157
- _context.next = 23;
156
+ if (!meetingNumber) {
157
+ _context.next = 25;
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: sipUri
168
+ address: "wbxmn:".concat(meetingNumber)
169
169
  };
170
170
  _context.next = 23;
171
171
  break;
@@ -174,11 +174,41 @@ 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 --> ".concat(_context.t0));
177
+ _loggerProxy.default.logger.error("Meeting:request#joinMeeting webex meeting id--> ".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:
182
212
  // TODO: -- this will be resolved in SDK request
183
213
  url = url.concat("?".concat(_constants.ALTERNATE_REDIRECT_TRUE));
184
214
 
@@ -198,12 +228,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
198
228
  body: body
199
229
  }));
200
230
 
201
- case 27:
231
+ case 41:
202
232
  case "end":
203
233
  return _context.stop();
204
234
  }
205
235
  }
206
- }, _callee, this, [[12, 19]]);
236
+ }, _callee, this, [[12, 19], [26, 33]]);
207
237
  }));
208
238
 
209
239
  function joinMeeting(_x) {
@@ -1 +1 @@
1
- {"version":3,"sources":["request.js"],"names":["MeetingRequest","attrs","options","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","sipUri","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","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","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 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, 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 (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 --> ${e}`);\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 === 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 * 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 pstn device leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.selfId\n * @param {String} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Promise}\n * @private\n */\n leavePstn({\n locusUrl, dialInUrl, correlationId, selfId\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#leavePstn --> request device ${dialInUrl} to leaving`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: dialInUrl\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(`Meeting:request#leavePstn --> Error when requesting pstn device ${dialInUrl} to leave, error ${err}`);\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","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","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 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 * 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 pstn device leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.selfId\n * @param {String} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Promise}\n * @private\n */\n leavePstn({\n locusUrl, dialInUrl, correlationId, selfId\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#leavePstn --> request device ${dialInUrl} to leaving`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: dialInUrl\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(`Meeting:request#leavePstn --> Error when requesting pstn device ${dialInUrl} to leave, error ${err}`);\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"]}
@@ -133,7 +133,7 @@ MeetingUtil.joinMeeting = function (meeting, options) {
133
133
  }
134
134
 
135
135
  _metrics.default.postEvent({
136
- event: _config.eventType.LOCAL_JOIN_REQUEST,
136
+ event: _config.eventType.LOCUS_JOIN_REQUEST,
137
137
  meeting: meeting
138
138
  }); // eslint-disable-next-line no-warning-comments
139
139
  // TODO: check if the meeting is in JOINING state
@@ -142,6 +142,7 @@ MeetingUtil.joinMeeting = function (meeting, options) {
142
142
 
143
143
  return meeting.meetingRequest.joinMeeting({
144
144
  sipUri: meeting.sipUri,
145
+ meetingNumber: meeting.meetingNumber,
145
146
  deviceUrl: meeting.deviceUrl,
146
147
  locusUrl: meeting.locusUrl,
147
148
  correlationId: meeting.correlationId,
@@ -1 +1 @@
1
- {"version":3,"sources":["util.js"],"names":["MeetingUtil","parseLocusJoin","response","parsed","locus","body","mediaConnections","locusUrl","url","locusId","split","pop","selfId","self","id","forEach","mediaConnection","mediaId","remoteUpdateAudioVideo","audioMuted","videoMuted","meeting","reject","ParameterError","localMedias","Media","generateLocalMedias","Metrics","postEvent","event","eventType","MEDIA_REQUEST","meetingRequest","remoteAudioVideoToggle","deviceUrl","correlationId","then","MEDIA_RESPONSE","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","err","errorCode","INTENT_TO_JOIN","joinMeeting","options","LOCAL_JOIN_REQUEST","sipUri","roapMessage","resourceId","moderator","pin","moveToResource","preferTranscoding","asResourceOccupant","res","LOCUS_JOIN_RESPONSE","data","trigger","LOCI_UPDATE","trackingId","headers","trackingid","cleanUp","statsAnalyzer","stopAnalyzer","closeLocalStream","closeLocalShare","closeRemoteTracks","closePeerConnections","unsetLocalVideoTrack","unsetLocalShareTrack","unsetRemoteTracks","unsetPeerConnections","cleanMQAInterval","reconnectionManager","roap","stop","roapSeq","leavePstn","dialInUrl","meetingState","FULL_STATE","INACTIVE","MeetingNotActiveError","locusInfo","onFullLocus","catch","LoggerProxy","logger","error","leaveMeeting","isUserInLeftState","UserNotJoinedError","defaultOptions","leaveOptions","resolve","moveMeeting","declineMeeting","reason","parsedLocus","state","_LEFT_","isUserInIdleState","_IDLE_","isUserInJoinedState","_JOINED_","isMediaEstablished","currentMediaStatus","audio","video","share","joinMeetingOptions","PIN_COLLECTED","setLocus","meetingInfo","PIN_PROMPT","IntentToJoinError","JoinMeetingError","updateTransceiver","meetingOptions","type","sendTrack","receiveTrack","track","transceiver","peerConnection","previousMediaDirection","undefined","meetingId","remoteQualityLevel","mediaProperties","enableRtx","config","sendRoapMediaRequest","sdp","e","sender","replaceTrack","validateOptions","sendVideo","sendAudio","sendShare","localStream","localShare","getTrack","videoTrack","audioTrack","stream","audioTracks","videoTracks","getAudioTracks","getVideoTracks","length","getModeratorFromLocusInfo","getPolicyFromLocusInfo","policy","canUserLock","joined","LOCK_CONTROL_LOCK","LOCK_STATUS_UNLOCKED","canUserUnlock","LOCK_CONTROL_UNLOCK","LOCK_STATUS_LOCKED","canUserRecord","RECORDING_CONTROL_START","canUserPause","RECORDING_CONTROL_PAUSE","canUserResume","RECORDING_CONTROL_RESUME","canUserStop","RECORDING_CONTROL_STOP","startRecording","request","recordMeeting","recording","paused","PermissionError","pauseRecording","resumeRecording","stopRecording","lockMeeting","actions","canLock","lock","unlockMeeting","canUnlock","startInternalStats","internalStats","useConfig","senders","correlate","history","onEvent","kind","stat","Trigger","file","function","EVENT_TRIGGERS","MEETING_MEDIA_LOCAL_STARTED","mediaType","AUDIO","SENDING_MEDIA_START","SENDING_MEDIA_STOP","onData","VIDEO","SHARE","SENDING_SHARE_START","SENDING_SHARE_STOP","receivers","MEETING_MEDIA_REMOTE_STARTED","RECEIVING_MEDIA_START","RECEIVING_MEDIA_STOP","StatsUtil","generateOptions","STATS","CONFIG","WebRTCStats","attrs","handleAudioLogging","LOG_HEADER","settings","getSettings","deviceId","log","handleVideoLogging","handleDeviceLogging","devices","device"],"mappings":"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","sourcesContent":["import {isEmpty} from 'lodash';\n\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport StatsUtil from '../stats/util';\nimport Metrics from '../metrics';\nimport {eventType, trigger, mediaType} from '../metrics/config';\nimport Media from '../media';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport WebRTCStats from '../stats/index';\nimport {INTENT_TO_JOIN,\n _LEFT_,\n _IDLE_,\n _JOINED_,\n STATS,\n EVENT_TRIGGERS\n , FULL_STATE} from '../constants';\nimport Trigger from '../common/events/trigger-proxy';\nimport IntentToJoinError from '../common/errors/intent-to-join';\nimport JoinMeetingError from '../common/errors/join-meeting';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\n\n\nconst MeetingUtil = {};\n\nMeetingUtil.parseLocusJoin = (response) => {\n const parsed = {};\n\n // First todo: add check for existance\n parsed.locus = response.body.locus;\n parsed.mediaConnections = response.body.mediaConnections;\n parsed.locusUrl = parsed.locus.url;\n parsed.locusId = parsed.locus.url.split('/').pop();\n parsed.selfId = parsed.locus.self.id;\n\n // we need mediaId before making roap calls\n parsed.mediaConnections.forEach((mediaConnection) => {\n if (mediaConnection.mediaId) {\n parsed.mediaId = mediaConnection.mediaId;\n }\n });\n\n return parsed;\n};\n\nMeetingUtil.remoteUpdateAudioVideo = (audioMuted, videoMuted, meeting) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n const localMedias = Media.generateLocalMedias(meeting.mediaId, audioMuted, videoMuted);\n\n if (isEmpty(localMedias)) {\n return Promise.reject(new ParameterError('You need a media id on the meeting to change remote audio.'));\n }\n\n Metrics.postEvent({event: eventType.MEDIA_REQUEST, meeting});\n\n return meeting.meetingRequest.remoteAudioVideoToggle({\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n localMedias,\n deviceUrl: meeting.deviceUrl,\n correlationId: meeting.correlationId\n }).then((response) => {\n Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meeting});\n\n return response.body.locus;\n });\n};\n\nMeetingUtil.hasOwner = (info) => info && info.owner;\n\nMeetingUtil.isOwnerSelf = (owner, selfId) => owner === selfId;\n\nMeetingUtil.isPinOrGuest = (err) => {\n if (err && err.body && err.body.errorCode === INTENT_TO_JOIN) {\n return true;\n }\n\n return false;\n};\n\nMeetingUtil.joinMeeting = (meeting, options) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n Metrics.postEvent({event: eventType.LOCAL_JOIN_REQUEST, meeting});\n\n // eslint-disable-next-line no-warning-comments\n // TODO: check if the meeting is in JOINING state\n // if Joining state termintate the request as user might click multiple times\n return meeting.meetingRequest\n .joinMeeting({\n sipUri: meeting.sipUri,\n deviceUrl: meeting.deviceUrl,\n locusUrl: meeting.locusUrl,\n correlationId: meeting.correlationId,\n roapMessage: options.roapMessage,\n resourceId: options.resourceId || null,\n moderator: options.moderator,\n pin: options.pin,\n moveToResource: options.moveToResource,\n preferTranscoding: options.preferTranscoding,\n asResourceOccupant: options.asResourceOccupant\n })\n .then((res) => {\n Metrics.postEvent({\n event: eventType.LOCUS_JOIN_RESPONSE,\n meeting,\n data: {\n trigger: trigger.LOCI_UPDATE,\n locus: res.body.locus,\n mediaConnections: res.body.mediaConnections,\n trackingId: res.headers.trackingid\n }\n });\n\n return MeetingUtil.parseLocusJoin(res);\n });\n};\n\nMeetingUtil.cleanUp = (meeting) => {\n // make sure we send last metrics before we close the peerconnection\n if (meeting.statsAnalyzer) meeting.statsAnalyzer.stopAnalyzer();\n\n return meeting.closeLocalStream()\n .then(() => meeting.closeLocalShare())\n .then(() => meeting.closeRemoteTracks())\n .then(() => meeting.closePeerConnections())\n .then(() => {\n meeting.unsetLocalVideoTrack();\n meeting.unsetLocalShareTrack();\n meeting.unsetRemoteTracks();\n meeting.unsetPeerConnections();\n meeting.cleanMQAInterval();\n meeting.reconnectionManager.cleanUp();\n })\n .then(() => meeting.roap.stop(meeting.correlationId, meeting.roapSeq));\n};\n\nMeetingUtil.leavePstn = (meeting, dialInUrl) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const options = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n dialInUrl\n };\n\n return meeting.meetingRequest\n .leavePstn(options)\n .then((response) => {\n if (response?.body?.locus) {\n meeting.locusInfo.onFullLocus(response.body.locus);\n }\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#leavePstn --> An error occured while trying to leave pstn with an id of ${\n meeting.id\n }, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n};\n\n// by default will leave on meeting's resourceId\n// if you explicity want it not to leave on resource id, pass\n// {resourceId: null}\n// TODO: chris, you can modify this however you want\nMeetingUtil.leaveMeeting = (meeting, options = {}) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n // TODO: clean up if the meeting is already inactive\n return Promise.reject(new MeetingNotActiveError());\n }\n\n if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n const defaultOptions = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n resourceId: meeting.resourceId,\n deviceUrl: meeting.deviceUrl\n };\n\n const leaveOptions = {...defaultOptions, ...options};\n\n return meeting.meetingRequest\n .leaveMeeting(leaveOptions)\n .then((response) => {\n if (response && response.body && response.body.locus) { // && !options.moveMeeting) {\n meeting.locusInfo.onFullLocus(response.body.locus);\n }\n\n return Promise.resolve();\n })\n .then(() => {\n if (options.moveMeeting) {\n return Promise.resolve();\n }\n\n return MeetingUtil.cleanUp(meeting);\n })\n .catch((err) => {\n // TODO: If the meeting state comes as LEFT or INACTIVE as response then\n // 1) on leave clean up the meeting or simply do a sync on the meeting\n // 2) If the error says meeting is inactive then destroy the meeting object\n LoggerProxy.logger.error(\n `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${\n meeting.id\n }, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n};\nMeetingUtil.declineMeeting = (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason\n });\n\nMeetingUtil.isUserInLeftState = (locusInfo) =>\n locusInfo.parsedLocus?.self?.state === _LEFT_;\n\nMeetingUtil.isUserInIdleState = (locusInfo) =>\n locusInfo.parsedLocus?.self?.state === _IDLE_;\n\nMeetingUtil.isUserInJoinedState = (locusInfo) =>\n locusInfo.parsedLocus?.self?.state === _JOINED_;\n\nMeetingUtil.isMediaEstablished = (currentMediaStatus) =>\n currentMediaStatus && (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share);\n\n\nMeetingUtil.joinMeetingOptions = (meeting, options = {}) => {\n meeting.resourceId = meeting.resourceId || options.resourceId;\n\n if (options.pin) {\n Metrics.postEvent({\n event: eventType.PIN_COLLECTED,\n meeting\n });\n }\n\n // normal join meeting, scenario A, D\n return MeetingUtil.joinMeeting(meeting, options)\n .then((response) => {\n meeting.setLocus(response);\n\n return Promise.resolve(response);\n })\n .catch((err) => {\n // joining a claimed PMR that is not my own, scenario B\n if (MeetingUtil.isPinOrGuest(err)) {\n if (MeetingUtil.hasOwner(meeting.meetingInfo)) {\n return MeetingUtil.joinMeeting(meeting, options).then((response) => {\n meeting.setLocus(response);\n\n return Promise.resolve();\n });\n }\n\n Metrics.postEvent({\n event: eventType.PIN_PROMPT,\n meeting\n });\n\n // request host pin or non host for unclaimed PMR, start of Scenario C\n // see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature\n return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));\n }\n LoggerProxy.logger.error('Meeting:util#joinMeetingOptions --> Error joining the call, ', err);\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n};\n\nMeetingUtil.updateTransceiver = (options, meetingOptions) => {\n const {\n type,\n sendTrack,\n receiveTrack,\n track,\n transceiver,\n peerConnection,\n previousMediaDirection\n } = options;\n\n if ((sendTrack !== undefined && sendTrack !== previousMediaDirection.sendTrack) ||\n (receiveTrack !== undefined && receiveTrack !== previousMediaDirection.receiveTrack)) {\n return Media.updateTransceiver({\n meetingId: meetingOptions.meeting.id,\n remoteQualityLevel: meetingOptions.mediaProperties.remoteQualityLevel,\n enableRtx: meetingOptions.meeting.config.enableRtx\n }, peerConnection, transceiver,\n {\n track,\n type,\n receiveTrack,\n sendTrack\n })\n .then(() => meetingOptions.meeting.roap\n .sendRoapMediaRequest({\n sdp: meetingOptions.mediaProperties.peerConnection.sdp,\n roapSeq: meetingOptions.meeting.roapSeq,\n meeting: meetingOptions.meeting // or can pass meeting ID\n }))\n .catch((e) => {\n LoggerProxy.logger.error(`Meeting:util#updateTransceiver --> Error updating the ${type} streams with error: ${e}`);\n });\n } if (track) {\n transceiver.sender.replaceTrack(track);\n\n return Promise.resolve();\n }\n\n return Promise.reject(new ParameterError('update Failed: please pass valid parameter'));\n};\n\nMeetingUtil.validateOptions = (options) => {\n const {\n sendVideo, sendAudio, sendShare, localStream, localShare\n } = options;\n\n if (sendVideo && !MeetingUtil.getTrack(localStream).videoTrack) {\n return Promise.reject(new ParameterError('please pass valid video streams'));\n }\n\n if (sendAudio && !MeetingUtil.getTrack(localStream).audioTrack) {\n return Promise.reject(new ParameterError('please pass valid audio streams'));\n }\n\n if (sendShare && !MeetingUtil.getTrack(localShare).videoTrack) {\n return Promise.reject(new ParameterError('please pass valid share streams'));\n }\n\n return Promise.resolve();\n};\n\nMeetingUtil.getTrack = (stream) => {\n let audioTrack = null;\n let videoTrack = null;\n let audioTracks = null;\n let videoTracks = null;\n\n if (!stream) {\n return {audioTrack: null, videoTrack: null};\n }\n if (stream.getAudioTracks) {\n audioTracks = stream.getAudioTracks();\n }\n if (stream.getVideoTracks) {\n videoTracks = stream.getVideoTracks();\n }\n\n if (audioTracks && audioTracks.length > 0) {\n [audioTrack] = audioTracks;\n }\n\n if (videoTracks && videoTracks.length > 0) {\n [videoTrack] = videoTracks;\n }\n\n return {audioTrack, videoTrack};\n};\n\nMeetingUtil.getModeratorFromLocusInfo = (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator;\n\nMeetingUtil.getPolicyFromLocusInfo = (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy;\n\nMeetingUtil.canUserLock = (moderator, joined) => {\n if (moderator.LOCK_CONTROL_LOCK && joined.LOCK_STATUS_UNLOCKED) {\n return true;\n }\n\n return false;\n};\n\nMeetingUtil.canUserUnlock = (moderator, joined) => {\n if (moderator.LOCK_CONTROL_UNLOCK && joined.LOCK_STATUS_LOCKED) {\n return true;\n }\n\n return false;\n};\n\nMeetingUtil.canUserRecord = (moderator) => moderator.RECORDING_CONTROL_START;\n\nMeetingUtil.canUserPause = (moderator) => moderator.RECORDING_CONTROL_PAUSE;\n\nMeetingUtil.canUserResume = (moderator) => moderator.RECORDING_CONTROL_RESUME;\n\nMeetingUtil.canUserStop = (moderator) => moderator.RECORDING_CONTROL_STOP;\n\nMeetingUtil.startRecording = (request, locusUrl, locusInfo) => {\n const moderator = MeetingUtil.getModeratorFromLocusInfo(locusInfo);\n\n if (moderator && MeetingUtil.canUserRecord(moderator)) {\n return request.recordMeeting({locusUrl, recording: true, paused: false});\n }\n\n return Promise.reject(new PermissionError('Start recording not allowed, due to moderator property.'));\n};\n\nMeetingUtil.pauseRecording = (request, locusUrl, locusInfo) => {\n const moderator = MeetingUtil.getModeratorFromLocusInfo(locusInfo);\n\n if (moderator && MeetingUtil.canUserPause(moderator)) {\n return request.recordMeeting({locusUrl, recording: true, paused: true});\n }\n\n return Promise.reject(new PermissionError('Pause recording not allowed, due to moderator property.'));\n};\n\nMeetingUtil.resumeRecording = (request, locusUrl, locusInfo) => {\n const moderator = MeetingUtil.getModeratorFromLocusInfo(locusInfo);\n\n if (moderator && MeetingUtil.canUserResume(moderator)) {\n return request.recordMeeting({locusUrl, recording: true, paused: false});\n }\n\n return Promise.reject(new PermissionError('Resume recording not allowed, due to moderator property.'));\n};\n\nMeetingUtil.stopRecording = (request, locusUrl, locusInfo) => {\n const moderator = MeetingUtil.getModeratorFromLocusInfo(locusInfo);\n\n if (moderator && MeetingUtil.canUserStop(moderator)) {\n return request.recordMeeting({locusUrl, recording: false, paused: false});\n }\n\n return Promise.reject(new PermissionError('Stop recording not allowed, due to moderator property.'));\n};\n\nMeetingUtil.lockMeeting = (actions, request, locusUrl) => {\n if (actions && actions.canLock) {\n return request.lockMeeting({locusUrl, lock: true});\n }\n\n return Promise.reject(new PermissionError('Lock not allowed, due to joined property.'));\n};\n\nMeetingUtil.unlockMeeting = (actions, request, locusUrl) => {\n if (actions && actions.canUnlock) {\n return request.lockMeeting({locusUrl, lock: false});\n }\n\n return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));\n};\n\nMeetingUtil.startInternalStats = (meeting) => {\n if (!meeting.internalStats) {\n const options = {\n useConfig: true,\n senders: [\n {\n id: 'mainAudio',\n correlate: 'audio',\n history: true,\n onEvent: (event) => {\n // TODO: we don't need checks like this since it comes from the transceiver\n // refactor event linkage to use callbacks instead of events\n if (event.kind === 'audio' && event.stat === 'bytesSent') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED,\n {\n type: mediaType.AUDIO\n }\n );\n Metrics.postEvent({\n event: eventType.SENDING_MEDIA_START,\n meeting,\n data: {\n mediaType: mediaType.AUDIO\n }\n });\n }\n else if (event.stop && event.stat === 'bytesSent') {\n Metrics.postEvent({\n event: eventType.SENDING_MEDIA_STOP,\n meeting,\n data: {\n mediaType: mediaType.AUDIO\n }\n });\n }\n },\n onData: () => {}\n },\n {\n id: 'mainVideo',\n correlate: 'video',\n history: true,\n onEvent: (event) => {\n if (event.kind === 'video' && event.stat === 'bytesSent') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED,\n {\n type: mediaType.VIDEO\n }\n );\n Metrics.postEvent({\n event: eventType.SENDING_MEDIA_START,\n meeting,\n data: {\n mediaType: mediaType.VIDEO\n }\n });\n }\n else if (event.stop && event.stat === 'bytesSent') {\n Metrics.postEvent({\n event: eventType.SENDING_MEDIA_STOP,\n meeting,\n data: {\n mediaType: mediaType.VIDEO\n }\n });\n }\n },\n onData: () => {}\n },\n {\n id: 'mainShare',\n correlate: 'video',\n onEvent: (event) => {\n if (event.kind === 'share' && event.stat === 'bytesSent') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED,\n {\n type: mediaType.SHARE\n }\n );\n Metrics.postEvent({\n event: eventType.SENDING_SHARE_START,\n meeting,\n data: {\n mediaType: mediaType.SHARE\n }\n });\n }\n else if (event.stop && event.stat === 'bytesSent') {\n Metrics.postEvent({\n event: eventType.SENDING_SHARE_STOP,\n meeting,\n data: {\n mediaType: mediaType.SHARE\n }\n });\n }\n },\n onData: () => {}\n }\n ],\n receivers: [\n {\n id: 'mainAudio',\n correlate: 'audio',\n history: true,\n onEvent: (event) => {\n if (event.kind === 'audio' && event.stat === 'bytesReceived') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED,\n {\n type: mediaType.AUDIO\n }\n );\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_START,\n meeting,\n data: {\n mediaType: mediaType.AUDIO\n }\n });\n }\n else if (event.stop && event.stat === 'bytesReceived') {\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_STOP,\n meeting,\n data: {\n mediaType: mediaType.AUDIO\n }\n });\n }\n },\n onData: () => {}\n },\n {\n id: 'mainVideo',\n correlate: 'video',\n history: true,\n onEvent: (event) => {\n if (event.kind === 'video' && event.stat === 'bytesReceived') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED,\n {\n type: mediaType.VIDEO\n }\n );\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_START,\n meeting,\n data: {\n mediaType: mediaType.VIDEO\n }\n });\n }\n else if (event.stop && event.stat === 'bytesReceived') {\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_STOP,\n meeting,\n data: {\n mediaType: mediaType.VIDEO\n }\n });\n }\n },\n onData: () => {}\n },\n {\n id: 'mainShare',\n correlate: 'video',\n onEvent: (event) => {\n if (event.kind === 'share' && event.stat === 'bytesReceived') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED,\n {\n type: mediaType.SHARE\n }\n );\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_START,\n meeting,\n data: {\n mediaType: mediaType.SHARE\n }\n });\n }\n else if (event.stop && event.stat === 'bytesReceived') {\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_STOP,\n meeting,\n data: {\n mediaType: mediaType.SHARE\n }\n });\n }\n },\n onData: () => {}\n }\n ]\n };\n\n StatsUtil.generateOptions(options, STATS.CONFIG, meeting);\n\n options.config = STATS.CONFIG;\n\n // pass the attrs and options for the webex instance\n meeting.internalStats = new WebRTCStats(meeting.attrs, meeting.options, options);\n }\n\n return meeting.internalStats;\n};\n\nMeetingUtil.handleAudioLogging = (audioTrack) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioTrack) {\n const settings = audioTrack.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n};\n\nMeetingUtil.handleVideoLogging = (videoTrack) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoTrack) {\n const settings = videoTrack.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n};\n\nMeetingUtil.handleDeviceLogging = (devices = []) => {\n const LOG_HEADER = 'MeetingUtil#handleDeviceLogging -->';\n\n devices.forEach((device) => {\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${device.deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings', JSON.stringify(device));\n });\n};\n\nexport default MeetingUtil;\n"]}
1
+ {"version":3,"sources":["util.js"],"names":["MeetingUtil","parseLocusJoin","response","parsed","locus","body","mediaConnections","locusUrl","url","locusId","split","pop","selfId","self","id","forEach","mediaConnection","mediaId","remoteUpdateAudioVideo","audioMuted","videoMuted","meeting","reject","ParameterError","localMedias","Media","generateLocalMedias","Metrics","postEvent","event","eventType","MEDIA_REQUEST","meetingRequest","remoteAudioVideoToggle","deviceUrl","correlationId","then","MEDIA_RESPONSE","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","err","errorCode","INTENT_TO_JOIN","joinMeeting","options","LOCUS_JOIN_REQUEST","sipUri","meetingNumber","roapMessage","resourceId","moderator","pin","moveToResource","preferTranscoding","asResourceOccupant","res","LOCUS_JOIN_RESPONSE","data","trigger","LOCI_UPDATE","trackingId","headers","trackingid","cleanUp","statsAnalyzer","stopAnalyzer","closeLocalStream","closeLocalShare","closeRemoteTracks","closePeerConnections","unsetLocalVideoTrack","unsetLocalShareTrack","unsetRemoteTracks","unsetPeerConnections","cleanMQAInterval","reconnectionManager","roap","stop","roapSeq","leavePstn","dialInUrl","meetingState","FULL_STATE","INACTIVE","MeetingNotActiveError","locusInfo","onFullLocus","catch","LoggerProxy","logger","error","leaveMeeting","isUserInLeftState","UserNotJoinedError","defaultOptions","leaveOptions","resolve","moveMeeting","declineMeeting","reason","parsedLocus","state","_LEFT_","isUserInIdleState","_IDLE_","isUserInJoinedState","_JOINED_","isMediaEstablished","currentMediaStatus","audio","video","share","joinMeetingOptions","PIN_COLLECTED","setLocus","meetingInfo","PIN_PROMPT","IntentToJoinError","JoinMeetingError","updateTransceiver","meetingOptions","type","sendTrack","receiveTrack","track","transceiver","peerConnection","previousMediaDirection","undefined","meetingId","remoteQualityLevel","mediaProperties","enableRtx","config","sendRoapMediaRequest","sdp","e","sender","replaceTrack","validateOptions","sendVideo","sendAudio","sendShare","localStream","localShare","getTrack","videoTrack","audioTrack","stream","audioTracks","videoTracks","getAudioTracks","getVideoTracks","length","getModeratorFromLocusInfo","getPolicyFromLocusInfo","policy","canUserLock","joined","LOCK_CONTROL_LOCK","LOCK_STATUS_UNLOCKED","canUserUnlock","LOCK_CONTROL_UNLOCK","LOCK_STATUS_LOCKED","canUserRecord","RECORDING_CONTROL_START","canUserPause","RECORDING_CONTROL_PAUSE","canUserResume","RECORDING_CONTROL_RESUME","canUserStop","RECORDING_CONTROL_STOP","startRecording","request","recordMeeting","recording","paused","PermissionError","pauseRecording","resumeRecording","stopRecording","lockMeeting","actions","canLock","lock","unlockMeeting","canUnlock","startInternalStats","internalStats","useConfig","senders","correlate","history","onEvent","kind","stat","Trigger","file","function","EVENT_TRIGGERS","MEETING_MEDIA_LOCAL_STARTED","mediaType","AUDIO","SENDING_MEDIA_START","SENDING_MEDIA_STOP","onData","VIDEO","SHARE","SENDING_SHARE_START","SENDING_SHARE_STOP","receivers","MEETING_MEDIA_REMOTE_STARTED","RECEIVING_MEDIA_START","RECEIVING_MEDIA_STOP","StatsUtil","generateOptions","STATS","CONFIG","WebRTCStats","attrs","handleAudioLogging","LOG_HEADER","settings","getSettings","deviceId","log","handleVideoLogging","handleDeviceLogging","devices","device"],"mappings":"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","sourcesContent":["import {isEmpty} from 'lodash';\n\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport StatsUtil from '../stats/util';\nimport Metrics from '../metrics';\nimport {eventType, trigger, mediaType} from '../metrics/config';\nimport Media from '../media';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport WebRTCStats from '../stats/index';\nimport {INTENT_TO_JOIN,\n _LEFT_,\n _IDLE_,\n _JOINED_,\n STATS,\n EVENT_TRIGGERS\n , FULL_STATE} from '../constants';\nimport Trigger from '../common/events/trigger-proxy';\nimport IntentToJoinError from '../common/errors/intent-to-join';\nimport JoinMeetingError from '../common/errors/join-meeting';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\n\n\nconst MeetingUtil = {};\n\nMeetingUtil.parseLocusJoin = (response) => {\n const parsed = {};\n\n // First todo: add check for existance\n parsed.locus = response.body.locus;\n parsed.mediaConnections = response.body.mediaConnections;\n parsed.locusUrl = parsed.locus.url;\n parsed.locusId = parsed.locus.url.split('/').pop();\n parsed.selfId = parsed.locus.self.id;\n\n // we need mediaId before making roap calls\n parsed.mediaConnections.forEach((mediaConnection) => {\n if (mediaConnection.mediaId) {\n parsed.mediaId = mediaConnection.mediaId;\n }\n });\n\n return parsed;\n};\n\nMeetingUtil.remoteUpdateAudioVideo = (audioMuted, videoMuted, meeting) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n const localMedias = Media.generateLocalMedias(meeting.mediaId, audioMuted, videoMuted);\n\n if (isEmpty(localMedias)) {\n return Promise.reject(new ParameterError('You need a media id on the meeting to change remote audio.'));\n }\n\n Metrics.postEvent({event: eventType.MEDIA_REQUEST, meeting});\n\n return meeting.meetingRequest.remoteAudioVideoToggle({\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n localMedias,\n deviceUrl: meeting.deviceUrl,\n correlationId: meeting.correlationId\n }).then((response) => {\n Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meeting});\n\n return response.body.locus;\n });\n};\n\nMeetingUtil.hasOwner = (info) => info && info.owner;\n\nMeetingUtil.isOwnerSelf = (owner, selfId) => owner === selfId;\n\nMeetingUtil.isPinOrGuest = (err) => {\n if (err && err.body && err.body.errorCode === INTENT_TO_JOIN) {\n return true;\n }\n\n return false;\n};\n\nMeetingUtil.joinMeeting = (meeting, options) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n Metrics.postEvent({event: eventType.LOCUS_JOIN_REQUEST, meeting});\n\n // eslint-disable-next-line no-warning-comments\n // TODO: check if the meeting is in JOINING state\n // if Joining state termintate the request as user might click multiple times\n return meeting.meetingRequest\n .joinMeeting({\n sipUri: meeting.sipUri,\n meetingNumber: meeting.meetingNumber,\n deviceUrl: meeting.deviceUrl,\n locusUrl: meeting.locusUrl,\n correlationId: meeting.correlationId,\n roapMessage: options.roapMessage,\n resourceId: options.resourceId || null,\n moderator: options.moderator,\n pin: options.pin,\n moveToResource: options.moveToResource,\n preferTranscoding: options.preferTranscoding,\n asResourceOccupant: options.asResourceOccupant\n })\n .then((res) => {\n Metrics.postEvent({\n event: eventType.LOCUS_JOIN_RESPONSE,\n meeting,\n data: {\n trigger: trigger.LOCI_UPDATE,\n locus: res.body.locus,\n mediaConnections: res.body.mediaConnections,\n trackingId: res.headers.trackingid\n }\n });\n\n return MeetingUtil.parseLocusJoin(res);\n });\n};\n\nMeetingUtil.cleanUp = (meeting) => {\n // make sure we send last metrics before we close the peerconnection\n if (meeting.statsAnalyzer) meeting.statsAnalyzer.stopAnalyzer();\n\n return meeting.closeLocalStream()\n .then(() => meeting.closeLocalShare())\n .then(() => meeting.closeRemoteTracks())\n .then(() => meeting.closePeerConnections())\n .then(() => {\n meeting.unsetLocalVideoTrack();\n meeting.unsetLocalShareTrack();\n meeting.unsetRemoteTracks();\n meeting.unsetPeerConnections();\n meeting.cleanMQAInterval();\n meeting.reconnectionManager.cleanUp();\n })\n .then(() => meeting.roap.stop(meeting.correlationId, meeting.roapSeq));\n};\n\nMeetingUtil.leavePstn = (meeting, dialInUrl) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const options = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n dialInUrl\n };\n\n return meeting.meetingRequest\n .leavePstn(options)\n .then((response) => {\n if (response?.body?.locus) {\n meeting.locusInfo.onFullLocus(response.body.locus);\n }\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#leavePstn --> An error occured while trying to leave pstn with an id of ${\n meeting.id\n }, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n};\n\n// by default will leave on meeting's resourceId\n// if you explicity want it not to leave on resource id, pass\n// {resourceId: null}\n// TODO: chris, you can modify this however you want\nMeetingUtil.leaveMeeting = (meeting, options = {}) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n // TODO: clean up if the meeting is already inactive\n return Promise.reject(new MeetingNotActiveError());\n }\n\n if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n const defaultOptions = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n resourceId: meeting.resourceId,\n deviceUrl: meeting.deviceUrl\n };\n\n const leaveOptions = {...defaultOptions, ...options};\n\n return meeting.meetingRequest\n .leaveMeeting(leaveOptions)\n .then((response) => {\n if (response && response.body && response.body.locus) { // && !options.moveMeeting) {\n meeting.locusInfo.onFullLocus(response.body.locus);\n }\n\n return Promise.resolve();\n })\n .then(() => {\n if (options.moveMeeting) {\n return Promise.resolve();\n }\n\n return MeetingUtil.cleanUp(meeting);\n })\n .catch((err) => {\n // TODO: If the meeting state comes as LEFT or INACTIVE as response then\n // 1) on leave clean up the meeting or simply do a sync on the meeting\n // 2) If the error says meeting is inactive then destroy the meeting object\n LoggerProxy.logger.error(\n `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${\n meeting.id\n }, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n};\nMeetingUtil.declineMeeting = (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason\n });\n\nMeetingUtil.isUserInLeftState = (locusInfo) =>\n locusInfo.parsedLocus?.self?.state === _LEFT_;\n\nMeetingUtil.isUserInIdleState = (locusInfo) =>\n locusInfo.parsedLocus?.self?.state === _IDLE_;\n\nMeetingUtil.isUserInJoinedState = (locusInfo) =>\n locusInfo.parsedLocus?.self?.state === _JOINED_;\n\nMeetingUtil.isMediaEstablished = (currentMediaStatus) =>\n currentMediaStatus && (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share);\n\n\nMeetingUtil.joinMeetingOptions = (meeting, options = {}) => {\n meeting.resourceId = meeting.resourceId || options.resourceId;\n\n if (options.pin) {\n Metrics.postEvent({\n event: eventType.PIN_COLLECTED,\n meeting\n });\n }\n\n // normal join meeting, scenario A, D\n return MeetingUtil.joinMeeting(meeting, options)\n .then((response) => {\n meeting.setLocus(response);\n\n return Promise.resolve(response);\n })\n .catch((err) => {\n // joining a claimed PMR that is not my own, scenario B\n if (MeetingUtil.isPinOrGuest(err)) {\n if (MeetingUtil.hasOwner(meeting.meetingInfo)) {\n return MeetingUtil.joinMeeting(meeting, options).then((response) => {\n meeting.setLocus(response);\n\n return Promise.resolve();\n });\n }\n\n Metrics.postEvent({\n event: eventType.PIN_PROMPT,\n meeting\n });\n\n // request host pin or non host for unclaimed PMR, start of Scenario C\n // see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature\n return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));\n }\n LoggerProxy.logger.error('Meeting:util#joinMeetingOptions --> Error joining the call, ', err);\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n};\n\nMeetingUtil.updateTransceiver = (options, meetingOptions) => {\n const {\n type,\n sendTrack,\n receiveTrack,\n track,\n transceiver,\n peerConnection,\n previousMediaDirection\n } = options;\n\n if ((sendTrack !== undefined && sendTrack !== previousMediaDirection.sendTrack) ||\n (receiveTrack !== undefined && receiveTrack !== previousMediaDirection.receiveTrack)) {\n return Media.updateTransceiver({\n meetingId: meetingOptions.meeting.id,\n remoteQualityLevel: meetingOptions.mediaProperties.remoteQualityLevel,\n enableRtx: meetingOptions.meeting.config.enableRtx\n }, peerConnection, transceiver,\n {\n track,\n type,\n receiveTrack,\n sendTrack\n })\n .then(() => meetingOptions.meeting.roap\n .sendRoapMediaRequest({\n sdp: meetingOptions.mediaProperties.peerConnection.sdp,\n roapSeq: meetingOptions.meeting.roapSeq,\n meeting: meetingOptions.meeting // or can pass meeting ID\n }))\n .catch((e) => {\n LoggerProxy.logger.error(`Meeting:util#updateTransceiver --> Error updating the ${type} streams with error: ${e}`);\n });\n } if (track) {\n transceiver.sender.replaceTrack(track);\n\n return Promise.resolve();\n }\n\n return Promise.reject(new ParameterError('update Failed: please pass valid parameter'));\n};\n\nMeetingUtil.validateOptions = (options) => {\n const {\n sendVideo, sendAudio, sendShare, localStream, localShare\n } = options;\n\n if (sendVideo && !MeetingUtil.getTrack(localStream).videoTrack) {\n return Promise.reject(new ParameterError('please pass valid video streams'));\n }\n\n if (sendAudio && !MeetingUtil.getTrack(localStream).audioTrack) {\n return Promise.reject(new ParameterError('please pass valid audio streams'));\n }\n\n if (sendShare && !MeetingUtil.getTrack(localShare).videoTrack) {\n return Promise.reject(new ParameterError('please pass valid share streams'));\n }\n\n return Promise.resolve();\n};\n\nMeetingUtil.getTrack = (stream) => {\n let audioTrack = null;\n let videoTrack = null;\n let audioTracks = null;\n let videoTracks = null;\n\n if (!stream) {\n return {audioTrack: null, videoTrack: null};\n }\n if (stream.getAudioTracks) {\n audioTracks = stream.getAudioTracks();\n }\n if (stream.getVideoTracks) {\n videoTracks = stream.getVideoTracks();\n }\n\n if (audioTracks && audioTracks.length > 0) {\n [audioTrack] = audioTracks;\n }\n\n if (videoTracks && videoTracks.length > 0) {\n [videoTrack] = videoTracks;\n }\n\n return {audioTrack, videoTrack};\n};\n\nMeetingUtil.getModeratorFromLocusInfo = (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator;\n\nMeetingUtil.getPolicyFromLocusInfo = (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy;\n\nMeetingUtil.canUserLock = (moderator, joined) => {\n if (moderator.LOCK_CONTROL_LOCK && joined.LOCK_STATUS_UNLOCKED) {\n return true;\n }\n\n return false;\n};\n\nMeetingUtil.canUserUnlock = (moderator, joined) => {\n if (moderator.LOCK_CONTROL_UNLOCK && joined.LOCK_STATUS_LOCKED) {\n return true;\n }\n\n return false;\n};\n\nMeetingUtil.canUserRecord = (moderator) => moderator.RECORDING_CONTROL_START;\n\nMeetingUtil.canUserPause = (moderator) => moderator.RECORDING_CONTROL_PAUSE;\n\nMeetingUtil.canUserResume = (moderator) => moderator.RECORDING_CONTROL_RESUME;\n\nMeetingUtil.canUserStop = (moderator) => moderator.RECORDING_CONTROL_STOP;\n\nMeetingUtil.startRecording = (request, locusUrl, locusInfo) => {\n const moderator = MeetingUtil.getModeratorFromLocusInfo(locusInfo);\n\n if (moderator && MeetingUtil.canUserRecord(moderator)) {\n return request.recordMeeting({locusUrl, recording: true, paused: false});\n }\n\n return Promise.reject(new PermissionError('Start recording not allowed, due to moderator property.'));\n};\n\nMeetingUtil.pauseRecording = (request, locusUrl, locusInfo) => {\n const moderator = MeetingUtil.getModeratorFromLocusInfo(locusInfo);\n\n if (moderator && MeetingUtil.canUserPause(moderator)) {\n return request.recordMeeting({locusUrl, recording: true, paused: true});\n }\n\n return Promise.reject(new PermissionError('Pause recording not allowed, due to moderator property.'));\n};\n\nMeetingUtil.resumeRecording = (request, locusUrl, locusInfo) => {\n const moderator = MeetingUtil.getModeratorFromLocusInfo(locusInfo);\n\n if (moderator && MeetingUtil.canUserResume(moderator)) {\n return request.recordMeeting({locusUrl, recording: true, paused: false});\n }\n\n return Promise.reject(new PermissionError('Resume recording not allowed, due to moderator property.'));\n};\n\nMeetingUtil.stopRecording = (request, locusUrl, locusInfo) => {\n const moderator = MeetingUtil.getModeratorFromLocusInfo(locusInfo);\n\n if (moderator && MeetingUtil.canUserStop(moderator)) {\n return request.recordMeeting({locusUrl, recording: false, paused: false});\n }\n\n return Promise.reject(new PermissionError('Stop recording not allowed, due to moderator property.'));\n};\n\nMeetingUtil.lockMeeting = (actions, request, locusUrl) => {\n if (actions && actions.canLock) {\n return request.lockMeeting({locusUrl, lock: true});\n }\n\n return Promise.reject(new PermissionError('Lock not allowed, due to joined property.'));\n};\n\nMeetingUtil.unlockMeeting = (actions, request, locusUrl) => {\n if (actions && actions.canUnlock) {\n return request.lockMeeting({locusUrl, lock: false});\n }\n\n return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));\n};\n\nMeetingUtil.startInternalStats = (meeting) => {\n if (!meeting.internalStats) {\n const options = {\n useConfig: true,\n senders: [\n {\n id: 'mainAudio',\n correlate: 'audio',\n history: true,\n onEvent: (event) => {\n // TODO: we don't need checks like this since it comes from the transceiver\n // refactor event linkage to use callbacks instead of events\n if (event.kind === 'audio' && event.stat === 'bytesSent') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED,\n {\n type: mediaType.AUDIO\n }\n );\n Metrics.postEvent({\n event: eventType.SENDING_MEDIA_START,\n meeting,\n data: {\n mediaType: mediaType.AUDIO\n }\n });\n }\n else if (event.stop && event.stat === 'bytesSent') {\n Metrics.postEvent({\n event: eventType.SENDING_MEDIA_STOP,\n meeting,\n data: {\n mediaType: mediaType.AUDIO\n }\n });\n }\n },\n onData: () => {}\n },\n {\n id: 'mainVideo',\n correlate: 'video',\n history: true,\n onEvent: (event) => {\n if (event.kind === 'video' && event.stat === 'bytesSent') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED,\n {\n type: mediaType.VIDEO\n }\n );\n Metrics.postEvent({\n event: eventType.SENDING_MEDIA_START,\n meeting,\n data: {\n mediaType: mediaType.VIDEO\n }\n });\n }\n else if (event.stop && event.stat === 'bytesSent') {\n Metrics.postEvent({\n event: eventType.SENDING_MEDIA_STOP,\n meeting,\n data: {\n mediaType: mediaType.VIDEO\n }\n });\n }\n },\n onData: () => {}\n },\n {\n id: 'mainShare',\n correlate: 'video',\n onEvent: (event) => {\n if (event.kind === 'share' && event.stat === 'bytesSent') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED,\n {\n type: mediaType.SHARE\n }\n );\n Metrics.postEvent({\n event: eventType.SENDING_SHARE_START,\n meeting,\n data: {\n mediaType: mediaType.SHARE\n }\n });\n }\n else if (event.stop && event.stat === 'bytesSent') {\n Metrics.postEvent({\n event: eventType.SENDING_SHARE_STOP,\n meeting,\n data: {\n mediaType: mediaType.SHARE\n }\n });\n }\n },\n onData: () => {}\n }\n ],\n receivers: [\n {\n id: 'mainAudio',\n correlate: 'audio',\n history: true,\n onEvent: (event) => {\n if (event.kind === 'audio' && event.stat === 'bytesReceived') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED,\n {\n type: mediaType.AUDIO\n }\n );\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_START,\n meeting,\n data: {\n mediaType: mediaType.AUDIO\n }\n });\n }\n else if (event.stop && event.stat === 'bytesReceived') {\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_STOP,\n meeting,\n data: {\n mediaType: mediaType.AUDIO\n }\n });\n }\n },\n onData: () => {}\n },\n {\n id: 'mainVideo',\n correlate: 'video',\n history: true,\n onEvent: (event) => {\n if (event.kind === 'video' && event.stat === 'bytesReceived') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED,\n {\n type: mediaType.VIDEO\n }\n );\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_START,\n meeting,\n data: {\n mediaType: mediaType.VIDEO\n }\n });\n }\n else if (event.stop && event.stat === 'bytesReceived') {\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_STOP,\n meeting,\n data: {\n mediaType: mediaType.VIDEO\n }\n });\n }\n },\n onData: () => {}\n },\n {\n id: 'mainShare',\n correlate: 'video',\n onEvent: (event) => {\n if (event.kind === 'share' && event.stat === 'bytesReceived') {\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'startInternalStats'\n },\n EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED,\n {\n type: mediaType.SHARE\n }\n );\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_START,\n meeting,\n data: {\n mediaType: mediaType.SHARE\n }\n });\n }\n else if (event.stop && event.stat === 'bytesReceived') {\n Metrics.postEvent({\n event: eventType.RECEIVING_MEDIA_STOP,\n meeting,\n data: {\n mediaType: mediaType.SHARE\n }\n });\n }\n },\n onData: () => {}\n }\n ]\n };\n\n StatsUtil.generateOptions(options, STATS.CONFIG, meeting);\n\n options.config = STATS.CONFIG;\n\n // pass the attrs and options for the webex instance\n meeting.internalStats = new WebRTCStats(meeting.attrs, meeting.options, options);\n }\n\n return meeting.internalStats;\n};\n\nMeetingUtil.handleAudioLogging = (audioTrack) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioTrack) {\n const settings = audioTrack.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n};\n\nMeetingUtil.handleVideoLogging = (videoTrack) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoTrack) {\n const settings = videoTrack.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n};\n\nMeetingUtil.handleDeviceLogging = (devices = []) => {\n const LOG_HEADER = 'MeetingUtil#handleDeviceLogging -->';\n\n devices.forEach((device) => {\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${device.deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings', JSON.stringify(device));\n });\n};\n\nexport default MeetingUtil;\n"]}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
+
7
+ _Object$defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+
11
+ exports.default = void 0;
12
+
13
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
14
+
15
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
16
+
17
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
18
+
19
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
20
+
21
+ var _constants = require("../constants");
22
+
23
+ var _utilv = _interopRequireDefault(require("./utilv2"));
24
+
25
+ /**
26
+ * @class MeetingInfo
27
+ */
28
+ var MeetingInfoV2 = /*#__PURE__*/function () {
29
+ /**
30
+ *
31
+ * @param {WebexSDK} webex
32
+ */
33
+ function MeetingInfoV2(webex) {
34
+ (0, _classCallCheck2.default)(this, MeetingInfoV2);
35
+ this.webex = webex;
36
+ }
37
+ /**
38
+ * converts hydra id into conversation url and persons Id
39
+ * @param {String} destination one of many different types of destinations to look up info for
40
+ * @param {String} [type] to match up with the destination value
41
+ * @returns {Promise} returns destination and type
42
+ * @public
43
+ * @memberof MeetingInfo
44
+ */
45
+
46
+
47
+ (0, _createClass2.default)(MeetingInfoV2, [{
48
+ key: "fetchInfoOptions",
49
+ value: function fetchInfoOptions(destination) {
50
+ var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
51
+ return _utilv.default.getDestinationType({
52
+ destination: destination,
53
+ type: type,
54
+ webex: this.webex
55
+ });
56
+ }
57
+ /**
58
+ * Fetches meeting info from the server
59
+ * @param {String} destination one of many different types of destinations to look up info for
60
+ * @param {String} [type] to match up with the destination value
61
+ * @returns {Promise} returns a meeting info object
62
+ * @public
63
+ * @memberof MeetingInfo
64
+ */
65
+
66
+ }, {
67
+ key: "fetchMeetingInfo",
68
+ value: function () {
69
+ var _fetchMeetingInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(destination) {
70
+ var type,
71
+ destinationType,
72
+ body,
73
+ _args = arguments;
74
+ return _regenerator.default.wrap(function _callee$(_context) {
75
+ while (1) {
76
+ switch (_context.prev = _context.next) {
77
+ case 0:
78
+ type = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
79
+ _context.next = 3;
80
+ return _utilv.default.getDestinationType({
81
+ destination: destination,
82
+ type: type,
83
+ webex: this.webex
84
+ });
85
+
86
+ case 3:
87
+ destinationType = _context.sent;
88
+ _context.next = 6;
89
+ return _utilv.default.getRequestBody(destinationType);
90
+
91
+ case 6:
92
+ body = _context.sent;
93
+ return _context.abrupt("return", this.webex.request({
94
+ method: _constants.HTTP_VERBS.POST,
95
+ service: 'webex-appapi-service',
96
+ resource: 'meetingInfo',
97
+ body: body
98
+ }));
99
+
100
+ case 8:
101
+ case "end":
102
+ return _context.stop();
103
+ }
104
+ }
105
+ }, _callee, this);
106
+ }));
107
+
108
+ function fetchMeetingInfo(_x) {
109
+ return _fetchMeetingInfo.apply(this, arguments);
110
+ }
111
+
112
+ return fetchMeetingInfo;
113
+ }()
114
+ }]);
115
+ return MeetingInfoV2;
116
+ }();
117
+
118
+ exports.default = MeetingInfoV2;
119
+ //# sourceMappingURL=meeting-info-v2.js.map