@webex/plugin-meetings 2.52.13 → 2.53.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/meeting-info/meeting-info-v2.js +2 -6
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/util.js +5 -6
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +13 -10
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/index.d.ts +0 -1
- package/dist/meetings/index.js +0 -1
- package/dist/meetings/index.js.map +1 -1
- package/package.json +19 -20
- package/src/meeting-info/meeting-info-v2.ts +3 -3
- package/src/meeting-info/util.ts +10 -5
- package/src/meeting-info/utilv2.ts +28 -16
- package/src/meetings/index.ts +0 -1
- package/test/unit/spec/meeting-info/meetinginfov2.js +8 -4
|
@@ -197,13 +197,9 @@ var MeetingInfoV2 = /*#__PURE__*/function () {
|
|
|
197
197
|
}
|
|
198
198
|
return invitees;
|
|
199
199
|
};
|
|
200
|
-
return _context.abrupt("return", this.webex.
|
|
201
|
-
url: conversationUrl
|
|
202
|
-
}, {
|
|
203
|
-
includeParticipants: true,
|
|
204
|
-
disableTransform: true
|
|
205
|
-
}).then(function (conversation) {
|
|
200
|
+
return _context.abrupt("return", this.webex.request(conversationUrl).then(function (_ref) {
|
|
206
201
|
var _conversation$partici;
|
|
202
|
+
var conversation = _ref.body;
|
|
207
203
|
var body = {
|
|
208
204
|
title: conversation.displayName,
|
|
209
205
|
spaceUrl: conversation.url,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_constants","require","_metrics","_interopRequireDefault","_constants2","_utilv","ownKeys","object","enumerableOnly","keys","_Object$keys","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","Object","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","PASSWORD_ERROR_DEFAULT_MESSAGE","CAPTCHA_ERROR_DEFAULT_MESSAGE","ADHOC_MEETING_DEFAULT_ERROR","CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES","MeetingInfoV2PasswordError","_Error","_inherits2","_super","wbxAppApiErrorCode","meetingInfo","_this","message","undefined","_classCallCheck2","concat","_assertThisInitialized2","name","sdkMessage","stack","Error","wbxAppApiCode","_createClass2","_wrapNativeSuper2","exports","MeetingInfoV2AdhocMeetingError","_Error2","_super2","_this2","MeetingInfoV2CaptchaError","_Error3","_super3","captchaInfo","_this3","isPasswordRequired","includes","MeetingInfoV2","webex","value","fetchInfoOptions","destination","type","MeetingInfoUtil","getDestinationType","_createAdhocSpaceMeeting","_asyncToGenerator2","_regenerator","mark","_callee","conversationUrl","_this4","getInvitees","wrap","_callee$","_context","prev","next","meetings","preferredWebexSite","particpants","invitees","participant","email","emailAddress","ciUserUuid","entryUUID","abrupt","internal","conversation","get","url","includeParticipants","disableTransform","then","_conversation$partici","body","title","displayName","spaceUrl","keyUrl","encryptionKeyUrl","kroUrl","kmsResourceObjectUrl","participants","items","uri","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","ADHOC_MEETING_SUCCESS","request","method","HTTP_VERBS","POST","catch","err","_err$body","_err$body2","ADHOC_MEETING_FAILURE","reason","code","stop","createAdhocSpaceMeeting","_x","_fetchMeetingInfo","_callee2","password","destinationType","options","directURI","_args2","_callee2$","_context2","sent","_CONVERSATION_URL_","config","experimental","enableAdhocMeetings","getRequestBody","getDirectMeetingInfoURI","service","WBXAPPAPI_SERVICE","resource","response","FETCH_MEETING_INFO_V1_SUCCESS","statusCode","_err$body3","_err$body4","_err$body4$data","VERIFY_PASSWORD_ERROR","data","_err$body5","VERIFY_CAPTCHA_ERROR","captchaId","captchaID","verificationImageURL","verificationAudioURL","refreshURL","FETCH_MEETING_INFO_V1_FAILURE","fetchMeetingInfo","_x2"],"sources":["meeting-info-v2.ts"],"sourcesContent":["import {HTTP_VERBS, _CONVERSATION_URL_, WBXAPPAPI_SERVICE} from '../constants';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\nimport MeetingInfoUtil from './utilv2';\n\nconst PASSWORD_ERROR_DEFAULT_MESSAGE =\n 'Password required. Call fetchMeetingInfo() with password argument';\nconst CAPTCHA_ERROR_DEFAULT_MESSAGE =\n 'Captcha required. Call fetchMeetingInfo() with captchaInfo argument';\nconst ADHOC_MEETING_DEFAULT_ERROR =\n 'Failed starting the adhoc meeting, Please contact support team ';\nconst CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES = [423005, 423006];\n\n/**\n * Error to indicate that wbxappapi requires a password\n */\nexport class MeetingInfoV2PasswordError extends Error {\n meetingInfo: any;\n sdkMessage: any;\n wbxAppApiCode: any;\n body: any;\n\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {Object} [meetingInfo]\n * @param {String} [message]\n */\n constructor(\n wbxAppApiErrorCode?: number,\n meetingInfo?: object,\n message: string = PASSWORD_ERROR_DEFAULT_MESSAGE\n ) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2PasswordError';\n this.sdkMessage = message;\n this.stack = new Error().stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n this.meetingInfo = meetingInfo;\n }\n}\n\n/**\n * Error generating a adhoc space meeting\n */\nexport class MeetingInfoV2AdhocMeetingError extends Error {\n sdkMessage: any;\n wbxAppApiCode: any;\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {String} [message]\n */\n constructor(wbxAppApiErrorCode?: number, message: string = ADHOC_MEETING_DEFAULT_ERROR) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2AdhocMeetingError';\n this.sdkMessage = message;\n this.stack = new Error().stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n }\n}\n\n/**\n * Error to indicate that preferred webex site not present to start adhoc meeting\n */\nexport class MeetingInfoV2CaptchaError extends Error {\n captchaInfo: any;\n isPasswordRequired: any;\n sdkMessage: any;\n wbxAppApiCode: any;\n body: any;\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {Object} [captchaInfo]\n * @param {String} [message]\n */\n constructor(\n wbxAppApiErrorCode?: number,\n captchaInfo?: object,\n message: string = CAPTCHA_ERROR_DEFAULT_MESSAGE\n ) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2PasswordError';\n this.sdkMessage = message;\n this.stack = new Error().stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n this.isPasswordRequired = CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES.includes(wbxAppApiErrorCode);\n this.captchaInfo = captchaInfo;\n }\n}\n\n/**\n * @class MeetingInfo\n */\nexport default class MeetingInfoV2 {\n webex: any;\n\n /**\n *\n * @param {WebexSDK} webex\n */\n constructor(webex) {\n this.webex = webex;\n }\n\n /**\n * converts hydra id into conversation url and persons Id\n * @param {String} destination one of many different types of destinations to look up info for\n * @param {String} [type] to match up with the destination value\n * @returns {Promise} destination and type\n * @public\n * @memberof MeetingInfo\n */\n fetchInfoOptions(destination: string, type: string = null) {\n return MeetingInfoUtil.getDestinationType({\n destination,\n type,\n webex: this.webex,\n });\n }\n\n /**\n * Creates adhoc space meetings for a space by fetching the conversation infomation\n * @param {String} conversationUrl conversationUrl to start adhoc meeting on\n * @returns {Promise} returns a meeting info object\n * @public\n * @memberof MeetingInfo\n */\n async createAdhocSpaceMeeting(conversationUrl: string) {\n if (!this.webex.meetings.preferredWebexSite) {\n throw Error('No preferred webex site found');\n }\n const getInvitees = (particpants = []) => {\n const invitees = [];\n\n if (particpants) {\n particpants.forEach((participant) => {\n invitees.push({\n email: participant.emailAddress,\n ciUserUuid: participant.entryUUID,\n });\n });\n }\n\n return invitees;\n };\n\n return this.webex.internal.conversation\n .get({url: conversationUrl}, {includeParticipants: true, disableTransform: true})\n .then((conversation) => {\n const body = {\n title: conversation.displayName,\n spaceUrl: conversation.url,\n keyUrl: conversation.encryptionKeyUrl,\n kroUrl: conversation.kmsResourceObjectUrl,\n invitees: getInvitees(conversation.participants?.items),\n };\n\n const uri = this.webex.meetings.preferredWebexSite\n ? `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant`\n : '';\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);\n\n return this.webex.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n });\n })\n .catch((err) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE, {\n reason: err.message,\n stack: err.stack,\n });\n throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);\n });\n }\n\n /**\n * Fetches meeting info from the server\n * @param {String} destination one of many different types of destinations to look up info for\n * @param {String} [type] to match up with the destination value\n * @param {String} password\n * @param {Object} captchaInfo\n * @param {String} captchaInfo.code\n * @param {String} captchaInfo.id\n * @returns {Promise} returns a meeting info object\n * @public\n * @memberof MeetingInfo\n */\n async fetchMeetingInfo(\n destination: string,\n type: string = null,\n password: string = null,\n captchaInfo: {\n code: string;\n id: string;\n } = null\n ) {\n const destinationType = await MeetingInfoUtil.getDestinationType({\n destination,\n type,\n webex: this.webex,\n });\n\n if (\n destinationType.type === _CONVERSATION_URL_ &&\n this.webex.config.meetings.experimental.enableAdhocMeetings &&\n this.webex.meetings.preferredWebexSite\n ) {\n return this.createAdhocSpaceMeeting(destinationType.destination);\n }\n\n const body = await MeetingInfoUtil.getRequestBody({...destinationType, password, captchaInfo});\n\n const options: any = {\n method: HTTP_VERBS.POST,\n body,\n };\n\n const directURI = await MeetingInfoUtil.getDirectMeetingInfoURI(destinationType);\n\n if (directURI) {\n options.uri = directURI;\n } else {\n options.service = WBXAPPAPI_SERVICE;\n options.resource = 'meetingInfo';\n }\n\n return this.webex\n .request(options)\n .then((response) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS);\n\n return response;\n })\n .catch((err) => {\n if (err?.statusCode === 403) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR, {\n reason: err.message,\n stack: err.stack,\n });\n\n throw new MeetingInfoV2PasswordError(err.body?.code, err.body?.data?.meetingInfo);\n }\n if (err?.statusCode === 423) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR, {\n reason: err.message,\n stack: err.stack,\n });\n\n throw new MeetingInfoV2CaptchaError(err.body?.code, {\n captchaId: err.body.captchaID,\n verificationImageURL: err.body.verificationImageURL,\n verificationAudioURL: err.body.verificationAudioURL,\n refreshURL: err.body.refreshURL,\n });\n }\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {\n reason: err.message,\n stack: err.stack,\n });\n throw err;\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_constants","require","_metrics","_interopRequireDefault","_constants2","_utilv","ownKeys","object","enumerableOnly","keys","_Object$keys","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","Object","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","PASSWORD_ERROR_DEFAULT_MESSAGE","CAPTCHA_ERROR_DEFAULT_MESSAGE","ADHOC_MEETING_DEFAULT_ERROR","CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES","MeetingInfoV2PasswordError","_Error","_inherits2","_super","wbxAppApiErrorCode","meetingInfo","_this","message","undefined","_classCallCheck2","concat","_assertThisInitialized2","name","sdkMessage","stack","Error","wbxAppApiCode","_createClass2","_wrapNativeSuper2","exports","MeetingInfoV2AdhocMeetingError","_Error2","_super2","_this2","MeetingInfoV2CaptchaError","_Error3","_super3","captchaInfo","_this3","isPasswordRequired","includes","MeetingInfoV2","webex","value","fetchInfoOptions","destination","type","MeetingInfoUtil","getDestinationType","_createAdhocSpaceMeeting","_asyncToGenerator2","_regenerator","mark","_callee","conversationUrl","_this4","getInvitees","wrap","_callee$","_context","prev","next","meetings","preferredWebexSite","particpants","invitees","participant","email","emailAddress","ciUserUuid","entryUUID","abrupt","request","then","_ref","_conversation$partici","conversation","body","title","displayName","spaceUrl","url","keyUrl","encryptionKeyUrl","kroUrl","kmsResourceObjectUrl","participants","items","uri","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","ADHOC_MEETING_SUCCESS","method","HTTP_VERBS","POST","catch","err","_err$body","_err$body2","ADHOC_MEETING_FAILURE","reason","code","stop","createAdhocSpaceMeeting","_x","_fetchMeetingInfo","_callee2","password","destinationType","options","directURI","_args2","_callee2$","_context2","sent","_CONVERSATION_URL_","config","experimental","enableAdhocMeetings","getRequestBody","getDirectMeetingInfoURI","service","WBXAPPAPI_SERVICE","resource","response","FETCH_MEETING_INFO_V1_SUCCESS","statusCode","_err$body3","_err$body4","_err$body4$data","VERIFY_PASSWORD_ERROR","data","_err$body5","VERIFY_CAPTCHA_ERROR","captchaId","captchaID","verificationImageURL","verificationAudioURL","refreshURL","FETCH_MEETING_INFO_V1_FAILURE","fetchMeetingInfo","_x2"],"sources":["meeting-info-v2.ts"],"sourcesContent":["import {HTTP_VERBS, _CONVERSATION_URL_, WBXAPPAPI_SERVICE} from '../constants';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\nimport MeetingInfoUtil from './utilv2';\n\nconst PASSWORD_ERROR_DEFAULT_MESSAGE =\n 'Password required. Call fetchMeetingInfo() with password argument';\nconst CAPTCHA_ERROR_DEFAULT_MESSAGE =\n 'Captcha required. Call fetchMeetingInfo() with captchaInfo argument';\nconst ADHOC_MEETING_DEFAULT_ERROR =\n 'Failed starting the adhoc meeting, Please contact support team ';\nconst CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES = [423005, 423006];\n\n/**\n * Error to indicate that wbxappapi requires a password\n */\nexport class MeetingInfoV2PasswordError extends Error {\n meetingInfo: any;\n sdkMessage: any;\n wbxAppApiCode: any;\n body: any;\n\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {Object} [meetingInfo]\n * @param {String} [message]\n */\n constructor(\n wbxAppApiErrorCode?: number,\n meetingInfo?: object,\n message: string = PASSWORD_ERROR_DEFAULT_MESSAGE\n ) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2PasswordError';\n this.sdkMessage = message;\n this.stack = new Error().stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n this.meetingInfo = meetingInfo;\n }\n}\n\n/**\n * Error generating a adhoc space meeting\n */\nexport class MeetingInfoV2AdhocMeetingError extends Error {\n sdkMessage: any;\n wbxAppApiCode: any;\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {String} [message]\n */\n constructor(wbxAppApiErrorCode?: number, message: string = ADHOC_MEETING_DEFAULT_ERROR) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2AdhocMeetingError';\n this.sdkMessage = message;\n this.stack = new Error().stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n }\n}\n\n/**\n * Error to indicate that preferred webex site not present to start adhoc meeting\n */\nexport class MeetingInfoV2CaptchaError extends Error {\n captchaInfo: any;\n isPasswordRequired: any;\n sdkMessage: any;\n wbxAppApiCode: any;\n body: any;\n /**\n *\n * @constructor\n * @param {Number} [wbxAppApiErrorCode]\n * @param {Object} [captchaInfo]\n * @param {String} [message]\n */\n constructor(\n wbxAppApiErrorCode?: number,\n captchaInfo?: object,\n message: string = CAPTCHA_ERROR_DEFAULT_MESSAGE\n ) {\n super(`${message}, code=${wbxAppApiErrorCode}`);\n this.name = 'MeetingInfoV2PasswordError';\n this.sdkMessage = message;\n this.stack = new Error().stack;\n this.wbxAppApiCode = wbxAppApiErrorCode;\n this.isPasswordRequired = CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES.includes(wbxAppApiErrorCode);\n this.captchaInfo = captchaInfo;\n }\n}\n\n/**\n * @class MeetingInfo\n */\nexport default class MeetingInfoV2 {\n webex: any;\n\n /**\n *\n * @param {WebexSDK} webex\n */\n constructor(webex) {\n this.webex = webex;\n }\n\n /**\n * converts hydra id into conversation url and persons Id\n * @param {String} destination one of many different types of destinations to look up info for\n * @param {String} [type] to match up with the destination value\n * @returns {Promise} destination and type\n * @public\n * @memberof MeetingInfo\n */\n fetchInfoOptions(destination: string, type: string = null) {\n return MeetingInfoUtil.getDestinationType({\n destination,\n type,\n webex: this.webex,\n });\n }\n\n /**\n * Creates adhoc space meetings for a space by fetching the conversation infomation\n * @param {String} conversationUrl conversationUrl to start adhoc meeting on\n * @returns {Promise} returns a meeting info object\n * @public\n * @memberof MeetingInfo\n */\n async createAdhocSpaceMeeting(conversationUrl: string) {\n if (!this.webex.meetings.preferredWebexSite) {\n throw Error('No preferred webex site found');\n }\n const getInvitees = (particpants = []) => {\n const invitees = [];\n\n if (particpants) {\n particpants.forEach((participant) => {\n invitees.push({\n email: participant.emailAddress,\n ciUserUuid: participant.entryUUID,\n });\n });\n }\n\n return invitees;\n };\n\n return this.webex\n .request(conversationUrl)\n .then(({body: conversation}) => {\n const body = {\n title: conversation.displayName,\n spaceUrl: conversation.url,\n keyUrl: conversation.encryptionKeyUrl,\n kroUrl: conversation.kmsResourceObjectUrl,\n invitees: getInvitees(conversation.participants?.items),\n };\n\n const uri = this.webex.meetings.preferredWebexSite\n ? `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant`\n : '';\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);\n\n return this.webex.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n });\n })\n .catch((err) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE, {\n reason: err.message,\n stack: err.stack,\n });\n throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);\n });\n }\n\n /**\n * Fetches meeting info from the server\n * @param {String} destination one of many different types of destinations to look up info for\n * @param {String} [type] to match up with the destination value\n * @param {String} password\n * @param {Object} captchaInfo\n * @param {String} captchaInfo.code\n * @param {String} captchaInfo.id\n * @returns {Promise} returns a meeting info object\n * @public\n * @memberof MeetingInfo\n */\n async fetchMeetingInfo(\n destination: string,\n type: string = null,\n password: string = null,\n captchaInfo: {\n code: string;\n id: string;\n } = null\n ) {\n const destinationType = await MeetingInfoUtil.getDestinationType({\n destination,\n type,\n webex: this.webex,\n });\n\n if (\n destinationType.type === _CONVERSATION_URL_ &&\n this.webex.config.meetings.experimental.enableAdhocMeetings &&\n this.webex.meetings.preferredWebexSite\n ) {\n return this.createAdhocSpaceMeeting(destinationType.destination);\n }\n\n const body = await MeetingInfoUtil.getRequestBody({...destinationType, password, captchaInfo});\n\n const options: any = {\n method: HTTP_VERBS.POST,\n body,\n };\n\n const directURI = await MeetingInfoUtil.getDirectMeetingInfoURI(destinationType);\n\n if (directURI) {\n options.uri = directURI;\n } else {\n options.service = WBXAPPAPI_SERVICE;\n options.resource = 'meetingInfo';\n }\n\n return this.webex\n .request(options)\n .then((response) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS);\n\n return response;\n })\n .catch((err) => {\n if (err?.statusCode === 403) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR, {\n reason: err.message,\n stack: err.stack,\n });\n\n throw new MeetingInfoV2PasswordError(err.body?.code, err.body?.data?.meetingInfo);\n }\n if (err?.statusCode === 423) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR, {\n reason: err.message,\n stack: err.stack,\n });\n\n throw new MeetingInfoV2CaptchaError(err.body?.code, {\n captchaId: err.body.captchaID,\n verificationImageURL: err.body.verificationImageURL,\n verificationAudioURL: err.body.verificationAudioURL,\n refreshURL: err.body.refreshURL,\n });\n }\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {\n reason: err.message,\n stack: err.stack,\n });\n throw err;\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -133,7 +133,7 @@ MeetingInfoUtil.getSipUriFromHydraPersonId = function (destination, webex) {
|
|
|
133
133
|
};
|
|
134
134
|
MeetingInfoUtil.generateOptions = /*#__PURE__*/function () {
|
|
135
135
|
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(from) {
|
|
136
|
-
var destination, type, webex, options, hydraId,
|
|
136
|
+
var destination, type, webex, options, hydraId, serviceUrl;
|
|
137
137
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
138
138
|
while (1) switch (_context.prev = _context.next) {
|
|
139
139
|
case 0:
|
|
@@ -210,11 +210,10 @@ MeetingInfoUtil.generateOptions = /*#__PURE__*/function () {
|
|
|
210
210
|
_context.next = 36;
|
|
211
211
|
return webex.internal.services.waitForCatalog('postauth');
|
|
212
212
|
case 36:
|
|
213
|
-
|
|
214
|
-
cluster: hydraId.cluster
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
options.destination = conversationUrl;
|
|
213
|
+
serviceUrl = webex.internal.services.getServiceUrlFromClusterId({
|
|
214
|
+
cluster: hydraId.cluster
|
|
215
|
+
}, webex);
|
|
216
|
+
options.destination = hydraId.destination ? "".concat(serviceUrl, "/conversations/").concat(hydraId.destination) : serviceUrl;
|
|
218
217
|
_context.next = 44;
|
|
219
218
|
break;
|
|
220
219
|
case 40:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_url","_interopRequireDefault","require","_btoa","_common","_parameter","_loggerProxy","_constants","MeetingInfoUtil","extractDestination","destination","type","dest","_LOCUS_ID_","url","ParameterError","getParsedUrl","link","parsedUrl","parse","protocol","concat","HTTPS_PROTOCOL","error","LoggerProxy","logger","warn","isMeetingLink","value","hostNameBool","hostname","includes","WEBEX_DOT_COM","pathNameBool","pathname","MEET","MEET_M","JOIN","isConversationUrl","webex","clusterId","internal","services","getClusterId","endsWith","CONVERSATION_SERVICE","convertLinkToSip","user","userIndex","lastIndexOf","substring","company","companyIndex","replace","WWW_DOT","isSipUri","sipString","sipUri","DIALER_REGEX","SIP_ADDRESS","exec","isPhoneNumber","phoneNumber","isValidNumber","PHONE_NUMBER","test","getHydraId","_deconstructHydraId","deconstructHydraId","id","cluster","UUID_REG","_ROOM_","room","_PEOPLE_","people","getSipUriFromHydraPersonId","get","then","res","emails","length","catch","err","generateOptions","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","from","options","hydraId","conversationUrl","wrap","_callee$","_context","prev","next","abrupt","_MEETING_LINK_","_SIP_URI_","_CONVERSATION_URL_","wasHydraPerson","_promise","resolve","waitForCatalog","conversation","getUrlFromClusterId","t0","stop","_x","apply","arguments","getResourceUrl","resource","LOCI","MEETINGINFO","method","HTTP_VERBS","GET","uri","_PERSONAL_ROOM_","_MEETING_ID_","encodeURIComponent","TYPE","USE_URI_LOOKUP_FALSE","PUT","btoa","getRequestParams","resourceOptions","api","requestParams","ALTERNATE_REDIRECT_TRUE","body","lookupType","_default","exports"],"sources":["util.ts"],"sourcesContent":["import url from 'url';\n\nimport btoa from 'btoa';\n// @ts-ignore\nimport {deconstructHydraId} from '@webex/common';\n\nimport ParameterError from '../common/errors/parameter';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n _SIP_URI_,\n _PERSONAL_ROOM_,\n _MEETING_ID_,\n _CONVERSATION_URL_,\n _LOCUS_ID_,\n _MEETING_LINK_,\n _PEOPLE_,\n _ROOM_,\n HTTP_VERBS,\n USE_URI_LOOKUP_FALSE,\n TYPE,\n LOCI,\n MEETINGINFO,\n ALTERNATE_REDIRECT_TRUE,\n DIALER_REGEX,\n WEBEX_DOT_COM,\n CONVERSATION_SERVICE,\n WWW_DOT,\n JOIN,\n MEET,\n MEET_M,\n HTTPS_PROTOCOL,\n UUID_REG,\n} from '../constants';\n\nconst MeetingInfoUtil: any = {};\n\nMeetingInfoUtil.extractDestination = (destination, type) => {\n let dest = destination;\n\n if (type === _LOCUS_ID_) {\n if (!(destination && destination.url)) {\n throw new ParameterError('You cannot create a meeting by locus without a locus.url defined');\n }\n dest = destination.url;\n }\n\n return dest;\n};\n\nMeetingInfoUtil.getParsedUrl = (link) => {\n try {\n let parsedUrl = url.parse(link);\n\n if (!parsedUrl) {\n return false;\n }\n // hack for links such as <company>.webex.com/meet/<user> without a protocol\n if (!parsedUrl.protocol) {\n parsedUrl = url.parse(`${HTTPS_PROTOCOL}${link}`);\n }\n\n return parsedUrl;\n } catch (error) {\n LoggerProxy.logger.warn(\n `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`\n );\n\n return null;\n }\n};\n\n/**\n * Helper function to check if a string matches a known meeting link pattern\n * @param {String} value string to parse and see if it matches a meeting link\n * @returns {Boolean}\n */\nMeetingInfoUtil.isMeetingLink = (value: string) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);\n const pathNameBool =\n parsedUrl.pathname &&\n (parsedUrl.pathname.includes(`/${MEET}`) ||\n parsedUrl.pathname.includes(`/${MEET_M}`) ||\n parsedUrl.pathname.includes(`/${JOIN}`));\n\n return hostNameBool && pathNameBool;\n};\n\nMeetingInfoUtil.isConversationUrl = (value, webex) => {\n const clusterId = webex.internal.services.getClusterId(value);\n\n if (clusterId) {\n return clusterId.endsWith(CONVERSATION_SERVICE);\n }\n\n return false;\n};\n\nMeetingInfoUtil.convertLinkToSip = (value) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n\n if (!parsedUrl) {\n return null;\n }\n let user;\n\n if (parsedUrl.pathname) {\n const userIndex = parsedUrl.pathname.lastIndexOf('/');\n\n user = parsedUrl.pathname.substring(userIndex + 1);\n }\n if (!user) {\n return null;\n }\n let company;\n\n if (parsedUrl.hostname) {\n const companyIndex = parsedUrl.hostname.lastIndexOf(`.${WEBEX_DOT_COM}`);\n\n company = parsedUrl.hostname.substring(0, companyIndex).replace(WWW_DOT, '');\n }\n if (!company) {\n return null;\n }\n\n return `${user}@${company}.${WEBEX_DOT_COM}`;\n};\n\nMeetingInfoUtil.isSipUri = (sipString) => {\n // TODO: lets remove regex from this equation and user URI matchers and such\n // have not found a great sip uri parser library as of now\n const sipUri = DIALER_REGEX.SIP_ADDRESS.exec(sipString);\n\n return sipUri;\n};\n\nMeetingInfoUtil.isPhoneNumber = (phoneNumber) => {\n const isValidNumber = DIALER_REGEX.PHONE_NUMBER.test(phoneNumber);\n\n return isValidNumber;\n};\n\nMeetingInfoUtil.getHydraId = (destination) => {\n const {type, id, cluster} = deconstructHydraId(destination);\n\n if (id && UUID_REG.test(id)) {\n if (type === _ROOM_) {\n return {room: true, destination: id, cluster};\n }\n if (type === _PEOPLE_) {\n return {people: true, destination: id, cluster};\n }\n\n return {};\n }\n\n return {};\n};\n\nMeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>\n webex.people\n .get(destination)\n .then((res) => {\n if (res.emails && res.emails.length) {\n return res.emails[0];\n }\n throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `\n );\n throw err;\n });\n\nMeetingInfoUtil.generateOptions = async (from) => {\n const {destination, type, webex} = from;\n\n if (type) {\n return {\n destination,\n type,\n };\n }\n const options: any = {};\n const hydraId = MeetingInfoUtil.getHydraId(destination);\n\n if (MeetingInfoUtil.isMeetingLink(destination)) {\n LoggerProxy.logger.warn(\n 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'\n );\n\n options.type = _MEETING_LINK_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isSipUri(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isPhoneNumber(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {\n options.type = _CONVERSATION_URL_;\n options.destination = destination;\n } else if (hydraId.people) {\n options.type = _SIP_URI_;\n\n return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {\n options.destination = res;\n\n // Since hydra person ids require a unique case in which they are\n // entirely converted to a SIP URI, we need to set a flag for detecting\n // this type of destination.\n options.wasHydraPerson = true;\n\n return Promise.resolve(options);\n });\n } else if (hydraId.room) {\n options.type = _CONVERSATION_URL_;\n try {\n await webex.internal.services.waitForCatalog('postauth');\n\n const conversationUrl = webex.internal.conversation.getUrlFromClusterId({\n cluster: hydraId.cluster,\n id: hydraId.destination,\n });\n\n options.destination = conversationUrl;\n } catch (e) {\n LoggerProxy.logger.error(`Meeting-info:util#generateOptions --> ${e}`);\n throw e;\n }\n } else {\n throw new ParameterError(\n 'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.'\n );\n }\n\n return Promise.resolve(options);\n};\n\n/**\n * Helper function to build up a correct locus url depending on the value passed\n * @param {String} type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} value ?? value.value\n * @returns {Object} returns an object with {resource, method}\n */\nMeetingInfoUtil.getResourceUrl = (type: string, value: any) => {\n let resource = `/${LOCI}/${MEETINGINFO}`;\n let method = HTTP_VERBS.GET;\n let uri = null;\n\n switch (type) {\n case _SIP_URI_:\n case _PERSONAL_ROOM_:\n case _MEETING_ID_:\n resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(\n value\n )}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;\n break;\n case _CONVERSATION_URL_:\n method = HTTP_VERBS.PUT;\n break;\n case _LOCUS_ID_:\n uri = `${value}/${MEETINGINFO}`;\n method = HTTP_VERBS.PUT;\n break;\n case _MEETING_LINK_:\n resource = `$/${LOCI}/${MEETINGINFO}/${btoa(\n value\n )}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;\n break;\n default:\n }\n\n return {\n uri,\n resource,\n method,\n };\n};\n\nMeetingInfoUtil.getRequestParams = (resourceOptions, type, value, api) => {\n let requestParams: any = {\n method: resourceOptions.method,\n api,\n resource: resourceOptions.resource,\n };\n\n if (resourceOptions.method === HTTP_VERBS.GET) {\n // for handling URL redirections\n requestParams.resource = requestParams.resource.concat(`&${ALTERNATE_REDIRECT_TRUE}`);\n } else if (type !== _LOCUS_ID_) {\n // locus id check is a PUT not sure why\n requestParams.resource = requestParams.resource.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n requestParams.body = {\n value,\n lookupType: type,\n };\n } else if (type === _LOCUS_ID_) {\n requestParams = {\n method: resourceOptions.method,\n uri: resourceOptions.uri,\n };\n }\n\n return requestParams;\n};\n\nexport default MeetingInfoUtil;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_url","_interopRequireDefault","require","_btoa","_common","_parameter","_loggerProxy","_constants","MeetingInfoUtil","extractDestination","destination","type","dest","_LOCUS_ID_","url","ParameterError","getParsedUrl","link","parsedUrl","parse","protocol","concat","HTTPS_PROTOCOL","error","LoggerProxy","logger","warn","isMeetingLink","value","hostNameBool","hostname","includes","WEBEX_DOT_COM","pathNameBool","pathname","MEET","MEET_M","JOIN","isConversationUrl","webex","clusterId","internal","services","getClusterId","endsWith","CONVERSATION_SERVICE","convertLinkToSip","user","userIndex","lastIndexOf","substring","company","companyIndex","replace","WWW_DOT","isSipUri","sipString","sipUri","DIALER_REGEX","SIP_ADDRESS","exec","isPhoneNumber","phoneNumber","isValidNumber","PHONE_NUMBER","test","getHydraId","_deconstructHydraId","deconstructHydraId","id","cluster","UUID_REG","_ROOM_","room","_PEOPLE_","people","getSipUriFromHydraPersonId","get","then","res","emails","length","catch","err","generateOptions","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","from","options","hydraId","serviceUrl","wrap","_callee$","_context","prev","next","abrupt","_MEETING_LINK_","_SIP_URI_","_CONVERSATION_URL_","wasHydraPerson","_promise","resolve","waitForCatalog","getServiceUrlFromClusterId","t0","stop","_x","apply","arguments","getResourceUrl","resource","LOCI","MEETINGINFO","method","HTTP_VERBS","GET","uri","_PERSONAL_ROOM_","_MEETING_ID_","encodeURIComponent","TYPE","USE_URI_LOOKUP_FALSE","PUT","btoa","getRequestParams","resourceOptions","api","requestParams","ALTERNATE_REDIRECT_TRUE","body","lookupType","_default","exports"],"sources":["util.ts"],"sourcesContent":["import url from 'url';\n\nimport btoa from 'btoa';\n// @ts-ignore\nimport {deconstructHydraId} from '@webex/common';\n\nimport ParameterError from '../common/errors/parameter';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {\n _SIP_URI_,\n _PERSONAL_ROOM_,\n _MEETING_ID_,\n _CONVERSATION_URL_,\n _LOCUS_ID_,\n _MEETING_LINK_,\n _PEOPLE_,\n _ROOM_,\n HTTP_VERBS,\n USE_URI_LOOKUP_FALSE,\n TYPE,\n LOCI,\n MEETINGINFO,\n ALTERNATE_REDIRECT_TRUE,\n DIALER_REGEX,\n WEBEX_DOT_COM,\n CONVERSATION_SERVICE,\n WWW_DOT,\n JOIN,\n MEET,\n MEET_M,\n HTTPS_PROTOCOL,\n UUID_REG,\n} from '../constants';\n\nconst MeetingInfoUtil: any = {};\n\nMeetingInfoUtil.extractDestination = (destination, type) => {\n let dest = destination;\n\n if (type === _LOCUS_ID_) {\n if (!(destination && destination.url)) {\n throw new ParameterError('You cannot create a meeting by locus without a locus.url defined');\n }\n dest = destination.url;\n }\n\n return dest;\n};\n\nMeetingInfoUtil.getParsedUrl = (link) => {\n try {\n let parsedUrl = url.parse(link);\n\n if (!parsedUrl) {\n return false;\n }\n // hack for links such as <company>.webex.com/meet/<user> without a protocol\n if (!parsedUrl.protocol) {\n parsedUrl = url.parse(`${HTTPS_PROTOCOL}${link}`);\n }\n\n return parsedUrl;\n } catch (error) {\n LoggerProxy.logger.warn(\n `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`\n );\n\n return null;\n }\n};\n\n/**\n * Helper function to check if a string matches a known meeting link pattern\n * @param {String} value string to parse and see if it matches a meeting link\n * @returns {Boolean}\n */\nMeetingInfoUtil.isMeetingLink = (value: string) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);\n const pathNameBool =\n parsedUrl.pathname &&\n (parsedUrl.pathname.includes(`/${MEET}`) ||\n parsedUrl.pathname.includes(`/${MEET_M}`) ||\n parsedUrl.pathname.includes(`/${JOIN}`));\n\n return hostNameBool && pathNameBool;\n};\n\nMeetingInfoUtil.isConversationUrl = (value, webex) => {\n const clusterId = webex.internal.services.getClusterId(value);\n\n if (clusterId) {\n return clusterId.endsWith(CONVERSATION_SERVICE);\n }\n\n return false;\n};\n\nMeetingInfoUtil.convertLinkToSip = (value) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n\n if (!parsedUrl) {\n return null;\n }\n let user;\n\n if (parsedUrl.pathname) {\n const userIndex = parsedUrl.pathname.lastIndexOf('/');\n\n user = parsedUrl.pathname.substring(userIndex + 1);\n }\n if (!user) {\n return null;\n }\n let company;\n\n if (parsedUrl.hostname) {\n const companyIndex = parsedUrl.hostname.lastIndexOf(`.${WEBEX_DOT_COM}`);\n\n company = parsedUrl.hostname.substring(0, companyIndex).replace(WWW_DOT, '');\n }\n if (!company) {\n return null;\n }\n\n return `${user}@${company}.${WEBEX_DOT_COM}`;\n};\n\nMeetingInfoUtil.isSipUri = (sipString) => {\n // TODO: lets remove regex from this equation and user URI matchers and such\n // have not found a great sip uri parser library as of now\n const sipUri = DIALER_REGEX.SIP_ADDRESS.exec(sipString);\n\n return sipUri;\n};\n\nMeetingInfoUtil.isPhoneNumber = (phoneNumber) => {\n const isValidNumber = DIALER_REGEX.PHONE_NUMBER.test(phoneNumber);\n\n return isValidNumber;\n};\n\nMeetingInfoUtil.getHydraId = (destination) => {\n const {type, id, cluster} = deconstructHydraId(destination);\n\n if (id && UUID_REG.test(id)) {\n if (type === _ROOM_) {\n return {room: true, destination: id, cluster};\n }\n if (type === _PEOPLE_) {\n return {people: true, destination: id, cluster};\n }\n\n return {};\n }\n\n return {};\n};\n\nMeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>\n webex.people\n .get(destination)\n .then((res) => {\n if (res.emails && res.emails.length) {\n return res.emails[0];\n }\n throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `\n );\n throw err;\n });\n\nMeetingInfoUtil.generateOptions = async (from) => {\n const {destination, type, webex} = from;\n\n if (type) {\n return {\n destination,\n type,\n };\n }\n const options: any = {};\n const hydraId = MeetingInfoUtil.getHydraId(destination);\n\n if (MeetingInfoUtil.isMeetingLink(destination)) {\n LoggerProxy.logger.warn(\n 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'\n );\n\n options.type = _MEETING_LINK_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isSipUri(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isPhoneNumber(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {\n options.type = _CONVERSATION_URL_;\n options.destination = destination;\n } else if (hydraId.people) {\n options.type = _SIP_URI_;\n\n return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {\n options.destination = res;\n\n // Since hydra person ids require a unique case in which they are\n // entirely converted to a SIP URI, we need to set a flag for detecting\n // this type of destination.\n options.wasHydraPerson = true;\n\n return Promise.resolve(options);\n });\n } else if (hydraId.room) {\n options.type = _CONVERSATION_URL_;\n try {\n await webex.internal.services.waitForCatalog('postauth');\n\n const serviceUrl = webex.internal.services.getServiceUrlFromClusterId(\n {\n cluster: hydraId.cluster,\n },\n webex\n );\n\n options.destination = hydraId.destination\n ? `${serviceUrl}/conversations/${hydraId.destination}`\n : serviceUrl;\n } catch (e) {\n LoggerProxy.logger.error(`Meeting-info:util#generateOptions --> ${e}`);\n throw e;\n }\n } else {\n throw new ParameterError(\n 'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.'\n );\n }\n\n return Promise.resolve(options);\n};\n\n/**\n * Helper function to build up a correct locus url depending on the value passed\n * @param {String} type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} value ?? value.value\n * @returns {Object} returns an object with {resource, method}\n */\nMeetingInfoUtil.getResourceUrl = (type: string, value: any) => {\n let resource = `/${LOCI}/${MEETINGINFO}`;\n let method = HTTP_VERBS.GET;\n let uri = null;\n\n switch (type) {\n case _SIP_URI_:\n case _PERSONAL_ROOM_:\n case _MEETING_ID_:\n resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(\n value\n )}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;\n break;\n case _CONVERSATION_URL_:\n method = HTTP_VERBS.PUT;\n break;\n case _LOCUS_ID_:\n uri = `${value}/${MEETINGINFO}`;\n method = HTTP_VERBS.PUT;\n break;\n case _MEETING_LINK_:\n resource = `$/${LOCI}/${MEETINGINFO}/${btoa(\n value\n )}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;\n break;\n default:\n }\n\n return {\n uri,\n resource,\n method,\n };\n};\n\nMeetingInfoUtil.getRequestParams = (resourceOptions, type, value, api) => {\n let requestParams: any = {\n method: resourceOptions.method,\n api,\n resource: resourceOptions.resource,\n };\n\n if (resourceOptions.method === HTTP_VERBS.GET) {\n // for handling URL redirections\n requestParams.resource = requestParams.resource.concat(`&${ALTERNATE_REDIRECT_TRUE}`);\n } else if (type !== _LOCUS_ID_) {\n // locus id check is a PUT not sure why\n requestParams.resource = requestParams.resource.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n requestParams.body = {\n value,\n lookupType: type,\n };\n } else if (type === _LOCUS_ID_) {\n requestParams = {\n method: resourceOptions.method,\n uri: resourceOptions.uri,\n };\n }\n\n return requestParams;\n};\n\nexport default MeetingInfoUtil;\n"],"mappings":"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"}
|
|
@@ -99,7 +99,7 @@ MeetingInfoUtil.getSipUriFromHydraPersonId = function (destination, webex) {
|
|
|
99
99
|
};
|
|
100
100
|
MeetingInfoUtil.getDestinationType = /*#__PURE__*/function () {
|
|
101
101
|
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(from) {
|
|
102
|
-
var type, webex, destination, _options, res, _res$items$, orgId, userId, options, hydraId,
|
|
102
|
+
var type, webex, destination, _options, res, _res$items$, orgId, userId, options, hydraId, serviceUrl;
|
|
103
103
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
104
104
|
while (1) switch (_context.prev = _context.next) {
|
|
105
105
|
case 0:
|
|
@@ -148,7 +148,11 @@ MeetingInfoUtil.getDestinationType = /*#__PURE__*/function () {
|
|
|
148
148
|
});
|
|
149
149
|
case 17:
|
|
150
150
|
options = {};
|
|
151
|
-
|
|
151
|
+
if (webex && webex.config && webex.config.meetings && webex.config.meetings.disableHydraId) {
|
|
152
|
+
hydraId = null;
|
|
153
|
+
} else {
|
|
154
|
+
hydraId = MeetingInfoUtil.getHydraId(destination);
|
|
155
|
+
}
|
|
152
156
|
if (!MeetingInfoUtil.isMeetingLink(destination)) {
|
|
153
157
|
_context.next = 25;
|
|
154
158
|
break;
|
|
@@ -186,12 +190,12 @@ MeetingInfoUtil.getDestinationType = /*#__PURE__*/function () {
|
|
|
186
190
|
_context.next = 62;
|
|
187
191
|
break;
|
|
188
192
|
case 40:
|
|
189
|
-
if (!hydraId.people) {
|
|
193
|
+
if (!(hydraId && hydraId.people)) {
|
|
190
194
|
_context.next = 45;
|
|
191
195
|
break;
|
|
192
196
|
}
|
|
193
197
|
options.type = _constants._SIP_URI_;
|
|
194
|
-
return _context.abrupt("return", MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then(function (res) {
|
|
198
|
+
return _context.abrupt("return", MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId && hydraId.destination, webex).then(function (res) {
|
|
195
199
|
options.destination = res;
|
|
196
200
|
|
|
197
201
|
// Since hydra person ids require a unique case in which they are
|
|
@@ -201,7 +205,7 @@ MeetingInfoUtil.getDestinationType = /*#__PURE__*/function () {
|
|
|
201
205
|
return _promise.default.resolve(options);
|
|
202
206
|
}));
|
|
203
207
|
case 45:
|
|
204
|
-
if (!hydraId.room) {
|
|
208
|
+
if (!(hydraId && hydraId.room)) {
|
|
205
209
|
_context.next = 60;
|
|
206
210
|
break;
|
|
207
211
|
}
|
|
@@ -210,11 +214,10 @@ MeetingInfoUtil.getDestinationType = /*#__PURE__*/function () {
|
|
|
210
214
|
_context.next = 50;
|
|
211
215
|
return webex.internal.services.waitForCatalog('postauth');
|
|
212
216
|
case 50:
|
|
213
|
-
|
|
214
|
-
cluster: hydraId.cluster
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
options.destination = conversationUrl;
|
|
217
|
+
serviceUrl = webex.internal.services.getServiceUrlFromClusterId({
|
|
218
|
+
cluster: hydraId.cluster
|
|
219
|
+
}, webex);
|
|
220
|
+
options.destination = hydraId.destination ? "".concat(serviceUrl, "/conversations/").concat(hydraId.destination) : serviceUrl;
|
|
218
221
|
_context.next = 58;
|
|
219
222
|
break;
|
|
220
223
|
case 54:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_url","_interopRequireDefault","require","_common","_constants","_parameter","_loggerProxy","MeetingInfoUtil","getParsedUrl","link","parsedUrl","url","parse","protocol","concat","HTTPS_PROTOCOL","error","LoggerProxy","logger","warn","isMeetingLink","value","hostNameBool","hostname","includes","WEBEX_DOT_COM","pathNameBool","pathname","MEET","MEET_M","JOIN","isConversationUrl","webex","clusterId","internal","services","getClusterId","endsWith","CONVERSATION_SERVICE","isSipUri","sipString","sipUri","DIALER_REGEX","SIP_ADDRESS","exec","isPhoneNumber","phoneNumber","isValidNumber","PHONE_NUMBER","test","getHydraId","destination","_deconstructHydraId","deconstructHydraId","type","id","cluster","UUID_REG","_ROOM_","room","_PEOPLE_","people","getSipUriFromHydraPersonId","get","then","res","emails","length","ParameterError","catch","err","getDestinationType","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","from","_options","_res$items$","orgId","userId","options","hydraId","conversationUrl","wrap","_callee$","_context","prev","next","_PERSONAL_ROOM_","device","VALID_EMAIL_ADDRESS","email","list","sent","items","abrupt","_MEETING_LINK_","_SIP_URI_","_CONVERSATION_URL_","wasHydraPerson","_promise","resolve","waitForCatalog","conversation","getUrlFromClusterId","t0","stop","_x","apply","arguments","getRequestBody","_destination$info","_destination$info2","password","captchaInfo","body","supportHostKey","supportCountryList","sipUrl","_MEETING_ID_","meetingKey","_LOCUS_ID_","info","webExMeetingId","meetingUrl","_MEETING_UUID_","meetingUUID","captchaID","captchaVerifyCode","code","getWebexSite","uri","_uri$match","exceptedDomains","site","match","getDirectMeetingInfoURI","_destination$info3","preferredWebexSite","webExSite","_default","exports"],"sources":["utilv2.ts"],"sourcesContent":["import url from 'url';\n\n// @ts-ignore\nimport {deconstructHydraId} from '@webex/common';\n\nimport {\n _SIP_URI_,\n _PERSONAL_ROOM_,\n _MEETING_ID_,\n _CONVERSATION_URL_,\n _LOCUS_ID_,\n _MEETING_LINK_,\n _PEOPLE_,\n _ROOM_,\n _MEETING_UUID_,\n DIALER_REGEX,\n WEBEX_DOT_COM,\n CONVERSATION_SERVICE,\n JOIN,\n MEET,\n MEET_M,\n HTTPS_PROTOCOL,\n UUID_REG,\n VALID_EMAIL_ADDRESS,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nconst MeetingInfoUtil: any = {};\n\nMeetingInfoUtil.getParsedUrl = (link) => {\n try {\n let parsedUrl = url.parse(link);\n\n if (!parsedUrl) {\n return false;\n }\n // hack for links such as <company>.webex.com/meet/<user> without a protocol\n if (!parsedUrl.protocol) {\n parsedUrl = url.parse(`${HTTPS_PROTOCOL}${link}`);\n }\n\n return parsedUrl;\n } catch (error) {\n LoggerProxy.logger.warn(\n `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`\n );\n\n return null;\n }\n};\n\n/**\n * Helper function to check if a string matches a known meeting link pattern\n * @param {String} value string to parse and see if it matches a meeting link\n * @returns {Boolean}\n */\nMeetingInfoUtil.isMeetingLink = (value: string) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);\n const pathNameBool =\n parsedUrl.pathname &&\n (parsedUrl.pathname.includes(`/${MEET}`) ||\n parsedUrl.pathname.includes(`/${MEET_M}`) ||\n parsedUrl.pathname.includes(`/${JOIN}`));\n\n return hostNameBool && pathNameBool;\n};\n\nMeetingInfoUtil.isConversationUrl = (value, webex) => {\n const clusterId = webex.internal.services.getClusterId(value);\n\n if (clusterId) {\n return clusterId.endsWith(CONVERSATION_SERVICE);\n }\n\n return false;\n};\n\nMeetingInfoUtil.isSipUri = (sipString) => {\n // TODO: lets remove regex from this equation and user URI matchers and such\n // have not found a great sip uri parser library as of now\n const sipUri = DIALER_REGEX.SIP_ADDRESS.exec(sipString);\n\n return sipUri;\n};\n\nMeetingInfoUtil.isPhoneNumber = (phoneNumber) => {\n const isValidNumber = DIALER_REGEX.PHONE_NUMBER.test(phoneNumber);\n\n return isValidNumber;\n};\n\nMeetingInfoUtil.getHydraId = (destination) => {\n const {type, id, cluster} = deconstructHydraId(destination);\n\n if (id && UUID_REG.test(id)) {\n if (type === _ROOM_) {\n return {room: true, destination: id, cluster};\n }\n if (type === _PEOPLE_) {\n return {people: true, destination: id, cluster};\n }\n\n return {};\n }\n\n return {};\n};\n\nMeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>\n webex.people\n .get(destination)\n .then((res) => {\n if (res.emails && res.emails.length) {\n return res.emails[0];\n }\n throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `\n );\n throw err;\n });\n\nMeetingInfoUtil.getDestinationType = async (from) => {\n const {type, webex} = from;\n let {destination} = from;\n\n if (type === _PERSONAL_ROOM_) {\n // this case checks if your type is personal room\n if (!destination) {\n // if we are not getting anything in desination we fetch org and user ids from webex instance\n destination = {\n userId: webex.internal.device.userId,\n orgId: webex.internal.device.orgId,\n };\n } else {\n const options = VALID_EMAIL_ADDRESS.test(destination)\n ? {email: destination}\n : {id: destination}; // we are assuming userId as default\n const res = await webex.people.list(options);\n\n let {orgId, id: userId} = res.items[0];\n\n userId = deconstructHydraId(userId).id;\n orgId = deconstructHydraId(orgId).id;\n destination = {userId, orgId};\n }\n }\n if (type) {\n return {\n destination,\n type,\n };\n }\n const options: any = {};\n const hydraId = MeetingInfoUtil.getHydraId(destination);\n\n if (MeetingInfoUtil.isMeetingLink(destination)) {\n LoggerProxy.logger.warn(\n 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'\n );\n\n options.type = _MEETING_LINK_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isSipUri(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isPhoneNumber(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {\n options.type = _CONVERSATION_URL_;\n options.destination = destination;\n } else if (hydraId.people) {\n options.type = _SIP_URI_;\n\n return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {\n options.destination = res;\n\n // Since hydra person ids require a unique case in which they are\n // entirely converted to a SIP URI, we need to set a flag for detecting\n // this type of destination.\n options.wasHydraPerson = true;\n\n return Promise.resolve(options);\n });\n } else if (hydraId.room) {\n options.type = _CONVERSATION_URL_;\n try {\n await webex.internal.services.waitForCatalog('postauth');\n\n const conversationUrl = webex.internal.conversation.getUrlFromClusterId({\n cluster: hydraId.cluster,\n id: hydraId.destination,\n });\n\n options.destination = conversationUrl;\n } catch (e) {\n LoggerProxy.logger.error(`Meeting-info:util#getDestinationType --> ${e}`);\n throw e;\n }\n } else {\n LoggerProxy.logger.warn(\n \"Meeting-info:util#getDestinationType --> ('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.\"\n );\n throw new ParameterError(\n 'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.'\n );\n }\n\n return Promise.resolve(options);\n};\n\n/**\n * Helper function to build up a correct locus url depending on the value passed\n * @param {Object} options type and value to fetch meeting info\n * @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} options.destination ?? value.value\n * @returns {Object} returns an object with {resource, method}\n */\nMeetingInfoUtil.getRequestBody = (options: {type: string; destination: object} | any) => {\n const {type, destination, password, captchaInfo} = options;\n const body: any = {\n supportHostKey: true,\n supportCountryList: true,\n };\n\n switch (type) {\n case _SIP_URI_:\n body.sipUrl = destination;\n break;\n case _PERSONAL_ROOM_:\n body.userId = destination.userId;\n body.orgId = destination.orgId;\n break;\n case _MEETING_ID_:\n body.meetingKey = destination;\n break;\n case _CONVERSATION_URL_:\n body.conversationUrl = destination;\n break;\n case _LOCUS_ID_:\n // use meetingID for the completer meeting info for the already started meeting\n if (destination.info?.webExMeetingId) {\n body.meetingKey = destination.info.webExMeetingId;\n } else if (destination.info?.sipUri) {\n body.sipUrl = destination.info.sipUri;\n }\n break;\n case _MEETING_LINK_:\n body.meetingUrl = destination;\n break;\n case _MEETING_UUID_: {\n body.meetingUUID = destination;\n break;\n }\n default:\n }\n\n if (password) {\n body.password = password;\n }\n\n if (captchaInfo) {\n body.captchaID = captchaInfo.id;\n body.captchaVerifyCode = captchaInfo.code;\n }\n\n return body;\n};\n\n/**\n * Helper function to parse the webex site/host from a URI string.\n * @param {String} uri string (e.g. '10019857020@convergedats.webex.com')\n * @returns {String} the site/host part of the URI string (e.g. 'convergedats.webex.com')\n */\nMeetingInfoUtil.getWebexSite = (uri: string) => {\n const exceptedDomains = ['meet.webex.com', 'meetup.webex.com', 'ciscospark.com'];\n const site = uri?.match(/.+@([^.]+\\.[^.]+\\.[^.]+)$/)?.[1];\n\n return exceptedDomains.includes(site) ? null : site;\n};\n\n/**\n * Helper function to return the direct URI for fetching meeting info (to avoid a redirect).\n * @param {Object} options type and value to fetch meeting info\n * @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} options.destination ?? value.value\n * @returns {String} returns a URI string or null of there is no direct URI\n */\nMeetingInfoUtil.getDirectMeetingInfoURI = (options: {type: string; destination: any}) => {\n const {type, destination} = options;\n\n let preferredWebexSite = null;\n\n switch (type) {\n case _SIP_URI_:\n preferredWebexSite = MeetingInfoUtil.getWebexSite(destination);\n break;\n case _LOCUS_ID_:\n preferredWebexSite = destination.info?.webExSite;\n break;\n default:\n }\n\n return preferredWebexSite ? `https://${preferredWebexSite}/wbxappapi/v1/meetingInfo` : null;\n};\n\nexport default MeetingInfoUtil;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_url","_interopRequireDefault","require","_common","_constants","_parameter","_loggerProxy","MeetingInfoUtil","getParsedUrl","link","parsedUrl","url","parse","protocol","concat","HTTPS_PROTOCOL","error","LoggerProxy","logger","warn","isMeetingLink","value","hostNameBool","hostname","includes","WEBEX_DOT_COM","pathNameBool","pathname","MEET","MEET_M","JOIN","isConversationUrl","webex","clusterId","internal","services","getClusterId","endsWith","CONVERSATION_SERVICE","isSipUri","sipString","sipUri","DIALER_REGEX","SIP_ADDRESS","exec","isPhoneNumber","phoneNumber","isValidNumber","PHONE_NUMBER","test","getHydraId","destination","_deconstructHydraId","deconstructHydraId","type","id","cluster","UUID_REG","_ROOM_","room","_PEOPLE_","people","getSipUriFromHydraPersonId","get","then","res","emails","length","ParameterError","catch","err","getDestinationType","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","from","_options","_res$items$","orgId","userId","options","hydraId","serviceUrl","wrap","_callee$","_context","prev","next","_PERSONAL_ROOM_","device","VALID_EMAIL_ADDRESS","email","list","sent","items","abrupt","config","meetings","disableHydraId","_MEETING_LINK_","_SIP_URI_","_CONVERSATION_URL_","wasHydraPerson","_promise","resolve","waitForCatalog","getServiceUrlFromClusterId","t0","stop","_x","apply","arguments","getRequestBody","_destination$info","_destination$info2","password","captchaInfo","body","supportHostKey","supportCountryList","sipUrl","_MEETING_ID_","meetingKey","conversationUrl","_LOCUS_ID_","info","webExMeetingId","meetingUrl","_MEETING_UUID_","meetingUUID","captchaID","captchaVerifyCode","code","getWebexSite","uri","_uri$match","exceptedDomains","site","match","getDirectMeetingInfoURI","_destination$info3","preferredWebexSite","webExSite","_default","exports"],"sources":["utilv2.ts"],"sourcesContent":["import url from 'url';\n\n// @ts-ignore\nimport {deconstructHydraId} from '@webex/common';\n\nimport {\n _SIP_URI_,\n _PERSONAL_ROOM_,\n _MEETING_ID_,\n _CONVERSATION_URL_,\n _LOCUS_ID_,\n _MEETING_LINK_,\n _PEOPLE_,\n _ROOM_,\n _MEETING_UUID_,\n DIALER_REGEX,\n WEBEX_DOT_COM,\n CONVERSATION_SERVICE,\n JOIN,\n MEET,\n MEET_M,\n HTTPS_PROTOCOL,\n UUID_REG,\n VALID_EMAIL_ADDRESS,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nconst MeetingInfoUtil: any = {};\n\nMeetingInfoUtil.getParsedUrl = (link) => {\n try {\n let parsedUrl = url.parse(link);\n\n if (!parsedUrl) {\n return false;\n }\n // hack for links such as <company>.webex.com/meet/<user> without a protocol\n if (!parsedUrl.protocol) {\n parsedUrl = url.parse(`${HTTPS_PROTOCOL}${link}`);\n }\n\n return parsedUrl;\n } catch (error) {\n LoggerProxy.logger.warn(\n `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`\n );\n\n return null;\n }\n};\n\n/**\n * Helper function to check if a string matches a known meeting link pattern\n * @param {String} value string to parse and see if it matches a meeting link\n * @returns {Boolean}\n */\nMeetingInfoUtil.isMeetingLink = (value: string) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);\n const pathNameBool =\n parsedUrl.pathname &&\n (parsedUrl.pathname.includes(`/${MEET}`) ||\n parsedUrl.pathname.includes(`/${MEET_M}`) ||\n parsedUrl.pathname.includes(`/${JOIN}`));\n\n return hostNameBool && pathNameBool;\n};\n\nMeetingInfoUtil.isConversationUrl = (value, webex) => {\n const clusterId = webex.internal.services.getClusterId(value);\n\n if (clusterId) {\n return clusterId.endsWith(CONVERSATION_SERVICE);\n }\n\n return false;\n};\n\nMeetingInfoUtil.isSipUri = (sipString) => {\n // TODO: lets remove regex from this equation and user URI matchers and such\n // have not found a great sip uri parser library as of now\n const sipUri = DIALER_REGEX.SIP_ADDRESS.exec(sipString);\n\n return sipUri;\n};\n\nMeetingInfoUtil.isPhoneNumber = (phoneNumber) => {\n const isValidNumber = DIALER_REGEX.PHONE_NUMBER.test(phoneNumber);\n\n return isValidNumber;\n};\n\nMeetingInfoUtil.getHydraId = (destination) => {\n const {type, id, cluster} = deconstructHydraId(destination);\n\n if (id && UUID_REG.test(id)) {\n if (type === _ROOM_) {\n return {room: true, destination: id, cluster};\n }\n if (type === _PEOPLE_) {\n return {people: true, destination: id, cluster};\n }\n\n return {};\n }\n\n return {};\n};\n\nMeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>\n webex.people\n .get(destination)\n .then((res) => {\n if (res.emails && res.emails.length) {\n return res.emails[0];\n }\n throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `\n );\n throw err;\n });\n\nMeetingInfoUtil.getDestinationType = async (from) => {\n const {type, webex} = from;\n let {destination} = from;\n\n if (type === _PERSONAL_ROOM_) {\n // this case checks if your type is personal room\n if (!destination) {\n // if we are not getting anything in desination we fetch org and user ids from webex instance\n destination = {\n userId: webex.internal.device.userId,\n orgId: webex.internal.device.orgId,\n };\n } else {\n const options = VALID_EMAIL_ADDRESS.test(destination)\n ? {email: destination}\n : {id: destination}; // we are assuming userId as default\n const res = await webex.people.list(options);\n\n let {orgId, id: userId} = res.items[0];\n\n userId = deconstructHydraId(userId).id;\n orgId = deconstructHydraId(orgId).id;\n destination = {userId, orgId};\n }\n }\n if (type) {\n return {\n destination,\n type,\n };\n }\n const options: any = {};\n let hydraId;\n\n if (webex && webex.config && webex.config.meetings && webex.config.meetings.disableHydraId) {\n hydraId = null;\n } else {\n hydraId = MeetingInfoUtil.getHydraId(destination);\n }\n\n if (MeetingInfoUtil.isMeetingLink(destination)) {\n LoggerProxy.logger.warn(\n 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'\n );\n\n options.type = _MEETING_LINK_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isSipUri(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isPhoneNumber(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {\n options.type = _CONVERSATION_URL_;\n options.destination = destination;\n } else if (hydraId && hydraId.people) {\n options.type = _SIP_URI_;\n\n return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId && hydraId.destination, webex).then(\n (res) => {\n options.destination = res;\n\n // Since hydra person ids require a unique case in which they are\n // entirely converted to a SIP URI, we need to set a flag for detecting\n // this type of destination.\n options.wasHydraPerson = true;\n\n return Promise.resolve(options);\n }\n );\n } else if (hydraId && hydraId.room) {\n options.type = _CONVERSATION_URL_;\n try {\n await webex.internal.services.waitForCatalog('postauth');\n\n const serviceUrl = webex.internal.services.getServiceUrlFromClusterId(\n {\n cluster: hydraId.cluster,\n },\n webex\n );\n\n options.destination = hydraId.destination\n ? `${serviceUrl}/conversations/${hydraId.destination}`\n : serviceUrl;\n } catch (e) {\n LoggerProxy.logger.error(`Meeting-info:util#getDestinationType --> ${e}`);\n throw e;\n }\n } else {\n LoggerProxy.logger.warn(\n \"Meeting-info:util#getDestinationType --> ('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.\"\n );\n throw new ParameterError(\n 'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.'\n );\n }\n\n return Promise.resolve(options);\n};\n\n/**\n * Helper function to build up a correct locus url depending on the value passed\n * @param {Object} options type and value to fetch meeting info\n * @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} options.destination ?? value.value\n * @returns {Object} returns an object with {resource, method}\n */\nMeetingInfoUtil.getRequestBody = (options: {type: string; destination: object} | any) => {\n const {type, destination, password, captchaInfo} = options;\n const body: any = {\n supportHostKey: true,\n supportCountryList: true,\n };\n\n switch (type) {\n case _SIP_URI_:\n body.sipUrl = destination;\n break;\n case _PERSONAL_ROOM_:\n body.userId = destination.userId;\n body.orgId = destination.orgId;\n break;\n case _MEETING_ID_:\n body.meetingKey = destination;\n break;\n case _CONVERSATION_URL_:\n body.conversationUrl = destination;\n break;\n case _LOCUS_ID_:\n // use meetingID for the completer meeting info for the already started meeting\n if (destination.info?.webExMeetingId) {\n body.meetingKey = destination.info.webExMeetingId;\n } else if (destination.info?.sipUri) {\n body.sipUrl = destination.info.sipUri;\n }\n break;\n case _MEETING_LINK_:\n body.meetingUrl = destination;\n break;\n case _MEETING_UUID_: {\n body.meetingUUID = destination;\n break;\n }\n default:\n }\n\n if (password) {\n body.password = password;\n }\n\n if (captchaInfo) {\n body.captchaID = captchaInfo.id;\n body.captchaVerifyCode = captchaInfo.code;\n }\n\n return body;\n};\n\n/**\n * Helper function to parse the webex site/host from a URI string.\n * @param {String} uri string (e.g. '10019857020@convergedats.webex.com')\n * @returns {String} the site/host part of the URI string (e.g. 'convergedats.webex.com')\n */\nMeetingInfoUtil.getWebexSite = (uri: string) => {\n const exceptedDomains = ['meet.webex.com', 'meetup.webex.com', 'ciscospark.com'];\n const site = uri?.match(/.+@([^.]+\\.[^.]+\\.[^.]+)$/)?.[1];\n\n return exceptedDomains.includes(site) ? null : site;\n};\n\n/**\n * Helper function to return the direct URI for fetching meeting info (to avoid a redirect).\n * @param {Object} options type and value to fetch meeting info\n * @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} options.destination ?? value.value\n * @returns {String} returns a URI string or null of there is no direct URI\n */\nMeetingInfoUtil.getDirectMeetingInfoURI = (options: {type: string; destination: any}) => {\n const {type, destination} = options;\n\n let preferredWebexSite = null;\n\n switch (type) {\n case _SIP_URI_:\n preferredWebexSite = MeetingInfoUtil.getWebexSite(destination);\n break;\n case _LOCUS_ID_:\n preferredWebexSite = destination.info?.webExSite;\n break;\n default:\n }\n\n return preferredWebexSite ? `https://${preferredWebexSite}/wbxappapi/v1/meetingInfo` : null;\n};\n\nexport default MeetingInfoUtil;\n"],"mappings":"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"}
|
package/dist/meetings/index.d.ts
CHANGED
package/dist/meetings/index.js
CHANGED
|
@@ -21,7 +21,6 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
|
|
|
21
21
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
22
22
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
23
23
|
require("@webex/internal-plugin-mercury");
|
|
24
|
-
require("@webex/internal-plugin-conversation");
|
|
25
24
|
var _webexCore = require("@webex/webex-core");
|
|
26
25
|
require("webrtc-adapter");
|
|
27
26
|
var _metrics = _interopRequireDefault(require("../metrics"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["require","_webexCore","_metrics","_interopRequireDefault","_config","_loggerConfig","_config2","_loggerProxy","_request","_triggerProxy","_media","_util","_constants","_constants2","_meetingInfo","_meetingInfoV","_meeting","_personalMeetingRoom","_reachability","_request2","_passwordError","_captchaError","_collection","_util2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Meetings","_WebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","MEETINGS","request","Request","parent","webex","loggerRequest","LoggerRequest","meetingCollection","MeetingCollection","personalMeetingRoom","reachability","registered","preferredWebexSite","media","getUserMedia","Media","getSupportedDevice","onReady","_createClass2","key","value","handleLocusEvent","data","_data$locus$info","_data$locus","_data$locus$replaces","_this2","useRandomDelayForInfo","undefined","meeting","getByKey","LOCUS_URL","locusUrl","CORRELATION_ID","MeetingsUtil","checkForCorrelationId","internal","device","url","locus","SIP_URI","self","callbackInfo","callbackAddress","info","isUnifiedSpaceMeeting","CONVERSATION_URL","conversationUrl","replaces","fullState","state","LOCUS","STATE","INACTIVE","LoggerProxy","logger","warn","_LEFT_","removed","create","_LOCUS_ID_","then","newMeeting","locusInfo","initialSetup","catch","error","finally","getMeetingByType","_ID_","id","Metrics","postEvent","event","eventType","REMOTE_STARTED","trigger","MERCURY_EVENT","Trigger","file","function","EVENT_TRIGGERS","MEETING_ADDED","type","_MEETING_","_JOIN_","_INCOMING_","parse","handleLocusMercury","envelope","LOCUSEVENT","MESSAGE_ROAP","handleMercuryOffline","MEETINGS_NETWORK_DISCONNECTED","listenForEvents","_this3","mercury","on","LOCUS_MERCURY","ROAP","ROAP_MERCURY","handleRoapMercury","ONLINE","syncMeetings","OFFLINE","stopListeningForEvents","off","_this4","once","READY","StaticConfig","set","config","LoggerConfig","logging","meetingInfo","experimental","enableUnifiedMeetings","MeetingInfoV2","MeetingInfo","PersonalMeetingRoom","MEETINGS_READY","checkH264Support","disableNotifications","_toggleUnifiedMeetings","changeState","_this$config","_this$config$experime","_toggleTurnDiscovery","enable","enableTurnDiscovery","_toggleAdhocMeetings","_this$config2","_this$config2$experim","enableAdhocMeetings","register","_this5","canAuthorize","_promise","reject","Error","resolve","all","fetchUserPreferredWebexSite","getGeoHint","startReachability","message","connect","MEETINGS_REGISTERED","sendBehavioralMetric","BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_SUCCESS","MEETINGS_REGISTRATION_FAILED","reason","stack","unregister","_this6","disconnect","MEETINGS_UNREGISTERED","uploadLogs","_this7","options","uploadResult","MEETING_LOG_UPLOAD_SUCCESS","meetingId","details","uploadError","MEETING_LOG_UPLOAD_FAILURE","UPLOAD_LOGS_FAILURE","meetingsId","code","setReachability","Reachability","getReachability","gatherReachability","_this8","fetchGeoHint","res","geoHintInfo","_this9","getMeetingPreferences","parseDefaultSiteFromMeetingPreferences","getPersonalMeetingRoom","destroy","MeetingUtil","cleanUp","delete","MEETING_REMOVED","destination","_this10","fetchInfoOptions","targetDest","_CONVERSATION_URL_","foundMeeting","foundMeetingIsNotCalendarMeeting","scheduledMeeting","createMeeting","createdMeeting","EVENTS","DESTROY_MEETING","payload","autoUploadLogs","_createdMeeting$locus","_createdMeeting$locus2","_createdMeeting$locus3","_createdMeeting$locus4","callStart","lastActive","correlationId","feedbackId","locusId","webExMeetingId","REQUEST_UPLOAD_LOGS","meetingInstance","_meetingInstance$locu","_meetingInstance$locu2","_meetingInstance$locu3","_meetingInstance$locu4","_createMeeting","_asyncToGenerator2","_regenerator","mark","_callee","_destination$fullStat","waitingTime","startTime","startTimeDate","startTimeDatestamp","timeToStart","maxWaitingTime","isMeetingActive","meetingAddedType","_args","wrap","_callee$","_context","prev","next","Meeting","userId","deviceUrl","orgId","roapSeq","meetingInfoProvider","destinationType","Date","getTime","_now","Math","max","min","MAX_RANDOM_DELAY_FOR_MEETING_INFO","round","random","active","fetchMeetingInfoTimeoutId","setTimeout","fetchMeetingInfo","parseMeetingInfo","t0","CaptchaError","PasswordError","debug","sipUri","setSipUri","getMeetingAddedType","finish","abrupt","stop","_x","getAllMeetings","getAll","_this11","getActiveMeetings","locusArray","activeLocusUrl","loci","forEach","push","meetingsCollection","_keys","_i","_Object$values","_values","includes","MEETING_REMOVED_REASON","NO_MEETINGS_TO_SYNC","getScheduledMeetings","scheduled","getLogger","get","WebexPlugin","exports"],"sources":["index.ts"],"sourcesContent":["/* eslint no-shadow: [\"error\", { \"allow\": [\"eventType\"] }] */\n\nimport '@webex/internal-plugin-mercury';\nimport '@webex/internal-plugin-conversation';\n// @ts-ignore\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport 'webrtc-adapter';\n\nimport Metrics from '../metrics';\nimport {trigger, eventType} from '../metrics/config';\nimport LoggerConfig from '../common/logs/logger-config';\nimport StaticConfig from '../common/config';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport LoggerRequest from '../common/logs/request';\nimport Trigger from '../common/events/trigger-proxy';\nimport Media from '../media';\nimport MeetingUtil from '../meeting/util';\nimport {\n MEETINGS,\n EVENTS,\n EVENT_TRIGGERS,\n READY,\n LOCUSEVENT,\n LOCUS_URL,\n MAX_RANDOM_DELAY_FOR_MEETING_INFO,\n ROAP,\n ONLINE,\n OFFLINE,\n _MEETING_,\n _JOIN_,\n _LOCUS_ID_,\n _INCOMING_,\n LOCUS,\n CORRELATION_ID,\n SIP_URI,\n _LEFT_,\n _ID_,\n MEETING_REMOVED_REASON,\n _CONVERSATION_URL_,\n CONVERSATION_URL,\n} from '../constants';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport MeetingInfo from '../meeting-info';\nimport MeetingInfoV2 from '../meeting-info/meeting-info-v2';\nimport Meeting from '../meeting';\nimport PersonalMeetingRoom from '../personal-meeting-room';\nimport Reachability from '../reachability';\nimport Request from './request';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\n\nimport MeetingCollection from './collection';\nimport MeetingsUtil from './util';\n\n/**\n * Meetings Ready Event\n * Emitted when the meetings instance on webex is ready\n * @event meetings:ready\n * @instance\n * @memberof Meetings\n */\n\n/**\n * Meetings Network Disconnected Event\n * Emitted when the meetings instance is disconnected from\n * the internal mercury server\n * @event network:disconnected\n * @instance\n * @memberof Meetings\n */\n\n/**\n * Meetings Registered Event\n * Emitted when the meetings instance has been registered and listening\n * @event meetings:registered\n * @instance\n * @memberof Meetings\n */\n\n/**\n * Meeting Removed Event\n * Emitted when a meeting was removed from the cache of meetings\n * @event meeting:removed\n * @instance\n * @type {Object}\n * @property {String} meetingId the removed meeting\n * @property {Object} response the server response\n * @property {String} type what type of meeting it was\n * @memberof Meetings\n */\n\n/**\n * Meeting Added Event\n * Emitted when a meeting was added to the cache of meetings\n * @event meeting:added\n * @instance\n * @type {Object}\n * @property {String} meetingId the added meeting\n * @property {String} type what type of meeting it was\n * @memberof Meetings\n */\n\n/**\n * Maintain a cache of meetings and sync with services.\n * @class\n */\nexport default class Meetings extends WebexPlugin {\n loggerRequest: any;\n media: any;\n meetingCollection: any;\n personalMeetingRoom: any;\n preferredWebexSite: any;\n reachability: any;\n registered: any;\n request: any;\n geoHintInfo: any;\n meetingInfo: any;\n\n namespace = MEETINGS;\n\n /**\n * Initializes the Meetings Plugin\n * @constructor\n * @public\n * @memberof Meetings\n */\n constructor(...args) {\n super(...args);\n\n /**\n * The Meetings request to interact with server\n * @instance\n * @type {Object}\n * @private\n * @memberof Meetings\n */\n // @ts-ignore\n this.request = new Request({}, {parent: this.webex});\n /**\n * Log upload request helper\n * @instance\n * @type {Object}\n * @private\n * @memberof Meetings\n */\n // @ts-ignore\n this.loggerRequest = new LoggerRequest({webex: this.webex});\n this.meetingCollection = new MeetingCollection();\n /**\n * The PersonalMeetingRoom object to interact with server\n * @instance\n * @type {Object}\n * @public\n * @memberof Meetings\n */\n this.personalMeetingRoom = null;\n /**\n * The Reachability object to interact with server, starts as null until {@link Meeting#setReachability} is called\n * starts as null\n * @instance\n * @type {Object}\n * @private\n * @memberof Meetings\n */\n this.reachability = null;\n\n /**\n * If the meetings plugin has been registered and listening via {@link Meetings#register}\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Meetings\n */\n this.registered = false;\n\n /**\n * This values indicates the preferred webex site the user will start there meeting, getsits value from {@link Meetings#register}\n * @instance\n * @type {String}\n * @private\n * @memberof Meetings\n */\n this.preferredWebexSite = '';\n\n /**\n * The public interface for the internal Media util files. These are helpful to expose outside the context\n * of a meeting so that a user can access media without creating a meeting instance.\n * @instance\n * @type {Object}\n * @private\n * @memberof Meetings\n */\n this.media = {\n getUserMedia: Media.getUserMedia,\n getSupportedDevice: Media.getSupportedDevice,\n };\n\n this.onReady();\n }\n\n /**\n * handle locus events and takes meeting actions with them as they come in\n * @param {Object} data a locus event\n * @param {String} data.locusUrl\n * @param {Object} data.locus\n * @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info\n * @param {String} data.eventType\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private handleLocusEvent(data: {locusUrl: string; locus: any}, useRandomDelayForInfo = false) {\n let meeting = null;\n\n // getting meeting by correlationId. This will happen for the new event\n // Either the locus\n // TODO : Add check for the callBack Address\n meeting =\n this.meetingCollection.getByKey(LOCUS_URL, data.locusUrl) ||\n // @ts-ignore\n this.meetingCollection.getByKey(\n CORRELATION_ID,\n // @ts-ignore\n MeetingsUtil.checkForCorrelationId(this.webex.internal.device.url, data.locus)\n ) ||\n this.meetingCollection.getByKey(\n SIP_URI,\n data.locus.self &&\n data.locus.self.callbackInfo &&\n data.locus.self.callbackInfo.callbackAddress\n ) ||\n (data.locus.info?.isUnifiedSpaceMeeting\n ? undefined\n : this.meetingCollection.getByKey(CONVERSATION_URL, data.locus.conversationUrl));\n\n // Special case when locus has got replaced, This only happend once if a replace locus exists\n // https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-changing-mid-call\n\n if (!meeting && data.locus?.replaces?.length > 0) {\n // Always the last element in the replace is the active one\n meeting = this.meetingCollection.getByKey(\n LOCUS_URL,\n data.locus.replaces[data.locus.replaces.length - 1].locusUrl\n );\n }\n\n if (!meeting) {\n // TODO: create meeting when we get a meeting object\n // const checkForEnded = (locus) => {\n // TODO: you already ended the meeting but you got an event later\n // Mainly for 1:1 Callsor meeting\n // Happens mainly after refresh\n\n // 1:1 Meeting\n // 1) You ended a call before but you got a mercury event\n // Make sure end the call and cleanup the meeting only if the mercury\n // event says so\n // 2) Maintain lastSync time in the meetings object which helps to compare\n // If the meeting came befor or after the sync . ANy meeting start time before the sync time is invalid\n\n // For space Meeting\n // Check the locus object and see who has joined\n\n // };\n // rather then locus object change to locus url\n\n if (\n data.locus &&\n data.locus.fullState &&\n data.locus.fullState.state === LOCUS.STATE.INACTIVE\n ) {\n // just ignore the event as its already ended and not active\n LoggerProxy.logger.warn(\n 'Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.'\n );\n\n return;\n }\n\n // When its wireless share or guest and user leaves the meeting we dont have to keep the meeting object\n // Any future events will be neglected\n\n if (\n data.locus &&\n data.locus.self &&\n data.locus.self.state === _LEFT_ &&\n data.locus.self.removed === true\n ) {\n // just ignore the event as its already ended and not active\n LoggerProxy.logger.warn(\n 'Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.'\n );\n\n return;\n }\n\n this.create(data.locus, _LOCUS_ID_, useRandomDelayForInfo)\n .then((newMeeting) => {\n meeting = newMeeting;\n\n // It's a new meeting so initialize the locus data\n meeting.locusInfo.initialSetup(data.locus);\n })\n .catch((e) => {\n LoggerProxy.logger.error(e);\n })\n .finally(() => {\n // There will be cases where locus event comes in gets created and deleted because its a 1:1 and meeting gets deleted\n // because the other user left so before sending 'added' event make sure it exists in the collection\n\n if (this.getMeetingByType(_ID_, meeting.id)) {\n Metrics.postEvent({\n event: eventType.REMOTE_STARTED,\n meeting,\n data: {trigger: trigger.MERCURY_EVENT},\n });\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'handleLocusEvent',\n },\n EVENT_TRIGGERS.MEETING_ADDED,\n {\n meeting,\n type: meeting.type === _MEETING_ ? _JOIN_ : _INCOMING_,\n }\n );\n } else {\n // Meeting got added but was not found in the collection. It might have got destroyed\n LoggerProxy.logger.warn(\n 'Meetings:index#handleLocusEvent --> Created and destroyed meeting object before sending an event'\n );\n }\n });\n } else {\n meeting.locusInfo.parse(meeting, data);\n }\n }\n\n /**\n * handles locus events through mercury that are not roap\n * @param {Object} envelope\n * @param {Object} envelope.data\n * @param {String} envelope.data.eventType\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private handleLocusMercury(envelope: {data: any}) {\n const {data} = envelope;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {eventType} = data;\n\n if (eventType && eventType !== LOCUSEVENT.MESSAGE_ROAP) {\n this.handleLocusEvent(data, true);\n }\n }\n\n /**\n * handles mecury offline event\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private handleMercuryOffline() {\n Trigger.trigger(\n this,\n {\n file: 'meetings/index',\n function: 'handleMercuryOffline',\n },\n EVENT_TRIGGERS.MEETINGS_NETWORK_DISCONNECTED\n );\n }\n\n /**\n * registers for locus and roap mercury events\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private listenForEvents() {\n // @ts-ignore\n this.webex.internal.mercury.on(LOCUSEVENT.LOCUS_MERCURY, (envelope) => {\n this.handleLocusMercury(envelope);\n });\n // @ts-ignore\n this.webex.internal.mercury.on(ROAP.ROAP_MERCURY, (envelope) => {\n MeetingsUtil.handleRoapMercury(envelope, this.meetingCollection);\n });\n\n // @ts-ignore\n this.webex.internal.mercury.on(ONLINE, () => {\n this.syncMeetings();\n });\n\n // @ts-ignore\n this.webex.internal.mercury.on(OFFLINE, () => {\n this.handleMercuryOffline();\n });\n }\n\n /**\n * stops listening for locus and roap mercury events\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private stopListeningForEvents() {\n // @ts-ignore\n this.webex.internal.mercury.off(LOCUSEVENT.LOCUS_MERCURY);\n // @ts-ignore\n this.webex.internal.mercury.off(ROAP.ROAP_MERCURY);\n // @ts-ignore\n this.webex.internal.mercury.off(ONLINE);\n }\n\n /**\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private onReady() {\n // @ts-ignore\n this.webex.once(READY, () => {\n // @ts-ignore\n StaticConfig.set(this.config);\n // @ts-ignore\n LoggerConfig.set(this.config.logging);\n // @ts-ignore\n LoggerProxy.set(this.webex.logger);\n\n /**\n * The MeetingInfo object to interact with server\n * @instance\n * @type {Object}\n * @private\n * @memberof Meetings\n */\n // @ts-ignore\n this.meetingInfo = this.config.experimental.enableUnifiedMeetings\n ? // @ts-ignore\n new MeetingInfoV2(this.webex)\n : // @ts-ignore\n new MeetingInfo(this.webex);\n // @ts-ignore\n this.personalMeetingRoom = new PersonalMeetingRoom(\n {meetingInfo: this.meetingInfo},\n // @ts-ignore\n {parent: this.webex}\n );\n\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'onReady',\n },\n EVENT_TRIGGERS.MEETINGS_READY\n );\n\n MeetingsUtil.checkH264Support({disableNotifications: true});\n // @ts-ignore\n Metrics.initialSetup(this.meetingCollection, this.webex);\n });\n }\n\n /**\n * API to toggle unified meetings\n * @param {Boolean} changeState\n * @private\n * @memberof Meetings\n * @returns {undefined}\n */\n private _toggleUnifiedMeetings(changeState: boolean) {\n if (typeof changeState !== 'boolean') {\n return;\n }\n // @ts-ignore\n if (this.config?.experimental?.enableUnifiedMeetings !== changeState) {\n // @ts-ignore\n this.config.experimental.enableUnifiedMeetings = changeState;\n // @ts-ignore\n this.meetingInfo = changeState ? new MeetingInfoV2(this.webex) : new MeetingInfo(this.webex);\n }\n }\n\n /**\n * API to enable or disable TURN discovery\n * @param {Boolean} enable\n * @private\n * @memberof Meetings\n * @returns {undefined}\n */\n private _toggleTurnDiscovery(enable: boolean) {\n if (typeof enable !== 'boolean') {\n return;\n }\n // @ts-ignore\n this.config.experimental.enableTurnDiscovery = enable;\n }\n\n /**\n * API to toggle starting adhoc meeting\n * @param {Boolean} changeState\n * @private\n * @memberof Meetings\n * @returns {undefined}\n */\n private _toggleAdhocMeetings(changeState: boolean) {\n if (typeof changeState !== 'boolean') {\n return;\n }\n // @ts-ignore\n if (this.config?.experimental?.enableAdhocMeetings !== changeState) {\n // @ts-ignore\n this.config.experimental.enableAdhocMeetings = changeState;\n }\n }\n\n /**\n * Explicitly sets up the meetings plugin by registering\n * the device, connecting to mercury, and listening for locus events.\n *\n * @returns {Promise}\n * @public\n * @memberof Meetings\n */\n public register() {\n // @ts-ignore\n if (!this.webex.canAuthorize) {\n LoggerProxy.logger.error(\n 'Meetings:index#register --> ERROR, Unable to register, SDK cannot authorize'\n );\n\n return Promise.reject(new Error('SDK cannot authorize'));\n }\n\n if (this.registered) {\n LoggerProxy.logger.info(\n 'Meetings:index#register --> INFO, Meetings plugin already registered'\n );\n\n return Promise.resolve();\n }\n\n return Promise.all([\n this.fetchUserPreferredWebexSite(),\n this.getGeoHint(),\n this.startReachability().catch((error) => {\n LoggerProxy.logger.error(`Meetings:index#register --> GDM error, ${error.message}`);\n }),\n // @ts-ignore\n this.webex.internal.device\n .register()\n // @ts-ignore\n .then(() =>\n LoggerProxy.logger.info(\n // @ts-ignore\n `Meetings:index#register --> INFO, Device registered ${this.webex.internal.device.url}`\n )\n )\n // @ts-ignore\n .then(() => this.webex.internal.mercury.connect()),\n MeetingsUtil.checkH264Support.call(this),\n ])\n .then(() => {\n this.listenForEvents();\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'register',\n },\n EVENT_TRIGGERS.MEETINGS_REGISTERED\n );\n this.registered = true;\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETINGS_REGISTRATION_SUCCESS);\n })\n .catch((error) => {\n LoggerProxy.logger.error(\n `Meetings:index#register --> ERROR, Unable to register, ${error.message}`\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETINGS_REGISTRATION_FAILED, {\n reason: error.message,\n stack: error.stack,\n });\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Explicitly tears down the meetings plugin by deregistering\n * the device, disconnecting from mercury, and stops listening to locus events\n *\n * @returns {Promise}\n * @public\n * @memberof Meetings\n */\n unregister() {\n if (!this.registered) {\n LoggerProxy.logger.info(\n 'Meetings:index#unregister --> INFO, Meetings plugin already unregistered'\n );\n\n return Promise.resolve();\n }\n\n this.stopListeningForEvents();\n\n return (\n // @ts-ignore\n this.webex.internal.mercury\n .disconnect()\n // @ts-ignore\n .then(() => this.webex.internal.device.unregister())\n .then(() => {\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'unregister',\n },\n EVENT_TRIGGERS.MEETINGS_UNREGISTERED\n );\n this.registered = false;\n })\n );\n }\n\n /**\n * Uploads logs to the webex services for tracking\n * @param {Object} [options={}]\n * @param {String} [options.callStart] Call Start Time\n * @param {String} [options.feedbackId] ID used for tracking\n * @param {String} [options.locusId]\n * @param {String} [options.correlationId]\n * @param {String} [options.meetingId] webex meeting ID\n * @param {String} [options.userId] userId\n * @param {String} [options.orgId] org id\n * @returns {String} feedback ID logs were submitted under\n */\n uploadLogs(\n options: {\n callStart?: string;\n feedbackId?: string;\n locusId?: string;\n correlationId?: string;\n meetingId?: string;\n userId?: string;\n orgId?: string;\n } = {}\n ) {\n LoggerProxy.logger.info('Meetings:index#uploadLogs --> uploading logs');\n\n return this.loggerRequest\n .uploadLogs(options)\n .then((uploadResult) => {\n LoggerProxy.logger.info(\n 'Meetings:index#uploadLogs --> Upload logs for meeting completed.',\n uploadResult\n );\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'uploadLogs',\n },\n EVENT_TRIGGERS.MEETING_LOG_UPLOAD_SUCCESS,\n {\n meetingId: options.meetingId,\n details: uploadResult,\n }\n );\n\n return uploadResult;\n })\n .catch((uploadError) => {\n LoggerProxy.logger.error(\n 'Meetings:index#uploadLogs --> Unable to upload logs for meeting',\n uploadError\n );\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'uploadLogs',\n },\n EVENT_TRIGGERS.MEETING_LOG_UPLOAD_FAILURE,\n {\n meetingId: options.meetingId,\n reason: uploadError,\n }\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UPLOAD_LOGS_FAILURE, {\n // @ts-ignore - seems like typo\n meetingId: options.meetingsId,\n reason: uploadError.message,\n stack: uploadError.stack,\n code: uploadError.code,\n });\n });\n }\n\n /**\n * initializes the reachability instance for Meetings\n * @returns {undefined}\n * @public\n * @memberof Meetings\n */\n setReachability() {\n // @ts-ignore\n this.reachability = new Reachability(this.webex);\n }\n\n /**\n * gets the reachability instance for Meetings\n * @returns {Reachability}\n * @public\n * @memberof Meetings\n */\n getReachability() {\n return this.reachability;\n }\n\n /**\n * initializes and starts gathering reachability for Meetings\n * @returns {Promise}\n * @public\n * @memberof Meetings\n */\n startReachability() {\n if (!this.reachability) {\n this.setReachability();\n }\n\n return this.getReachability().gatherReachability();\n }\n\n /**\n * Get geoHint for info for meetings\n * @returns {Promise}\n * @private\n * @memberof Meetings\n */\n getGeoHint() {\n return this.request.fetchGeoHint().then((res) => {\n this.geoHintInfo = res;\n });\n }\n\n /**\n * Fetch user preferred webex site information\n * This also has other infomation about the user\n * @returns {Promise}\n * @private\n * @memberof Meetings\n */\n fetchUserPreferredWebexSite() {\n return this.request.getMeetingPreferences().then((res) => {\n if (res) {\n this.preferredWebexSite = MeetingsUtil.parseDefaultSiteFromMeetingPreferences(res);\n }\n });\n }\n\n /**\n * gets the personal meeting room instance, for saved PMR values for this user\n * @returns {PersonalMeetingRoom}\n * @public\n * @memberof Meetings\n */\n\n getPersonalMeetingRoom() {\n return this.personalMeetingRoom;\n }\n\n /**\n * @param {Meeting} meeting\n * @param {Object} reason\n * @param {String} type\n * @returns {Undefined}\n * @private\n * @memberof Meetings\n */\n private destroy(meeting: Meeting, reason: object) {\n MeetingUtil.cleanUp(meeting);\n this.meetingCollection.delete(meeting.id);\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'destroy',\n },\n EVENT_TRIGGERS.MEETING_REMOVED,\n {\n meetingId: meeting.id,\n reason,\n }\n );\n }\n\n /**\n * Create a meeting.\n * @param {string} destination - sipURL, spaceId, phonenumber, or locus object}\n * @param {string} [type] - the optional specified type, such as locusId\n * @param {Boolean} useRandomDelayForInfo - whether a random delay should be added to fetching meeting info\n * @returns {Promise<Meeting>} A new Meeting.\n * @public\n * @memberof Meetings\n */\n public create(destination: string, type: string = null, useRandomDelayForInfo = false) {\n // TODO: type should be from a dictionary\n\n // Validate meeting information based on the provided destination and\n // type. This must be performed prior to determining if the meeting is\n // found in the collection, as we mutate the destination for hydra person\n // id values.\n return (\n this.meetingInfo\n .fetchInfoOptions(destination, type)\n // Catch a failure to fetch info options.\n .catch((error) => {\n LoggerProxy.logger.info(\n `Meetings:index#create --> INFO, unable to determine info options: ${error.message}`\n );\n })\n .then((options: any = {}) => {\n // Normalize the destination.\n const targetDest = options.destination || destination;\n\n // check for the conversation URL then sip Url\n let meeting = null;\n\n if (type === _CONVERSATION_URL_ || options.type === _CONVERSATION_URL_) {\n const foundMeeting = this.meetingCollection.getByKey(CONVERSATION_URL, targetDest);\n\n if (foundMeeting) {\n const foundMeetingIsNotCalendarMeeting = !foundMeeting.locusInfo.scheduledMeeting;\n\n // If the found meeting is not a calendar meeting, return that meeting.\n // This allows for the creation of instant-meetings when calendar meetings are present.\n if (foundMeetingIsNotCalendarMeeting) {\n meeting = foundMeeting;\n }\n }\n }\n\n // Attempt to collect the meeting if it exists.\n if (!meeting) {\n meeting = this.meetingCollection.getByKey(SIP_URI, targetDest);\n }\n\n // Validate if a meeting was found.\n if (!meeting) {\n // Create a meeting based on the normalized destination and type.\n return this.createMeeting(targetDest, type, useRandomDelayForInfo).then(\n (createdMeeting: any) => {\n // If the meeting was successfully created.\n if (createdMeeting && createdMeeting.on) {\n // Create a destruction event for the meeting.\n createdMeeting.on(EVENTS.DESTROY_MEETING, (payload) => {\n // @ts-ignore\n if (this.config.autoUploadLogs) {\n this.uploadLogs({\n callStart: createdMeeting.locusInfo?.fullState?.lastActive,\n correlationId: createdMeeting.correlationId,\n feedbackId: createdMeeting.correlationId,\n locusId: createdMeeting.locusId,\n meetingId: createdMeeting.locusInfo?.info?.webExMeetingId,\n }).then(() => this.destroy(createdMeeting, payload.reason));\n } else {\n this.destroy(createdMeeting, payload.reason);\n }\n });\n\n createdMeeting.on(EVENTS.REQUEST_UPLOAD_LOGS, (meetingInstance) => {\n // @ts-ignore\n if (this.config.autoUploadLogs) {\n this.uploadLogs({\n callStart: meetingInstance?.locusInfo?.fullState?.lastActive,\n correlationId: meetingInstance.correlationId,\n feedbackId: meetingInstance.correlationId,\n locusId: meetingInstance.locusId,\n meetingId: meetingInstance.locusInfo?.info?.webExMeetingId,\n });\n }\n });\n } else {\n LoggerProxy.logger.error(\n `Meetings:index#create --> ERROR, meeting does not have on method, will not be destroyed, meeting cleanup impossible for meeting: ${meeting}`\n );\n }\n\n // Return the newly created meeting.\n return Promise.resolve(createdMeeting);\n }\n );\n }\n\n // Return the existing meeting.\n return Promise.resolve(meeting);\n })\n );\n }\n\n /**\n * @param {String} destination see create()\n * @param {String} type see create()\n * @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info\n * @returns {Promise} a new meeting instance complete with meeting info and destination\n * @private\n * @memberof Meetings\n */\n private async createMeeting(\n destination: any,\n type: string = null,\n useRandomDelayForInfo = false\n ) {\n const meeting = new Meeting(\n {\n // @ts-ignore\n userId: this.webex.internal.device.userId,\n // @ts-ignore\n deviceUrl: this.webex.internal.device.url,\n // @ts-ignore\n orgId: this.webex.internal.device.orgId,\n roapSeq: 0,\n locus: type === _LOCUS_ID_ ? destination : null, // pass the locus object if present\n meetingInfoProvider: this.meetingInfo,\n destination,\n destinationType: type,\n },\n {\n // @ts-ignore\n parent: this.webex,\n }\n );\n\n this.meetingCollection.set(meeting);\n\n try {\n // if no participant has joined the scheduled meeting (meaning meeting is not active) and we get a locusEvent,\n // it means the meeting will start in 5-6 min. In that case, we want to fetchMeetingInfo\n // between 5 and 2 min (random between 3 minutes) before the meeting starts\n // to avoid a spike in traffic to the wbxappi service\n let waitingTime = 0;\n\n if (destination.meeting) {\n const {startTime} = destination.meeting;\n const startTimeDate = new Date(startTime);\n const startTimeDatestamp = startTimeDate.getTime();\n const timeToStart = startTimeDatestamp - Date.now();\n const maxWaitingTime = Math.max(\n Math.min(timeToStart, MAX_RANDOM_DELAY_FOR_MEETING_INFO),\n 0\n );\n\n waitingTime = Math.round(Math.random() * maxWaitingTime);\n }\n const isMeetingActive = !!destination.fullState?.active;\n // @ts-ignore\n const {enableUnifiedMeetings} = this.config.experimental;\n\n if (enableUnifiedMeetings && !isMeetingActive && useRandomDelayForInfo && waitingTime > 0) {\n meeting.fetchMeetingInfoTimeoutId = setTimeout(\n () => meeting.fetchMeetingInfo({}),\n waitingTime\n );\n meeting.parseMeetingInfo(undefined, destination);\n } else {\n await meeting.fetchMeetingInfo({});\n }\n } catch (err) {\n if (!(err instanceof CaptchaError) && !(err instanceof PasswordError)) {\n // if there is no meeting info we assume its a 1:1 call or wireless share\n LoggerProxy.logger.info(\n `Meetings:index#createMeeting --> Info Unable to fetch meeting info for ${destination}.`\n );\n LoggerProxy.logger.info(\n 'Meetings:index#createMeeting --> Info assuming this destination is a 1:1 or wireless share'\n );\n }\n LoggerProxy.logger.debug(\n `Meetings:index#createMeeting --> Debug ${err} fetching /meetingInfo for creation.`\n );\n } finally {\n // For type LOCUS_ID we need to parse the locus object to get the information\n // about the caller and callee\n // Meeting Added event will be created in `handleLocusEvent`\n if (type !== _LOCUS_ID_) {\n if (!meeting.sipUri) {\n meeting.setSipUri(destination);\n }\n\n // TODO: check if we have to move this to parser\n const meetingAddedType = MeetingsUtil.getMeetingAddedType(type);\n\n // We typically shouldn't need to trigger both and event and return a promise.\n // Is this a special case? We want to make the public API usage as simple as possible.\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'createMeeting',\n },\n EVENT_TRIGGERS.MEETING_ADDED,\n {\n meeting,\n type: meetingAddedType,\n }\n );\n }\n }\n\n return meeting;\n\n // Create the meeting calling the necessary service endpoints.\n\n // Internally, there are many more destinations:\n //\n // - locusID\n // - meetingURL\n // - globalMeetingID, e.g, *00*meetingID\n // - meetingID\n // - meetingURL\n // - PSTN\n // - phone number\n //\n // Our job is to determine the appropriate one\n // and its corresponding service so that developers\n // need only sipURL or spaceID to get a meeting\n // and its ID, but have the option to use createWithType()\n // and specify those types to get meetingInfo\n }\n\n /**\n * get a specifc meeting given it's type matched to the value, i.e., locus url\n * @param {String} type\n * @param {Object} value\n * @returns {Meeting}\n * @public\n * @memberof Meetings\n */\n public getMeetingByType(type: string, value: object) {\n return this.meetingCollection.getByKey(type, value);\n }\n\n /**\n * Get all meetings.\n * @param {object} options\n * @param {object} options.startDate - get meetings after this start date\n * @param {object} options.endDate - get meetings before this end date\n * @returns {Object} All currently active meetings.\n * @public\n * @memberof Meetings\n */\n public getAllMeetings(\n options: {\n startDate: object;\n endDate: object;\n } = {} as any\n ) {\n // Options may include other parameters to filter this collection\n // of meetings.\n return this.meetingCollection.getAll(options);\n }\n\n /**\n * syncs all the meeting from server\n * @returns {undefined}\n * @public\n * @memberof Meetings\n */\n public syncMeetings() {\n return this.request.getActiveMeetings().then((locusArray) => {\n const activeLocusUrl = [];\n\n if (locusArray?.loci && locusArray.loci.length > 0) {\n locusArray.loci.forEach((locus) => {\n activeLocusUrl.push(locus.url);\n this.handleLocusEvent({\n locus,\n locusUrl: locus.url,\n });\n });\n }\n const meetingsCollection = this.meetingCollection.getAll();\n\n if (Object.keys(meetingsCollection).length > 0) {\n // Some time the mercury event is missed after mercury reconnect\n // if sync returns no locus then clear all the meetings\n for (const meeting of Object.values(meetingsCollection)) {\n // @ts-ignore\n if (!activeLocusUrl.includes(meeting.locusUrl)) {\n // destroy function also uploads logs\n // @ts-ignore\n this.destroy(meeting, MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);\n }\n }\n }\n });\n }\n\n /**\n * Get all scheduled meetings.\n * @param {object} options\n * @param {object} options.startDate - get meetings after this start date\n * @param {object} options.endDate - get meetings before this end date\n * @returns {Object} All scheduled meetings.\n * @memberof Meetings\n */\n getScheduledMeetings() {\n return this.meetingCollection.getAll({scheduled: true});\n }\n\n /**\n * Get the logger instance for plugin-meetings\n * @returns {Logger}\n */\n getLogger() {\n return LoggerProxy.get();\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["require","_webexCore","_metrics","_interopRequireDefault","_config","_loggerConfig","_config2","_loggerProxy","_request","_triggerProxy","_media","_util","_constants","_constants2","_meetingInfo","_meetingInfoV","_meeting","_personalMeetingRoom","_reachability","_request2","_passwordError","_captchaError","_collection","_util2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Meetings","_WebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","MEETINGS","request","Request","parent","webex","loggerRequest","LoggerRequest","meetingCollection","MeetingCollection","personalMeetingRoom","reachability","registered","preferredWebexSite","media","getUserMedia","Media","getSupportedDevice","onReady","_createClass2","key","value","handleLocusEvent","data","_data$locus$info","_data$locus","_data$locus$replaces","_this2","useRandomDelayForInfo","undefined","meeting","getByKey","LOCUS_URL","locusUrl","CORRELATION_ID","MeetingsUtil","checkForCorrelationId","internal","device","url","locus","SIP_URI","self","callbackInfo","callbackAddress","info","isUnifiedSpaceMeeting","CONVERSATION_URL","conversationUrl","replaces","fullState","state","LOCUS","STATE","INACTIVE","LoggerProxy","logger","warn","_LEFT_","removed","create","_LOCUS_ID_","then","newMeeting","locusInfo","initialSetup","catch","error","finally","getMeetingByType","_ID_","id","Metrics","postEvent","event","eventType","REMOTE_STARTED","trigger","MERCURY_EVENT","Trigger","file","function","EVENT_TRIGGERS","MEETING_ADDED","type","_MEETING_","_JOIN_","_INCOMING_","parse","handleLocusMercury","envelope","LOCUSEVENT","MESSAGE_ROAP","handleMercuryOffline","MEETINGS_NETWORK_DISCONNECTED","listenForEvents","_this3","mercury","on","LOCUS_MERCURY","ROAP","ROAP_MERCURY","handleRoapMercury","ONLINE","syncMeetings","OFFLINE","stopListeningForEvents","off","_this4","once","READY","StaticConfig","set","config","LoggerConfig","logging","meetingInfo","experimental","enableUnifiedMeetings","MeetingInfoV2","MeetingInfo","PersonalMeetingRoom","MEETINGS_READY","checkH264Support","disableNotifications","_toggleUnifiedMeetings","changeState","_this$config","_this$config$experime","_toggleTurnDiscovery","enable","enableTurnDiscovery","_toggleAdhocMeetings","_this$config2","_this$config2$experim","enableAdhocMeetings","register","_this5","canAuthorize","_promise","reject","Error","resolve","all","fetchUserPreferredWebexSite","getGeoHint","startReachability","message","connect","MEETINGS_REGISTERED","sendBehavioralMetric","BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_SUCCESS","MEETINGS_REGISTRATION_FAILED","reason","stack","unregister","_this6","disconnect","MEETINGS_UNREGISTERED","uploadLogs","_this7","options","uploadResult","MEETING_LOG_UPLOAD_SUCCESS","meetingId","details","uploadError","MEETING_LOG_UPLOAD_FAILURE","UPLOAD_LOGS_FAILURE","meetingsId","code","setReachability","Reachability","getReachability","gatherReachability","_this8","fetchGeoHint","res","geoHintInfo","_this9","getMeetingPreferences","parseDefaultSiteFromMeetingPreferences","getPersonalMeetingRoom","destroy","MeetingUtil","cleanUp","delete","MEETING_REMOVED","destination","_this10","fetchInfoOptions","targetDest","_CONVERSATION_URL_","foundMeeting","foundMeetingIsNotCalendarMeeting","scheduledMeeting","createMeeting","createdMeeting","EVENTS","DESTROY_MEETING","payload","autoUploadLogs","_createdMeeting$locus","_createdMeeting$locus2","_createdMeeting$locus3","_createdMeeting$locus4","callStart","lastActive","correlationId","feedbackId","locusId","webExMeetingId","REQUEST_UPLOAD_LOGS","meetingInstance","_meetingInstance$locu","_meetingInstance$locu2","_meetingInstance$locu3","_meetingInstance$locu4","_createMeeting","_asyncToGenerator2","_regenerator","mark","_callee","_destination$fullStat","waitingTime","startTime","startTimeDate","startTimeDatestamp","timeToStart","maxWaitingTime","isMeetingActive","meetingAddedType","_args","wrap","_callee$","_context","prev","next","Meeting","userId","deviceUrl","orgId","roapSeq","meetingInfoProvider","destinationType","Date","getTime","_now","Math","max","min","MAX_RANDOM_DELAY_FOR_MEETING_INFO","round","random","active","fetchMeetingInfoTimeoutId","setTimeout","fetchMeetingInfo","parseMeetingInfo","t0","CaptchaError","PasswordError","debug","sipUri","setSipUri","getMeetingAddedType","finish","abrupt","stop","_x","getAllMeetings","getAll","_this11","getActiveMeetings","locusArray","activeLocusUrl","loci","forEach","push","meetingsCollection","_keys","_i","_Object$values","_values","includes","MEETING_REMOVED_REASON","NO_MEETINGS_TO_SYNC","getScheduledMeetings","scheduled","getLogger","get","WebexPlugin","exports"],"sources":["index.ts"],"sourcesContent":["/* eslint no-shadow: [\"error\", { \"allow\": [\"eventType\"] }] */\n\nimport '@webex/internal-plugin-mercury';\n// @ts-ignore\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport 'webrtc-adapter';\n\nimport Metrics from '../metrics';\nimport {trigger, eventType} from '../metrics/config';\nimport LoggerConfig from '../common/logs/logger-config';\nimport StaticConfig from '../common/config';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport LoggerRequest from '../common/logs/request';\nimport Trigger from '../common/events/trigger-proxy';\nimport Media from '../media';\nimport MeetingUtil from '../meeting/util';\nimport {\n MEETINGS,\n EVENTS,\n EVENT_TRIGGERS,\n READY,\n LOCUSEVENT,\n LOCUS_URL,\n MAX_RANDOM_DELAY_FOR_MEETING_INFO,\n ROAP,\n ONLINE,\n OFFLINE,\n _MEETING_,\n _JOIN_,\n _LOCUS_ID_,\n _INCOMING_,\n LOCUS,\n CORRELATION_ID,\n SIP_URI,\n _LEFT_,\n _ID_,\n MEETING_REMOVED_REASON,\n _CONVERSATION_URL_,\n CONVERSATION_URL,\n} from '../constants';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport MeetingInfo from '../meeting-info';\nimport MeetingInfoV2 from '../meeting-info/meeting-info-v2';\nimport Meeting from '../meeting';\nimport PersonalMeetingRoom from '../personal-meeting-room';\nimport Reachability from '../reachability';\nimport Request from './request';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\n\nimport MeetingCollection from './collection';\nimport MeetingsUtil from './util';\n\n/**\n * Meetings Ready Event\n * Emitted when the meetings instance on webex is ready\n * @event meetings:ready\n * @instance\n * @memberof Meetings\n */\n\n/**\n * Meetings Network Disconnected Event\n * Emitted when the meetings instance is disconnected from\n * the internal mercury server\n * @event network:disconnected\n * @instance\n * @memberof Meetings\n */\n\n/**\n * Meetings Registered Event\n * Emitted when the meetings instance has been registered and listening\n * @event meetings:registered\n * @instance\n * @memberof Meetings\n */\n\n/**\n * Meeting Removed Event\n * Emitted when a meeting was removed from the cache of meetings\n * @event meeting:removed\n * @instance\n * @type {Object}\n * @property {String} meetingId the removed meeting\n * @property {Object} response the server response\n * @property {String} type what type of meeting it was\n * @memberof Meetings\n */\n\n/**\n * Meeting Added Event\n * Emitted when a meeting was added to the cache of meetings\n * @event meeting:added\n * @instance\n * @type {Object}\n * @property {String} meetingId the added meeting\n * @property {String} type what type of meeting it was\n * @memberof Meetings\n */\n\n/**\n * Maintain a cache of meetings and sync with services.\n * @class\n */\nexport default class Meetings extends WebexPlugin {\n loggerRequest: any;\n media: any;\n meetingCollection: any;\n personalMeetingRoom: any;\n preferredWebexSite: any;\n reachability: any;\n registered: any;\n request: any;\n geoHintInfo: any;\n meetingInfo: any;\n\n namespace = MEETINGS;\n\n /**\n * Initializes the Meetings Plugin\n * @constructor\n * @public\n * @memberof Meetings\n */\n constructor(...args) {\n super(...args);\n\n /**\n * The Meetings request to interact with server\n * @instance\n * @type {Object}\n * @private\n * @memberof Meetings\n */\n // @ts-ignore\n this.request = new Request({}, {parent: this.webex});\n /**\n * Log upload request helper\n * @instance\n * @type {Object}\n * @private\n * @memberof Meetings\n */\n // @ts-ignore\n this.loggerRequest = new LoggerRequest({webex: this.webex});\n this.meetingCollection = new MeetingCollection();\n /**\n * The PersonalMeetingRoom object to interact with server\n * @instance\n * @type {Object}\n * @public\n * @memberof Meetings\n */\n this.personalMeetingRoom = null;\n /**\n * The Reachability object to interact with server, starts as null until {@link Meeting#setReachability} is called\n * starts as null\n * @instance\n * @type {Object}\n * @private\n * @memberof Meetings\n */\n this.reachability = null;\n\n /**\n * If the meetings plugin has been registered and listening via {@link Meetings#register}\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Meetings\n */\n this.registered = false;\n\n /**\n * This values indicates the preferred webex site the user will start there meeting, getsits value from {@link Meetings#register}\n * @instance\n * @type {String}\n * @private\n * @memberof Meetings\n */\n this.preferredWebexSite = '';\n\n /**\n * The public interface for the internal Media util files. These are helpful to expose outside the context\n * of a meeting so that a user can access media without creating a meeting instance.\n * @instance\n * @type {Object}\n * @private\n * @memberof Meetings\n */\n this.media = {\n getUserMedia: Media.getUserMedia,\n getSupportedDevice: Media.getSupportedDevice,\n };\n\n this.onReady();\n }\n\n /**\n * handle locus events and takes meeting actions with them as they come in\n * @param {Object} data a locus event\n * @param {String} data.locusUrl\n * @param {Object} data.locus\n * @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info\n * @param {String} data.eventType\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private handleLocusEvent(data: {locusUrl: string; locus: any}, useRandomDelayForInfo = false) {\n let meeting = null;\n\n // getting meeting by correlationId. This will happen for the new event\n // Either the locus\n // TODO : Add check for the callBack Address\n meeting =\n this.meetingCollection.getByKey(LOCUS_URL, data.locusUrl) ||\n // @ts-ignore\n this.meetingCollection.getByKey(\n CORRELATION_ID,\n // @ts-ignore\n MeetingsUtil.checkForCorrelationId(this.webex.internal.device.url, data.locus)\n ) ||\n this.meetingCollection.getByKey(\n SIP_URI,\n data.locus.self &&\n data.locus.self.callbackInfo &&\n data.locus.self.callbackInfo.callbackAddress\n ) ||\n (data.locus.info?.isUnifiedSpaceMeeting\n ? undefined\n : this.meetingCollection.getByKey(CONVERSATION_URL, data.locus.conversationUrl));\n\n // Special case when locus has got replaced, This only happend once if a replace locus exists\n // https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-changing-mid-call\n\n if (!meeting && data.locus?.replaces?.length > 0) {\n // Always the last element in the replace is the active one\n meeting = this.meetingCollection.getByKey(\n LOCUS_URL,\n data.locus.replaces[data.locus.replaces.length - 1].locusUrl\n );\n }\n\n if (!meeting) {\n // TODO: create meeting when we get a meeting object\n // const checkForEnded = (locus) => {\n // TODO: you already ended the meeting but you got an event later\n // Mainly for 1:1 Callsor meeting\n // Happens mainly after refresh\n\n // 1:1 Meeting\n // 1) You ended a call before but you got a mercury event\n // Make sure end the call and cleanup the meeting only if the mercury\n // event says so\n // 2) Maintain lastSync time in the meetings object which helps to compare\n // If the meeting came befor or after the sync . ANy meeting start time before the sync time is invalid\n\n // For space Meeting\n // Check the locus object and see who has joined\n\n // };\n // rather then locus object change to locus url\n\n if (\n data.locus &&\n data.locus.fullState &&\n data.locus.fullState.state === LOCUS.STATE.INACTIVE\n ) {\n // just ignore the event as its already ended and not active\n LoggerProxy.logger.warn(\n 'Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.'\n );\n\n return;\n }\n\n // When its wireless share or guest and user leaves the meeting we dont have to keep the meeting object\n // Any future events will be neglected\n\n if (\n data.locus &&\n data.locus.self &&\n data.locus.self.state === _LEFT_ &&\n data.locus.self.removed === true\n ) {\n // just ignore the event as its already ended and not active\n LoggerProxy.logger.warn(\n 'Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.'\n );\n\n return;\n }\n\n this.create(data.locus, _LOCUS_ID_, useRandomDelayForInfo)\n .then((newMeeting) => {\n meeting = newMeeting;\n\n // It's a new meeting so initialize the locus data\n meeting.locusInfo.initialSetup(data.locus);\n })\n .catch((e) => {\n LoggerProxy.logger.error(e);\n })\n .finally(() => {\n // There will be cases where locus event comes in gets created and deleted because its a 1:1 and meeting gets deleted\n // because the other user left so before sending 'added' event make sure it exists in the collection\n\n if (this.getMeetingByType(_ID_, meeting.id)) {\n Metrics.postEvent({\n event: eventType.REMOTE_STARTED,\n meeting,\n data: {trigger: trigger.MERCURY_EVENT},\n });\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'handleLocusEvent',\n },\n EVENT_TRIGGERS.MEETING_ADDED,\n {\n meeting,\n type: meeting.type === _MEETING_ ? _JOIN_ : _INCOMING_,\n }\n );\n } else {\n // Meeting got added but was not found in the collection. It might have got destroyed\n LoggerProxy.logger.warn(\n 'Meetings:index#handleLocusEvent --> Created and destroyed meeting object before sending an event'\n );\n }\n });\n } else {\n meeting.locusInfo.parse(meeting, data);\n }\n }\n\n /**\n * handles locus events through mercury that are not roap\n * @param {Object} envelope\n * @param {Object} envelope.data\n * @param {String} envelope.data.eventType\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private handleLocusMercury(envelope: {data: any}) {\n const {data} = envelope;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {eventType} = data;\n\n if (eventType && eventType !== LOCUSEVENT.MESSAGE_ROAP) {\n this.handleLocusEvent(data, true);\n }\n }\n\n /**\n * handles mecury offline event\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private handleMercuryOffline() {\n Trigger.trigger(\n this,\n {\n file: 'meetings/index',\n function: 'handleMercuryOffline',\n },\n EVENT_TRIGGERS.MEETINGS_NETWORK_DISCONNECTED\n );\n }\n\n /**\n * registers for locus and roap mercury events\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private listenForEvents() {\n // @ts-ignore\n this.webex.internal.mercury.on(LOCUSEVENT.LOCUS_MERCURY, (envelope) => {\n this.handleLocusMercury(envelope);\n });\n // @ts-ignore\n this.webex.internal.mercury.on(ROAP.ROAP_MERCURY, (envelope) => {\n MeetingsUtil.handleRoapMercury(envelope, this.meetingCollection);\n });\n\n // @ts-ignore\n this.webex.internal.mercury.on(ONLINE, () => {\n this.syncMeetings();\n });\n\n // @ts-ignore\n this.webex.internal.mercury.on(OFFLINE, () => {\n this.handleMercuryOffline();\n });\n }\n\n /**\n * stops listening for locus and roap mercury events\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private stopListeningForEvents() {\n // @ts-ignore\n this.webex.internal.mercury.off(LOCUSEVENT.LOCUS_MERCURY);\n // @ts-ignore\n this.webex.internal.mercury.off(ROAP.ROAP_MERCURY);\n // @ts-ignore\n this.webex.internal.mercury.off(ONLINE);\n }\n\n /**\n * @returns {undefined}\n * @private\n * @memberof Meetings\n */\n private onReady() {\n // @ts-ignore\n this.webex.once(READY, () => {\n // @ts-ignore\n StaticConfig.set(this.config);\n // @ts-ignore\n LoggerConfig.set(this.config.logging);\n // @ts-ignore\n LoggerProxy.set(this.webex.logger);\n\n /**\n * The MeetingInfo object to interact with server\n * @instance\n * @type {Object}\n * @private\n * @memberof Meetings\n */\n // @ts-ignore\n this.meetingInfo = this.config.experimental.enableUnifiedMeetings\n ? // @ts-ignore\n new MeetingInfoV2(this.webex)\n : // @ts-ignore\n new MeetingInfo(this.webex);\n // @ts-ignore\n this.personalMeetingRoom = new PersonalMeetingRoom(\n {meetingInfo: this.meetingInfo},\n // @ts-ignore\n {parent: this.webex}\n );\n\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'onReady',\n },\n EVENT_TRIGGERS.MEETINGS_READY\n );\n\n MeetingsUtil.checkH264Support({disableNotifications: true});\n // @ts-ignore\n Metrics.initialSetup(this.meetingCollection, this.webex);\n });\n }\n\n /**\n * API to toggle unified meetings\n * @param {Boolean} changeState\n * @private\n * @memberof Meetings\n * @returns {undefined}\n */\n private _toggleUnifiedMeetings(changeState: boolean) {\n if (typeof changeState !== 'boolean') {\n return;\n }\n // @ts-ignore\n if (this.config?.experimental?.enableUnifiedMeetings !== changeState) {\n // @ts-ignore\n this.config.experimental.enableUnifiedMeetings = changeState;\n // @ts-ignore\n this.meetingInfo = changeState ? new MeetingInfoV2(this.webex) : new MeetingInfo(this.webex);\n }\n }\n\n /**\n * API to enable or disable TURN discovery\n * @param {Boolean} enable\n * @private\n * @memberof Meetings\n * @returns {undefined}\n */\n private _toggleTurnDiscovery(enable: boolean) {\n if (typeof enable !== 'boolean') {\n return;\n }\n // @ts-ignore\n this.config.experimental.enableTurnDiscovery = enable;\n }\n\n /**\n * API to toggle starting adhoc meeting\n * @param {Boolean} changeState\n * @private\n * @memberof Meetings\n * @returns {undefined}\n */\n private _toggleAdhocMeetings(changeState: boolean) {\n if (typeof changeState !== 'boolean') {\n return;\n }\n // @ts-ignore\n if (this.config?.experimental?.enableAdhocMeetings !== changeState) {\n // @ts-ignore\n this.config.experimental.enableAdhocMeetings = changeState;\n }\n }\n\n /**\n * Explicitly sets up the meetings plugin by registering\n * the device, connecting to mercury, and listening for locus events.\n *\n * @returns {Promise}\n * @public\n * @memberof Meetings\n */\n public register() {\n // @ts-ignore\n if (!this.webex.canAuthorize) {\n LoggerProxy.logger.error(\n 'Meetings:index#register --> ERROR, Unable to register, SDK cannot authorize'\n );\n\n return Promise.reject(new Error('SDK cannot authorize'));\n }\n\n if (this.registered) {\n LoggerProxy.logger.info(\n 'Meetings:index#register --> INFO, Meetings plugin already registered'\n );\n\n return Promise.resolve();\n }\n\n return Promise.all([\n this.fetchUserPreferredWebexSite(),\n this.getGeoHint(),\n this.startReachability().catch((error) => {\n LoggerProxy.logger.error(`Meetings:index#register --> GDM error, ${error.message}`);\n }),\n // @ts-ignore\n this.webex.internal.device\n .register()\n // @ts-ignore\n .then(() =>\n LoggerProxy.logger.info(\n // @ts-ignore\n `Meetings:index#register --> INFO, Device registered ${this.webex.internal.device.url}`\n )\n )\n // @ts-ignore\n .then(() => this.webex.internal.mercury.connect()),\n MeetingsUtil.checkH264Support.call(this),\n ])\n .then(() => {\n this.listenForEvents();\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'register',\n },\n EVENT_TRIGGERS.MEETINGS_REGISTERED\n );\n this.registered = true;\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETINGS_REGISTRATION_SUCCESS);\n })\n .catch((error) => {\n LoggerProxy.logger.error(\n `Meetings:index#register --> ERROR, Unable to register, ${error.message}`\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETINGS_REGISTRATION_FAILED, {\n reason: error.message,\n stack: error.stack,\n });\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Explicitly tears down the meetings plugin by deregistering\n * the device, disconnecting from mercury, and stops listening to locus events\n *\n * @returns {Promise}\n * @public\n * @memberof Meetings\n */\n unregister() {\n if (!this.registered) {\n LoggerProxy.logger.info(\n 'Meetings:index#unregister --> INFO, Meetings plugin already unregistered'\n );\n\n return Promise.resolve();\n }\n\n this.stopListeningForEvents();\n\n return (\n // @ts-ignore\n this.webex.internal.mercury\n .disconnect()\n // @ts-ignore\n .then(() => this.webex.internal.device.unregister())\n .then(() => {\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'unregister',\n },\n EVENT_TRIGGERS.MEETINGS_UNREGISTERED\n );\n this.registered = false;\n })\n );\n }\n\n /**\n * Uploads logs to the webex services for tracking\n * @param {Object} [options={}]\n * @param {String} [options.callStart] Call Start Time\n * @param {String} [options.feedbackId] ID used for tracking\n * @param {String} [options.locusId]\n * @param {String} [options.correlationId]\n * @param {String} [options.meetingId] webex meeting ID\n * @param {String} [options.userId] userId\n * @param {String} [options.orgId] org id\n * @returns {String} feedback ID logs were submitted under\n */\n uploadLogs(\n options: {\n callStart?: string;\n feedbackId?: string;\n locusId?: string;\n correlationId?: string;\n meetingId?: string;\n userId?: string;\n orgId?: string;\n } = {}\n ) {\n LoggerProxy.logger.info('Meetings:index#uploadLogs --> uploading logs');\n\n return this.loggerRequest\n .uploadLogs(options)\n .then((uploadResult) => {\n LoggerProxy.logger.info(\n 'Meetings:index#uploadLogs --> Upload logs for meeting completed.',\n uploadResult\n );\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'uploadLogs',\n },\n EVENT_TRIGGERS.MEETING_LOG_UPLOAD_SUCCESS,\n {\n meetingId: options.meetingId,\n details: uploadResult,\n }\n );\n\n return uploadResult;\n })\n .catch((uploadError) => {\n LoggerProxy.logger.error(\n 'Meetings:index#uploadLogs --> Unable to upload logs for meeting',\n uploadError\n );\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'uploadLogs',\n },\n EVENT_TRIGGERS.MEETING_LOG_UPLOAD_FAILURE,\n {\n meetingId: options.meetingId,\n reason: uploadError,\n }\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UPLOAD_LOGS_FAILURE, {\n // @ts-ignore - seems like typo\n meetingId: options.meetingsId,\n reason: uploadError.message,\n stack: uploadError.stack,\n code: uploadError.code,\n });\n });\n }\n\n /**\n * initializes the reachability instance for Meetings\n * @returns {undefined}\n * @public\n * @memberof Meetings\n */\n setReachability() {\n // @ts-ignore\n this.reachability = new Reachability(this.webex);\n }\n\n /**\n * gets the reachability instance for Meetings\n * @returns {Reachability}\n * @public\n * @memberof Meetings\n */\n getReachability() {\n return this.reachability;\n }\n\n /**\n * initializes and starts gathering reachability for Meetings\n * @returns {Promise}\n * @public\n * @memberof Meetings\n */\n startReachability() {\n if (!this.reachability) {\n this.setReachability();\n }\n\n return this.getReachability().gatherReachability();\n }\n\n /**\n * Get geoHint for info for meetings\n * @returns {Promise}\n * @private\n * @memberof Meetings\n */\n getGeoHint() {\n return this.request.fetchGeoHint().then((res) => {\n this.geoHintInfo = res;\n });\n }\n\n /**\n * Fetch user preferred webex site information\n * This also has other infomation about the user\n * @returns {Promise}\n * @private\n * @memberof Meetings\n */\n fetchUserPreferredWebexSite() {\n return this.request.getMeetingPreferences().then((res) => {\n if (res) {\n this.preferredWebexSite = MeetingsUtil.parseDefaultSiteFromMeetingPreferences(res);\n }\n });\n }\n\n /**\n * gets the personal meeting room instance, for saved PMR values for this user\n * @returns {PersonalMeetingRoom}\n * @public\n * @memberof Meetings\n */\n\n getPersonalMeetingRoom() {\n return this.personalMeetingRoom;\n }\n\n /**\n * @param {Meeting} meeting\n * @param {Object} reason\n * @param {String} type\n * @returns {Undefined}\n * @private\n * @memberof Meetings\n */\n private destroy(meeting: Meeting, reason: object) {\n MeetingUtil.cleanUp(meeting);\n this.meetingCollection.delete(meeting.id);\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'destroy',\n },\n EVENT_TRIGGERS.MEETING_REMOVED,\n {\n meetingId: meeting.id,\n reason,\n }\n );\n }\n\n /**\n * Create a meeting.\n * @param {string} destination - sipURL, spaceId, phonenumber, or locus object}\n * @param {string} [type] - the optional specified type, such as locusId\n * @param {Boolean} useRandomDelayForInfo - whether a random delay should be added to fetching meeting info\n * @returns {Promise<Meeting>} A new Meeting.\n * @public\n * @memberof Meetings\n */\n public create(destination: string, type: string = null, useRandomDelayForInfo = false) {\n // TODO: type should be from a dictionary\n\n // Validate meeting information based on the provided destination and\n // type. This must be performed prior to determining if the meeting is\n // found in the collection, as we mutate the destination for hydra person\n // id values.\n return (\n this.meetingInfo\n .fetchInfoOptions(destination, type)\n // Catch a failure to fetch info options.\n .catch((error) => {\n LoggerProxy.logger.info(\n `Meetings:index#create --> INFO, unable to determine info options: ${error.message}`\n );\n })\n .then((options: any = {}) => {\n // Normalize the destination.\n const targetDest = options.destination || destination;\n\n // check for the conversation URL then sip Url\n let meeting = null;\n\n if (type === _CONVERSATION_URL_ || options.type === _CONVERSATION_URL_) {\n const foundMeeting = this.meetingCollection.getByKey(CONVERSATION_URL, targetDest);\n\n if (foundMeeting) {\n const foundMeetingIsNotCalendarMeeting = !foundMeeting.locusInfo.scheduledMeeting;\n\n // If the found meeting is not a calendar meeting, return that meeting.\n // This allows for the creation of instant-meetings when calendar meetings are present.\n if (foundMeetingIsNotCalendarMeeting) {\n meeting = foundMeeting;\n }\n }\n }\n\n // Attempt to collect the meeting if it exists.\n if (!meeting) {\n meeting = this.meetingCollection.getByKey(SIP_URI, targetDest);\n }\n\n // Validate if a meeting was found.\n if (!meeting) {\n // Create a meeting based on the normalized destination and type.\n return this.createMeeting(targetDest, type, useRandomDelayForInfo).then(\n (createdMeeting: any) => {\n // If the meeting was successfully created.\n if (createdMeeting && createdMeeting.on) {\n // Create a destruction event for the meeting.\n createdMeeting.on(EVENTS.DESTROY_MEETING, (payload) => {\n // @ts-ignore\n if (this.config.autoUploadLogs) {\n this.uploadLogs({\n callStart: createdMeeting.locusInfo?.fullState?.lastActive,\n correlationId: createdMeeting.correlationId,\n feedbackId: createdMeeting.correlationId,\n locusId: createdMeeting.locusId,\n meetingId: createdMeeting.locusInfo?.info?.webExMeetingId,\n }).then(() => this.destroy(createdMeeting, payload.reason));\n } else {\n this.destroy(createdMeeting, payload.reason);\n }\n });\n\n createdMeeting.on(EVENTS.REQUEST_UPLOAD_LOGS, (meetingInstance) => {\n // @ts-ignore\n if (this.config.autoUploadLogs) {\n this.uploadLogs({\n callStart: meetingInstance?.locusInfo?.fullState?.lastActive,\n correlationId: meetingInstance.correlationId,\n feedbackId: meetingInstance.correlationId,\n locusId: meetingInstance.locusId,\n meetingId: meetingInstance.locusInfo?.info?.webExMeetingId,\n });\n }\n });\n } else {\n LoggerProxy.logger.error(\n `Meetings:index#create --> ERROR, meeting does not have on method, will not be destroyed, meeting cleanup impossible for meeting: ${meeting}`\n );\n }\n\n // Return the newly created meeting.\n return Promise.resolve(createdMeeting);\n }\n );\n }\n\n // Return the existing meeting.\n return Promise.resolve(meeting);\n })\n );\n }\n\n /**\n * @param {String} destination see create()\n * @param {String} type see create()\n * @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info\n * @returns {Promise} a new meeting instance complete with meeting info and destination\n * @private\n * @memberof Meetings\n */\n private async createMeeting(\n destination: any,\n type: string = null,\n useRandomDelayForInfo = false\n ) {\n const meeting = new Meeting(\n {\n // @ts-ignore\n userId: this.webex.internal.device.userId,\n // @ts-ignore\n deviceUrl: this.webex.internal.device.url,\n // @ts-ignore\n orgId: this.webex.internal.device.orgId,\n roapSeq: 0,\n locus: type === _LOCUS_ID_ ? destination : null, // pass the locus object if present\n meetingInfoProvider: this.meetingInfo,\n destination,\n destinationType: type,\n },\n {\n // @ts-ignore\n parent: this.webex,\n }\n );\n\n this.meetingCollection.set(meeting);\n\n try {\n // if no participant has joined the scheduled meeting (meaning meeting is not active) and we get a locusEvent,\n // it means the meeting will start in 5-6 min. In that case, we want to fetchMeetingInfo\n // between 5 and 2 min (random between 3 minutes) before the meeting starts\n // to avoid a spike in traffic to the wbxappi service\n let waitingTime = 0;\n\n if (destination.meeting) {\n const {startTime} = destination.meeting;\n const startTimeDate = new Date(startTime);\n const startTimeDatestamp = startTimeDate.getTime();\n const timeToStart = startTimeDatestamp - Date.now();\n const maxWaitingTime = Math.max(\n Math.min(timeToStart, MAX_RANDOM_DELAY_FOR_MEETING_INFO),\n 0\n );\n\n waitingTime = Math.round(Math.random() * maxWaitingTime);\n }\n const isMeetingActive = !!destination.fullState?.active;\n // @ts-ignore\n const {enableUnifiedMeetings} = this.config.experimental;\n\n if (enableUnifiedMeetings && !isMeetingActive && useRandomDelayForInfo && waitingTime > 0) {\n meeting.fetchMeetingInfoTimeoutId = setTimeout(\n () => meeting.fetchMeetingInfo({}),\n waitingTime\n );\n meeting.parseMeetingInfo(undefined, destination);\n } else {\n await meeting.fetchMeetingInfo({});\n }\n } catch (err) {\n if (!(err instanceof CaptchaError) && !(err instanceof PasswordError)) {\n // if there is no meeting info we assume its a 1:1 call or wireless share\n LoggerProxy.logger.info(\n `Meetings:index#createMeeting --> Info Unable to fetch meeting info for ${destination}.`\n );\n LoggerProxy.logger.info(\n 'Meetings:index#createMeeting --> Info assuming this destination is a 1:1 or wireless share'\n );\n }\n LoggerProxy.logger.debug(\n `Meetings:index#createMeeting --> Debug ${err} fetching /meetingInfo for creation.`\n );\n } finally {\n // For type LOCUS_ID we need to parse the locus object to get the information\n // about the caller and callee\n // Meeting Added event will be created in `handleLocusEvent`\n if (type !== _LOCUS_ID_) {\n if (!meeting.sipUri) {\n meeting.setSipUri(destination);\n }\n\n // TODO: check if we have to move this to parser\n const meetingAddedType = MeetingsUtil.getMeetingAddedType(type);\n\n // We typically shouldn't need to trigger both and event and return a promise.\n // Is this a special case? We want to make the public API usage as simple as possible.\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'createMeeting',\n },\n EVENT_TRIGGERS.MEETING_ADDED,\n {\n meeting,\n type: meetingAddedType,\n }\n );\n }\n }\n\n return meeting;\n\n // Create the meeting calling the necessary service endpoints.\n\n // Internally, there are many more destinations:\n //\n // - locusID\n // - meetingURL\n // - globalMeetingID, e.g, *00*meetingID\n // - meetingID\n // - meetingURL\n // - PSTN\n // - phone number\n //\n // Our job is to determine the appropriate one\n // and its corresponding service so that developers\n // need only sipURL or spaceID to get a meeting\n // and its ID, but have the option to use createWithType()\n // and specify those types to get meetingInfo\n }\n\n /**\n * get a specifc meeting given it's type matched to the value, i.e., locus url\n * @param {String} type\n * @param {Object} value\n * @returns {Meeting}\n * @public\n * @memberof Meetings\n */\n public getMeetingByType(type: string, value: object) {\n return this.meetingCollection.getByKey(type, value);\n }\n\n /**\n * Get all meetings.\n * @param {object} options\n * @param {object} options.startDate - get meetings after this start date\n * @param {object} options.endDate - get meetings before this end date\n * @returns {Object} All currently active meetings.\n * @public\n * @memberof Meetings\n */\n public getAllMeetings(\n options: {\n startDate: object;\n endDate: object;\n } = {} as any\n ) {\n // Options may include other parameters to filter this collection\n // of meetings.\n return this.meetingCollection.getAll(options);\n }\n\n /**\n * syncs all the meeting from server\n * @returns {undefined}\n * @public\n * @memberof Meetings\n */\n public syncMeetings() {\n return this.request.getActiveMeetings().then((locusArray) => {\n const activeLocusUrl = [];\n\n if (locusArray?.loci && locusArray.loci.length > 0) {\n locusArray.loci.forEach((locus) => {\n activeLocusUrl.push(locus.url);\n this.handleLocusEvent({\n locus,\n locusUrl: locus.url,\n });\n });\n }\n const meetingsCollection = this.meetingCollection.getAll();\n\n if (Object.keys(meetingsCollection).length > 0) {\n // Some time the mercury event is missed after mercury reconnect\n // if sync returns no locus then clear all the meetings\n for (const meeting of Object.values(meetingsCollection)) {\n // @ts-ignore\n if (!activeLocusUrl.includes(meeting.locusUrl)) {\n // destroy function also uploads logs\n // @ts-ignore\n this.destroy(meeting, MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);\n }\n }\n }\n });\n }\n\n /**\n * Get all scheduled meetings.\n * @param {object} options\n * @param {object} options.startDate - get meetings after this start date\n * @param {object} options.endDate - get meetings before this end date\n * @returns {Object} All scheduled meetings.\n * @memberof Meetings\n */\n getScheduledMeetings() {\n return this.meetingCollection.getAll({scheduled: true});\n }\n\n /**\n * Get the logger instance for plugin-meetings\n * @returns {Logger}\n */\n getLogger() {\n return LoggerProxy.get();\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.53.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -39,15 +39,17 @@
|
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@babel/core": "^7.17.10",
|
|
41
41
|
"@types/jsdom": "^21",
|
|
42
|
-
"@webex/babel-config-legacy": "2.
|
|
43
|
-
"@webex/eslint-config-legacy": "2.
|
|
44
|
-
"@webex/jest-config-legacy": "2.
|
|
45
|
-
"@webex/legacy-tools": "2.
|
|
46
|
-
"@webex/
|
|
47
|
-
"@webex/
|
|
48
|
-
"@webex/test-helper-
|
|
49
|
-
"@webex/test-helper-
|
|
50
|
-
"@webex/test-helper-
|
|
42
|
+
"@webex/babel-config-legacy": "2.53.1",
|
|
43
|
+
"@webex/eslint-config-legacy": "2.53.1",
|
|
44
|
+
"@webex/jest-config-legacy": "2.53.1",
|
|
45
|
+
"@webex/legacy-tools": "2.53.1",
|
|
46
|
+
"@webex/plugin-meetings": "2.53.1",
|
|
47
|
+
"@webex/plugin-rooms": "2.53.1",
|
|
48
|
+
"@webex/test-helper-chai": "2.53.1",
|
|
49
|
+
"@webex/test-helper-mocha": "2.53.1",
|
|
50
|
+
"@webex/test-helper-mock-webex": "2.53.1",
|
|
51
|
+
"@webex/test-helper-retry": "2.53.1",
|
|
52
|
+
"@webex/test-helper-test-users": "2.53.1",
|
|
51
53
|
"chai": "^4.3.4",
|
|
52
54
|
"chai-as-promised": "^7.1.1",
|
|
53
55
|
"eslint": "^8.24.0",
|
|
@@ -58,18 +60,15 @@
|
|
|
58
60
|
"typescript": "^4.7.4"
|
|
59
61
|
},
|
|
60
62
|
"dependencies": {
|
|
61
|
-
"@webex/common": "2.
|
|
63
|
+
"@webex/common": "2.53.1",
|
|
62
64
|
"@webex/internal-media-core": "0.0.7-beta",
|
|
63
|
-
"@webex/internal-plugin-
|
|
64
|
-
"@webex/internal-plugin-
|
|
65
|
-
"@webex/internal-plugin-
|
|
66
|
-
"@webex/internal-plugin-
|
|
67
|
-
"@webex/
|
|
68
|
-
"@webex/internal-plugin-user": "2.52.13",
|
|
69
|
-
"@webex/plugin-people": "2.52.13",
|
|
70
|
-
"@webex/plugin-rooms": "2.52.13",
|
|
65
|
+
"@webex/internal-plugin-device": "2.53.1",
|
|
66
|
+
"@webex/internal-plugin-metrics": "2.53.1",
|
|
67
|
+
"@webex/internal-plugin-support": "2.53.1",
|
|
68
|
+
"@webex/internal-plugin-user": "2.53.1",
|
|
69
|
+
"@webex/plugin-people": "2.53.1",
|
|
71
70
|
"@webex/ts-sdp": "1.0.1",
|
|
72
|
-
"@webex/webex-core": "2.
|
|
71
|
+
"@webex/webex-core": "2.53.1",
|
|
73
72
|
"bowser": "^2.11.0",
|
|
74
73
|
"btoa": "^1.2.1",
|
|
75
74
|
"dotenv": "^4.0.0",
|
|
@@ -150,9 +150,9 @@ export default class MeetingInfoV2 {
|
|
|
150
150
|
return invitees;
|
|
151
151
|
};
|
|
152
152
|
|
|
153
|
-
return this.webex
|
|
154
|
-
.
|
|
155
|
-
.then((conversation) => {
|
|
153
|
+
return this.webex
|
|
154
|
+
.request(conversationUrl)
|
|
155
|
+
.then(({body: conversation}) => {
|
|
156
156
|
const body = {
|
|
157
157
|
title: conversation.displayName,
|
|
158
158
|
spaceUrl: conversation.url,
|
package/src/meeting-info/util.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {deconstructHydraId} from '@webex/common';
|
|
|
6
6
|
|
|
7
7
|
import ParameterError from '../common/errors/parameter';
|
|
8
8
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
9
|
+
|
|
9
10
|
import {
|
|
10
11
|
_SIP_URI_,
|
|
11
12
|
_PERSONAL_ROOM_,
|
|
@@ -219,12 +220,16 @@ MeetingInfoUtil.generateOptions = async (from) => {
|
|
|
219
220
|
try {
|
|
220
221
|
await webex.internal.services.waitForCatalog('postauth');
|
|
221
222
|
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
223
|
+
const serviceUrl = webex.internal.services.getServiceUrlFromClusterId(
|
|
224
|
+
{
|
|
225
|
+
cluster: hydraId.cluster,
|
|
226
|
+
},
|
|
227
|
+
webex
|
|
228
|
+
);
|
|
226
229
|
|
|
227
|
-
options.destination =
|
|
230
|
+
options.destination = hydraId.destination
|
|
231
|
+
? `${serviceUrl}/conversations/${hydraId.destination}`
|
|
232
|
+
: serviceUrl;
|
|
228
233
|
} catch (e) {
|
|
229
234
|
LoggerProxy.logger.error(`Meeting-info:util#generateOptions --> ${e}`);
|
|
230
235
|
throw e;
|
|
@@ -156,7 +156,13 @@ MeetingInfoUtil.getDestinationType = async (from) => {
|
|
|
156
156
|
};
|
|
157
157
|
}
|
|
158
158
|
const options: any = {};
|
|
159
|
-
|
|
159
|
+
let hydraId;
|
|
160
|
+
|
|
161
|
+
if (webex && webex.config && webex.config.meetings && webex.config.meetings.disableHydraId) {
|
|
162
|
+
hydraId = null;
|
|
163
|
+
} else {
|
|
164
|
+
hydraId = MeetingInfoUtil.getHydraId(destination);
|
|
165
|
+
}
|
|
160
166
|
|
|
161
167
|
if (MeetingInfoUtil.isMeetingLink(destination)) {
|
|
162
168
|
LoggerProxy.logger.warn(
|
|
@@ -174,30 +180,36 @@ MeetingInfoUtil.getDestinationType = async (from) => {
|
|
|
174
180
|
} else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
|
|
175
181
|
options.type = _CONVERSATION_URL_;
|
|
176
182
|
options.destination = destination;
|
|
177
|
-
} else if (hydraId.people) {
|
|
183
|
+
} else if (hydraId && hydraId.people) {
|
|
178
184
|
options.type = _SIP_URI_;
|
|
179
185
|
|
|
180
|
-
return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then(
|
|
181
|
-
|
|
186
|
+
return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId && hydraId.destination, webex).then(
|
|
187
|
+
(res) => {
|
|
188
|
+
options.destination = res;
|
|
182
189
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
190
|
+
// Since hydra person ids require a unique case in which they are
|
|
191
|
+
// entirely converted to a SIP URI, we need to set a flag for detecting
|
|
192
|
+
// this type of destination.
|
|
193
|
+
options.wasHydraPerson = true;
|
|
187
194
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
195
|
+
return Promise.resolve(options);
|
|
196
|
+
}
|
|
197
|
+
);
|
|
198
|
+
} else if (hydraId && hydraId.room) {
|
|
191
199
|
options.type = _CONVERSATION_URL_;
|
|
192
200
|
try {
|
|
193
201
|
await webex.internal.services.waitForCatalog('postauth');
|
|
194
202
|
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
203
|
+
const serviceUrl = webex.internal.services.getServiceUrlFromClusterId(
|
|
204
|
+
{
|
|
205
|
+
cluster: hydraId.cluster,
|
|
206
|
+
},
|
|
207
|
+
webex
|
|
208
|
+
);
|
|
199
209
|
|
|
200
|
-
options.destination =
|
|
210
|
+
options.destination = hydraId.destination
|
|
211
|
+
? `${serviceUrl}/conversations/${hydraId.destination}`
|
|
212
|
+
: serviceUrl;
|
|
201
213
|
} catch (e) {
|
|
202
214
|
LoggerProxy.logger.error(`Meeting-info:util#getDestinationType --> ${e}`);
|
|
203
215
|
throw e;
|
package/src/meetings/index.ts
CHANGED
|
@@ -345,13 +345,17 @@ describe('plugin-meetings', () => {
|
|
|
345
345
|
ciUserUuid: conversation.participants.items[1].entryUUID,
|
|
346
346
|
});
|
|
347
347
|
|
|
348
|
+
webex.request.resolves({
|
|
349
|
+
statusCode: 200,
|
|
350
|
+
body: conversation
|
|
351
|
+
});
|
|
352
|
+
|
|
348
353
|
await meetingInfo.createAdhocSpaceMeeting(conversationUrl);
|
|
349
354
|
|
|
350
355
|
assert.calledWith(
|
|
351
|
-
webex.
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
);
|
|
356
|
+
webex.request,
|
|
357
|
+
conversationUrl,
|
|
358
|
+
)
|
|
355
359
|
|
|
356
360
|
assert.calledWith(webex.request, {
|
|
357
361
|
method: 'POST',
|