@webex/internal-plugin-dss 3.8.1-web-workers-keepalive.1 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dss.js +12 -3
- package/dist/dss.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +8 -8
- package/src/dss.ts +14 -1
- package/src/types.ts +3 -0
- package/test/unit/spec/dss.ts +46 -0
package/dist/dss.js
CHANGED
|
@@ -343,20 +343,29 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
343
343
|
* @param {SearchType[]} options.requestedTypes an array of search types from: PERSON, CALLING_SERVICE, EXTERNAL_CALLING, ROOM, ROBOT
|
|
344
344
|
* @param {string[]} options.queryString A query string that will be transformed into a Directory search filter query. It is used to search the following fields: username, givenName, familyName, displayName and email
|
|
345
345
|
* @param {number} options.resultSize The maximum number of results returned from each provider
|
|
346
|
+
* @param {boolean} options.includePersonalDevices If true, includes personal devices associated with users in the search results.
|
|
347
|
+
* @param {boolean} options.includeCommonAreaPhones If true, includes common area phones in the search results.
|
|
348
|
+
* @param {boolean} options.includeOnlyPairableDevices If true, include the devices that are pairable in the search results.
|
|
346
349
|
* @returns {Promise} Resolves with an array of entities found
|
|
347
350
|
* @throws {DssTimeoutError} when server does not respond in the specified timeframe
|
|
348
351
|
*/
|
|
349
352
|
search: function search(options) {
|
|
350
353
|
var requestedTypes = options.requestedTypes,
|
|
351
354
|
resultSize = options.resultSize,
|
|
352
|
-
queryString = options.queryString
|
|
355
|
+
queryString = options.queryString,
|
|
356
|
+
includeCommonAreaPhones = options.includeCommonAreaPhones,
|
|
357
|
+
includeOnlyPairableDevices = options.includeOnlyPairableDevices,
|
|
358
|
+
includePersonalDevices = options.includePersonalDevices;
|
|
353
359
|
return this._request({
|
|
354
360
|
dataPath: _constants.SEARCH_DATA_PATH,
|
|
355
361
|
resource: "/search/orgid/".concat(this.webex.internal.device.orgId, "/entities"),
|
|
356
362
|
params: {
|
|
357
363
|
queryString: queryString,
|
|
358
364
|
resultSize: resultSize,
|
|
359
|
-
requestedTypes: requestedTypes
|
|
365
|
+
requestedTypes: requestedTypes,
|
|
366
|
+
includeCommonAreaPhones: includeCommonAreaPhones,
|
|
367
|
+
includeOnlyPairableDevices: includeOnlyPairableDevices,
|
|
368
|
+
includePersonalDevices: includePersonalDevices
|
|
360
369
|
}
|
|
361
370
|
}).then(function (_ref4) {
|
|
362
371
|
var resultArray = _ref4.resultArray;
|
|
@@ -388,7 +397,7 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
388
397
|
return _promise.default.reject(error);
|
|
389
398
|
});
|
|
390
399
|
},
|
|
391
|
-
version: "3.
|
|
400
|
+
version: "3.9.0"
|
|
392
401
|
});
|
|
393
402
|
var _default = exports.default = DSS;
|
|
394
403
|
//# sourceMappingURL=dss.js.map
|
package/dist/dss.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","_interopRequireDefault","require","_webexCore","_lodash","_commonTimers","_constants","_dssBatcher","_dssErrors","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","DSS","WebexPlugin","extend","namespace","registered","initialize","_len","args","Array","_key","_apply","prototype","batchers","register","_this","webex","canAuthorize","logger","error","_promise","reject","Error","info","resolve","internal","mercury","connect","then","listenForEvents","trigger","DSS_REGISTERED","catch","concat","message","unregister","_this2","stopListeningForEvents","disconnect","DSS_UNREGISTERED","_this3","on","DSS_LOOKUP_MERCURY_EVENT","envelope","_handleEvent","data","DSS_SEARCH_MERCURY_EVENT","off","_getResultEventName","requestId","DSS_RESULT","DSS_LOOKUP_RESULT","_request","options","_this4","resource","params","dataPath","foundPath","notFoundPath","timeout","config","requestTimeout","uuid","v4","eventName","result","expectedSeqNums","notFoundArray","timer","Timer","stopListening","DssTimeoutError","listenTo","reset","resultData","get","found","sequence","finished","range","map","String","done","isEqual","_keys","cancel","resultArray","foundArray","index","seqResult","_toConsumableArray2","resolveValue","request","service","DSS_SERVICE_NAME","method","contentType","body","start","_batchedLookup","lookupValue","LOOKUP_DATA_PATH","entitiesFoundPath","LOOKUP_FOUND_PATH","entitiesNotFoundPath","LOOKUP_NOT_FOUND_PATH","requestKey","LOOKUP_REQUEST_KEY","DssBatcher","parent","lookupDetail","id","device","orgId","_ref","lookup","entityProviderType","_options$shouldBatch","shouldBatch","_ref2","lookupByEmail","email","_ref3","search","requestedTypes","resultSize","queryString","SEARCH_DATA_PATH","_ref4","searchPlaces","_this5","isOnlySchedulableRooms","version","_default","exports"],"sources":["dss.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/*!\n * Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.\n */\n/* eslint-disable no-underscore-dangle */\nimport uuid from 'uuid';\nimport {WebexPlugin} from '@webex/webex-core';\nimport '@webex/internal-plugin-mercury';\nimport {range, isEqual, get} from 'lodash';\n\nimport {Timer} from '@webex/common-timers';\nimport type {\n SearchOptions,\n LookupDetailOptions,\n LookupOptions,\n LookupByEmailOptions,\n SearchPlaceOptions,\n} from './types';\nimport {\n DSS_REGISTERED,\n DSS_UNREGISTERED,\n DSS_LOOKUP_MERCURY_EVENT,\n DSS_LOOKUP_RESULT,\n DSS_SERVICE_NAME,\n DSS_SEARCH_MERCURY_EVENT,\n DSS_RESULT,\n LOOKUP_DATA_PATH,\n LOOKUP_FOUND_PATH,\n LOOKUP_NOT_FOUND_PATH,\n LOOKUP_REQUEST_KEY,\n SEARCH_DATA_PATH,\n} from './constants';\nimport DssBatcher from './dss-batcher';\nimport {DssTimeoutError} from './dss-errors';\nimport {BatcherOptions, RequestOptions, RequestResult} from './types';\n\nconst DSS = WebexPlugin.extend({\n namespace: 'DSS',\n\n /**\n * registered value indicating events registration is successful\n * @instance\n * @type {Boolean}\n * @memberof DSS\n */\n registered: false,\n\n /**\n * Initializer\n * @private\n * @param {Object} attrs\n * @param {Object} options\n * @returns {undefined}\n */\n initialize(...args) {\n Reflect.apply(WebexPlugin.prototype.initialize, this, args);\n this.batchers = {};\n },\n\n /**\n * Explicitly sets up the DSS plugin by connecting to mercury, and listening for DSS events.\n * @returns {Promise}\n * @public\n * @memberof DSS\n */\n register() {\n if (!this.webex.canAuthorize) {\n this.logger.error('DSS->register#ERROR, Unable to register, SDK cannot authorize');\n\n return Promise.reject(new Error('SDK cannot authorize'));\n }\n\n if (this.registered) {\n this.logger.info('dss->register#INFO, DSS plugin already registered');\n\n return Promise.resolve();\n }\n\n return this.webex.internal.mercury\n .connect()\n .then(() => {\n this.listenForEvents();\n this.trigger(DSS_REGISTERED);\n this.registered = true;\n })\n .catch((error) => {\n this.logger.error(`DSS->register#ERROR, Unable to register, ${error.message}`);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Explicitly tears down the DSS plugin by disconnecting from mercury, and stops listening to DSS events\n * @returns {Promise}\n * @public\n * @memberof DSS\n */\n unregister() {\n if (!this.registered) {\n this.logger.info('DSS->unregister#INFO, DSS plugin already unregistered');\n\n return Promise.resolve();\n }\n\n this.stopListeningForEvents();\n\n return this.webex.internal.mercury.disconnect().then(() => {\n this.trigger(DSS_UNREGISTERED);\n this.registered = false;\n });\n },\n\n /**\n * registers for DSS events through mercury\n * @returns {undefined}\n * @private\n */\n listenForEvents() {\n this.webex.internal.mercury.on(DSS_LOOKUP_MERCURY_EVENT, (envelope) => {\n this._handleEvent(envelope.data);\n });\n this.webex.internal.mercury.on(DSS_SEARCH_MERCURY_EVENT, (envelope) => {\n this._handleEvent(envelope.data);\n });\n },\n\n /**\n * unregisteres all the DSS events from mercury\n * @returns {undefined}\n * @private\n */\n stopListeningForEvents() {\n this.webex.internal.mercury.off(DSS_LOOKUP_MERCURY_EVENT);\n this.webex.internal.mercury.off(DSS_SEARCH_MERCURY_EVENT);\n },\n\n /**\n * constructs the event name based on request id\n * @param {UUID} requestId the id of the request\n * @returns {string}\n */\n _getResultEventName(requestId) {\n return `${DSS_RESULT}${requestId}`;\n },\n\n /**\n * Takes incoming data and triggers correct events\n * @param {Object} data the event data\n * @returns {undefined}\n */\n _handleEvent(data) {\n this.trigger(this._getResultEventName(data.requestId), data);\n this.trigger(DSS_LOOKUP_RESULT, data);\n },\n\n /**\n * Makes the request to the directory service\n * @param {Object} options\n * @param {string} options.resource the URL to query\n * @param {Mixed} options.params additional params for the body of the request\n * @param {string} options.dataPath the path to get the data in the result object\n * @param {string} [options.foundPath] the path to get the lookups of the found data\n * @param {string} [options.notFoundPath] the path to get the lookups of the not found data\n * @returns {Promise<Object>} result Resolves with an object\n * @returns {Array} result.resultArray an array of entities found\n * @returns {Array} result.foundArray an array of the lookups of the found entities (if foundPath provided)\n * @returns {Array} result.notFoundArray an array of the lookups of the not found entities (if notFoundPath provided)\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n _request(options: RequestOptions): Promise<RequestResult> {\n const {resource, params, dataPath, foundPath, notFoundPath} = options;\n\n const timeout = this.config.requestTimeout;\n const requestId = uuid.v4();\n const eventName = this._getResultEventName(requestId);\n const result = {};\n let expectedSeqNums: string[];\n let notFoundArray: unknown[];\n\n return new Promise((resolve, reject) => {\n const timer = new Timer(() => {\n this.stopListening(this, eventName);\n reject(new DssTimeoutError({requestId, timeout, resource, params}));\n }, timeout);\n\n this.listenTo(this, eventName, (data) => {\n timer.reset();\n const resultData = get(data, dataPath, []);\n let found;\n\n if (foundPath) {\n found = get(data, foundPath, []);\n }\n result[data.sequence] = foundPath ? {resultData, found} : {resultData};\n\n if (data.finished) {\n expectedSeqNums = range(data.sequence + 1).map(String);\n if (notFoundPath) {\n notFoundArray = get(data, notFoundPath, []);\n }\n }\n\n const done = isEqual(expectedSeqNums, Object.keys(result));\n\n if (done) {\n timer.cancel();\n\n const resultArray: any[] = [];\n const foundArray: any[] = [];\n\n expectedSeqNums.forEach((index) => {\n const seqResult = result[index];\n\n if (seqResult) {\n resultArray.push(...seqResult.resultData);\n if (foundPath) {\n foundArray.push(...seqResult.found);\n }\n }\n });\n const resolveValue: RequestResult = {\n resultArray,\n };\n\n if (foundPath) {\n resolveValue.foundArray = foundArray;\n }\n if (notFoundPath) {\n resolveValue.notFoundArray = notFoundArray;\n }\n resolve(resolveValue);\n this.stopListening(this, eventName);\n }\n });\n this.webex.request({\n service: DSS_SERVICE_NAME,\n resource,\n method: 'POST',\n contentType: 'application/json',\n body: {requestId, ...params},\n });\n timer.start();\n });\n },\n\n /**\n * Uses a batcher to make the request to the directory service\n * @param {Object} options\n * @param {string} options.resource the URL to query\n * @param {string} options.value the id or email to lookup\n * @returns {Promise} Resolves with an array of entities found\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n _batchedLookup(options: BatcherOptions) {\n const {resource, lookupValue} = options;\n const dataPath = LOOKUP_DATA_PATH;\n const entitiesFoundPath = LOOKUP_FOUND_PATH;\n const entitiesNotFoundPath = LOOKUP_NOT_FOUND_PATH;\n const requestKey = LOOKUP_REQUEST_KEY;\n\n this.batchers[resource] =\n this.batchers[resource] ||\n new DssBatcher({\n resource,\n dataPath,\n entitiesFoundPath,\n entitiesNotFoundPath,\n requestKey,\n parent: this,\n });\n\n return this.batchers[resource].request(lookupValue);\n },\n\n /**\n * Retrieves detailed information about an entity\n * @param {Object} options\n * @param {UUID} options.id the id of the entity to lookup\n * @returns {Promise} Resolves with the entity found or null if not found\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n lookupDetail(options: LookupDetailOptions) {\n const {id} = options;\n\n const resource = `/lookup/orgid/${this.webex.internal.device.orgId}/identity/${id}/detail`;\n\n return this._request({\n dataPath: LOOKUP_DATA_PATH,\n foundPath: LOOKUP_FOUND_PATH,\n resource,\n }).then(({resultArray, foundArray}) => {\n // TODO: find out what is actually returned!\n if (foundArray[0] === id) {\n return resultArray[0];\n }\n\n return null;\n });\n },\n\n /**\n * Retrieves basic information about an entity within an organization\n * @param {Object} options\n * @param {UUID} options.id the id of the entity to lookup\n * @param {UUID} [options.entityProviderType] the provider to query\n * @param {Boolean} options.shouldBatch whether to batch the query, set to false for single immediate result (defaults to true)\n * @returns {Promise} Resolves with the entity found or null if not found\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n lookup(options: LookupOptions) {\n const {id, entityProviderType, shouldBatch = true} = options;\n\n const resource = entityProviderType\n ? `/lookup/orgid/${this.webex.internal.device.orgId}/entityprovidertype/${entityProviderType}`\n : `/lookup/orgid/${this.webex.internal.device.orgId}/identities`;\n\n if (shouldBatch) {\n return this._batchedLookup({\n resource,\n lookupValue: id,\n });\n }\n\n return this._request({\n dataPath: LOOKUP_DATA_PATH,\n foundPath: LOOKUP_FOUND_PATH,\n resource,\n params: {\n [LOOKUP_REQUEST_KEY]: [id],\n },\n }).then(({resultArray, foundArray}) => {\n if (foundArray[0] === id) {\n return resultArray[0];\n }\n\n return null;\n });\n },\n\n /**\n * Retrieves basic information about an enitity within an organization\n * @param {Object} options\n * @param {UUID} options.email the email of the entity to lookup\n * @returns {Promise} Resolves with the entity found or rejects if not found\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n lookupByEmail(options: LookupByEmailOptions) {\n const {email} = options;\n const resource = `/lookup/orgid/${this.webex.internal.device.orgId}/emails`;\n\n return this._request({\n dataPath: LOOKUP_DATA_PATH,\n foundPath: LOOKUP_FOUND_PATH,\n resource,\n params: {\n [LOOKUP_REQUEST_KEY]: [email],\n },\n }).then(({resultArray, foundArray}) => {\n if (foundArray[0] === email) {\n return resultArray[0];\n }\n\n return null;\n });\n },\n\n /**\n * Search for information about entities\n * @param {Object} options\n * @param {SearchType[]} options.requestedTypes an array of search types from: PERSON, CALLING_SERVICE, EXTERNAL_CALLING, ROOM, ROBOT\n * @param {string[]} options.queryString A query string that will be transformed into a Directory search filter query. It is used to search the following fields: username, givenName, familyName, displayName and email\n * @param {number} options.resultSize The maximum number of results returned from each provider\n * @returns {Promise} Resolves with an array of entities found\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n search(options: SearchOptions) {\n const {requestedTypes, resultSize, queryString} = options;\n\n return this._request({\n dataPath: SEARCH_DATA_PATH,\n resource: `/search/orgid/${this.webex.internal.device.orgId}/entities`,\n params: {\n queryString,\n resultSize,\n requestedTypes,\n },\n }).then(({resultArray}) => resultArray);\n },\n\n /**\n * Search for information about places\n * @param {Object} options\n * @param {string} options.queryString A query string that will be transformed into a Directory search filter query. It is used to search the following fields: placeName, displayName.\n * @param {number} options.resultSize The maximum number of results returned from each provider\n * @returns {Promise} Resolves with an array of entities found\n */\n searchPlaces(options: SearchPlaceOptions) {\n const {resultSize, queryString, isOnlySchedulableRooms} = options;\n\n return this._request({\n dataPath: 'directoryEntities',\n resource: `/search/orgid/${this.webex.internal.device.orgId}/places`,\n params: {\n queryString,\n resultSize,\n isOnlySchedulableRooms,\n },\n }).catch((error) => {\n this.logger.error(`DSS->search place#ERROR, search place failure, ${error.message}`);\n\n return Promise.reject(error);\n });\n },\n});\n\nexport default DSS;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_uuid","_interopRequireDefault","require","_webexCore","_lodash","_commonTimers","_constants","_dssBatcher","_dssErrors","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","DSS","WebexPlugin","extend","namespace","registered","initialize","_len","args","Array","_key","_apply","prototype","batchers","register","_this","webex","canAuthorize","logger","error","_promise","reject","Error","info","resolve","internal","mercury","connect","then","listenForEvents","trigger","DSS_REGISTERED","catch","concat","message","unregister","_this2","stopListeningForEvents","disconnect","DSS_UNREGISTERED","_this3","on","DSS_LOOKUP_MERCURY_EVENT","envelope","_handleEvent","data","DSS_SEARCH_MERCURY_EVENT","off","_getResultEventName","requestId","DSS_RESULT","DSS_LOOKUP_RESULT","_request","options","_this4","resource","params","dataPath","foundPath","notFoundPath","timeout","config","requestTimeout","uuid","v4","eventName","result","expectedSeqNums","notFoundArray","timer","Timer","stopListening","DssTimeoutError","listenTo","reset","resultData","get","found","sequence","finished","range","map","String","done","isEqual","_keys","cancel","resultArray","foundArray","index","seqResult","_toConsumableArray2","resolveValue","request","service","DSS_SERVICE_NAME","method","contentType","body","start","_batchedLookup","lookupValue","LOOKUP_DATA_PATH","entitiesFoundPath","LOOKUP_FOUND_PATH","entitiesNotFoundPath","LOOKUP_NOT_FOUND_PATH","requestKey","LOOKUP_REQUEST_KEY","DssBatcher","parent","lookupDetail","id","device","orgId","_ref","lookup","entityProviderType","_options$shouldBatch","shouldBatch","_ref2","lookupByEmail","email","_ref3","search","requestedTypes","resultSize","queryString","includeCommonAreaPhones","includeOnlyPairableDevices","includePersonalDevices","SEARCH_DATA_PATH","_ref4","searchPlaces","_this5","isOnlySchedulableRooms","version","_default","exports"],"sources":["dss.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/*!\n * Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.\n */\n/* eslint-disable no-underscore-dangle */\nimport uuid from 'uuid';\nimport {WebexPlugin} from '@webex/webex-core';\nimport '@webex/internal-plugin-mercury';\nimport {range, isEqual, get} from 'lodash';\n\nimport {Timer} from '@webex/common-timers';\nimport type {\n SearchOptions,\n LookupDetailOptions,\n LookupOptions,\n LookupByEmailOptions,\n SearchPlaceOptions,\n} from './types';\nimport {\n DSS_REGISTERED,\n DSS_UNREGISTERED,\n DSS_LOOKUP_MERCURY_EVENT,\n DSS_LOOKUP_RESULT,\n DSS_SERVICE_NAME,\n DSS_SEARCH_MERCURY_EVENT,\n DSS_RESULT,\n LOOKUP_DATA_PATH,\n LOOKUP_FOUND_PATH,\n LOOKUP_NOT_FOUND_PATH,\n LOOKUP_REQUEST_KEY,\n SEARCH_DATA_PATH,\n} from './constants';\nimport DssBatcher from './dss-batcher';\nimport {DssTimeoutError} from './dss-errors';\nimport {BatcherOptions, RequestOptions, RequestResult} from './types';\n\nconst DSS = WebexPlugin.extend({\n namespace: 'DSS',\n\n /**\n * registered value indicating events registration is successful\n * @instance\n * @type {Boolean}\n * @memberof DSS\n */\n registered: false,\n\n /**\n * Initializer\n * @private\n * @param {Object} attrs\n * @param {Object} options\n * @returns {undefined}\n */\n initialize(...args) {\n Reflect.apply(WebexPlugin.prototype.initialize, this, args);\n this.batchers = {};\n },\n\n /**\n * Explicitly sets up the DSS plugin by connecting to mercury, and listening for DSS events.\n * @returns {Promise}\n * @public\n * @memberof DSS\n */\n register() {\n if (!this.webex.canAuthorize) {\n this.logger.error('DSS->register#ERROR, Unable to register, SDK cannot authorize');\n\n return Promise.reject(new Error('SDK cannot authorize'));\n }\n\n if (this.registered) {\n this.logger.info('dss->register#INFO, DSS plugin already registered');\n\n return Promise.resolve();\n }\n\n return this.webex.internal.mercury\n .connect()\n .then(() => {\n this.listenForEvents();\n this.trigger(DSS_REGISTERED);\n this.registered = true;\n })\n .catch((error) => {\n this.logger.error(`DSS->register#ERROR, Unable to register, ${error.message}`);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Explicitly tears down the DSS plugin by disconnecting from mercury, and stops listening to DSS events\n * @returns {Promise}\n * @public\n * @memberof DSS\n */\n unregister() {\n if (!this.registered) {\n this.logger.info('DSS->unregister#INFO, DSS plugin already unregistered');\n\n return Promise.resolve();\n }\n\n this.stopListeningForEvents();\n\n return this.webex.internal.mercury.disconnect().then(() => {\n this.trigger(DSS_UNREGISTERED);\n this.registered = false;\n });\n },\n\n /**\n * registers for DSS events through mercury\n * @returns {undefined}\n * @private\n */\n listenForEvents() {\n this.webex.internal.mercury.on(DSS_LOOKUP_MERCURY_EVENT, (envelope) => {\n this._handleEvent(envelope.data);\n });\n this.webex.internal.mercury.on(DSS_SEARCH_MERCURY_EVENT, (envelope) => {\n this._handleEvent(envelope.data);\n });\n },\n\n /**\n * unregisteres all the DSS events from mercury\n * @returns {undefined}\n * @private\n */\n stopListeningForEvents() {\n this.webex.internal.mercury.off(DSS_LOOKUP_MERCURY_EVENT);\n this.webex.internal.mercury.off(DSS_SEARCH_MERCURY_EVENT);\n },\n\n /**\n * constructs the event name based on request id\n * @param {UUID} requestId the id of the request\n * @returns {string}\n */\n _getResultEventName(requestId) {\n return `${DSS_RESULT}${requestId}`;\n },\n\n /**\n * Takes incoming data and triggers correct events\n * @param {Object} data the event data\n * @returns {undefined}\n */\n _handleEvent(data) {\n this.trigger(this._getResultEventName(data.requestId), data);\n this.trigger(DSS_LOOKUP_RESULT, data);\n },\n\n /**\n * Makes the request to the directory service\n * @param {Object} options\n * @param {string} options.resource the URL to query\n * @param {Mixed} options.params additional params for the body of the request\n * @param {string} options.dataPath the path to get the data in the result object\n * @param {string} [options.foundPath] the path to get the lookups of the found data\n * @param {string} [options.notFoundPath] the path to get the lookups of the not found data\n * @returns {Promise<Object>} result Resolves with an object\n * @returns {Array} result.resultArray an array of entities found\n * @returns {Array} result.foundArray an array of the lookups of the found entities (if foundPath provided)\n * @returns {Array} result.notFoundArray an array of the lookups of the not found entities (if notFoundPath provided)\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n _request(options: RequestOptions): Promise<RequestResult> {\n const {resource, params, dataPath, foundPath, notFoundPath} = options;\n\n const timeout = this.config.requestTimeout;\n const requestId = uuid.v4();\n const eventName = this._getResultEventName(requestId);\n const result = {};\n let expectedSeqNums: string[];\n let notFoundArray: unknown[];\n\n return new Promise((resolve, reject) => {\n const timer = new Timer(() => {\n this.stopListening(this, eventName);\n reject(new DssTimeoutError({requestId, timeout, resource, params}));\n }, timeout);\n\n this.listenTo(this, eventName, (data) => {\n timer.reset();\n const resultData = get(data, dataPath, []);\n let found;\n\n if (foundPath) {\n found = get(data, foundPath, []);\n }\n result[data.sequence] = foundPath ? {resultData, found} : {resultData};\n\n if (data.finished) {\n expectedSeqNums = range(data.sequence + 1).map(String);\n if (notFoundPath) {\n notFoundArray = get(data, notFoundPath, []);\n }\n }\n\n const done = isEqual(expectedSeqNums, Object.keys(result));\n\n if (done) {\n timer.cancel();\n\n const resultArray: any[] = [];\n const foundArray: any[] = [];\n\n expectedSeqNums.forEach((index) => {\n const seqResult = result[index];\n\n if (seqResult) {\n resultArray.push(...seqResult.resultData);\n if (foundPath) {\n foundArray.push(...seqResult.found);\n }\n }\n });\n const resolveValue: RequestResult = {\n resultArray,\n };\n\n if (foundPath) {\n resolveValue.foundArray = foundArray;\n }\n if (notFoundPath) {\n resolveValue.notFoundArray = notFoundArray;\n }\n resolve(resolveValue);\n this.stopListening(this, eventName);\n }\n });\n this.webex.request({\n service: DSS_SERVICE_NAME,\n resource,\n method: 'POST',\n contentType: 'application/json',\n body: {requestId, ...params},\n });\n timer.start();\n });\n },\n\n /**\n * Uses a batcher to make the request to the directory service\n * @param {Object} options\n * @param {string} options.resource the URL to query\n * @param {string} options.value the id or email to lookup\n * @returns {Promise} Resolves with an array of entities found\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n _batchedLookup(options: BatcherOptions) {\n const {resource, lookupValue} = options;\n const dataPath = LOOKUP_DATA_PATH;\n const entitiesFoundPath = LOOKUP_FOUND_PATH;\n const entitiesNotFoundPath = LOOKUP_NOT_FOUND_PATH;\n const requestKey = LOOKUP_REQUEST_KEY;\n\n this.batchers[resource] =\n this.batchers[resource] ||\n new DssBatcher({\n resource,\n dataPath,\n entitiesFoundPath,\n entitiesNotFoundPath,\n requestKey,\n parent: this,\n });\n\n return this.batchers[resource].request(lookupValue);\n },\n\n /**\n * Retrieves detailed information about an entity\n * @param {Object} options\n * @param {UUID} options.id the id of the entity to lookup\n * @returns {Promise} Resolves with the entity found or null if not found\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n lookupDetail(options: LookupDetailOptions) {\n const {id} = options;\n\n const resource = `/lookup/orgid/${this.webex.internal.device.orgId}/identity/${id}/detail`;\n\n return this._request({\n dataPath: LOOKUP_DATA_PATH,\n foundPath: LOOKUP_FOUND_PATH,\n resource,\n }).then(({resultArray, foundArray}) => {\n // TODO: find out what is actually returned!\n if (foundArray[0] === id) {\n return resultArray[0];\n }\n\n return null;\n });\n },\n\n /**\n * Retrieves basic information about an entity within an organization\n * @param {Object} options\n * @param {UUID} options.id the id of the entity to lookup\n * @param {UUID} [options.entityProviderType] the provider to query\n * @param {Boolean} options.shouldBatch whether to batch the query, set to false for single immediate result (defaults to true)\n * @returns {Promise} Resolves with the entity found or null if not found\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n lookup(options: LookupOptions) {\n const {id, entityProviderType, shouldBatch = true} = options;\n\n const resource = entityProviderType\n ? `/lookup/orgid/${this.webex.internal.device.orgId}/entityprovidertype/${entityProviderType}`\n : `/lookup/orgid/${this.webex.internal.device.orgId}/identities`;\n\n if (shouldBatch) {\n return this._batchedLookup({\n resource,\n lookupValue: id,\n });\n }\n\n return this._request({\n dataPath: LOOKUP_DATA_PATH,\n foundPath: LOOKUP_FOUND_PATH,\n resource,\n params: {\n [LOOKUP_REQUEST_KEY]: [id],\n },\n }).then(({resultArray, foundArray}) => {\n if (foundArray[0] === id) {\n return resultArray[0];\n }\n\n return null;\n });\n },\n\n /**\n * Retrieves basic information about an enitity within an organization\n * @param {Object} options\n * @param {UUID} options.email the email of the entity to lookup\n * @returns {Promise} Resolves with the entity found or rejects if not found\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n lookupByEmail(options: LookupByEmailOptions) {\n const {email} = options;\n const resource = `/lookup/orgid/${this.webex.internal.device.orgId}/emails`;\n\n return this._request({\n dataPath: LOOKUP_DATA_PATH,\n foundPath: LOOKUP_FOUND_PATH,\n resource,\n params: {\n [LOOKUP_REQUEST_KEY]: [email],\n },\n }).then(({resultArray, foundArray}) => {\n if (foundArray[0] === email) {\n return resultArray[0];\n }\n\n return null;\n });\n },\n\n /**\n * Search for information about entities\n * @param {Object} options\n * @param {SearchType[]} options.requestedTypes an array of search types from: PERSON, CALLING_SERVICE, EXTERNAL_CALLING, ROOM, ROBOT\n * @param {string[]} options.queryString A query string that will be transformed into a Directory search filter query. It is used to search the following fields: username, givenName, familyName, displayName and email\n * @param {number} options.resultSize The maximum number of results returned from each provider\n * @param {boolean} options.includePersonalDevices If true, includes personal devices associated with users in the search results.\n * @param {boolean} options.includeCommonAreaPhones If true, includes common area phones in the search results.\n * @param {boolean} options.includeOnlyPairableDevices If true, include the devices that are pairable in the search results.\n * @returns {Promise} Resolves with an array of entities found\n * @throws {DssTimeoutError} when server does not respond in the specified timeframe\n */\n search(options: SearchOptions) {\n const {\n requestedTypes,\n resultSize,\n queryString,\n includeCommonAreaPhones,\n includeOnlyPairableDevices,\n includePersonalDevices,\n } = options;\n\n return this._request({\n dataPath: SEARCH_DATA_PATH,\n resource: `/search/orgid/${this.webex.internal.device.orgId}/entities`,\n params: {\n queryString,\n resultSize,\n requestedTypes,\n includeCommonAreaPhones,\n includeOnlyPairableDevices,\n includePersonalDevices,\n },\n }).then(({resultArray}) => resultArray);\n },\n\n /**\n * Search for information about places\n * @param {Object} options\n * @param {string} options.queryString A query string that will be transformed into a Directory search filter query. It is used to search the following fields: placeName, displayName.\n * @param {number} options.resultSize The maximum number of results returned from each provider\n * @returns {Promise} Resolves with an array of entities found\n */\n searchPlaces(options: SearchPlaceOptions) {\n const {resultSize, queryString, isOnlySchedulableRooms} = options;\n\n return this._request({\n dataPath: 'directoryEntities',\n resource: `/search/orgid/${this.webex.internal.device.orgId}/places`,\n params: {\n queryString,\n resultSize,\n isOnlySchedulableRooms,\n },\n }).catch((error) => {\n this.logger.error(`DSS->search place#ERROR, search place failure, ${error.message}`);\n\n return Promise.reject(error);\n });\n },\n});\n\nexport default DSS;\n"],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EntityProviderType","exports","SearchType"],"sources":["types.ts"],"sourcesContent":["export interface RequestOptions {\n resource: string;\n dataPath: string;\n foundPath?: string;\n notFoundPath?: string;\n params?: Record<string, unknown>;\n}\n\nexport interface RequestResult {\n foundArray?: any[];\n notFoundArray?: any[];\n resultArray: any[];\n}\n\nexport interface LookupDetailOptions {\n id: string;\n}\n\nexport enum EntityProviderType {\n CI_USER = 'CI_USER',\n CI_MACHINE = 'CI_MACHINE',\n CONTACTS = 'CONTACTS',\n CSDM = 'CSDM',\n}\n\nexport interface LookupOptions {\n id: string;\n entityProviderType?: EntityProviderType;\n shouldBatch?: boolean;\n}\n\nexport interface LookupByEmailOptions {\n email: string;\n}\n\n// eslint-disable-next-line no-shadow\nexport enum SearchType {\n PERSON = 'PERSON',\n CALLING_SERVICE = 'CALLING_SERVICE',\n EXTERNAL_CALLING = 'EXTERNAL_CALLING',\n ROOM = 'ROOM',\n ROBOT = 'ROBOT',\n}\n\nexport interface SearchOptions {\n requestedTypes: SearchType[];\n resultSize: number;\n queryString: string;\n}\n\nexport interface BatcherOptions {\n resource: string;\n lookupValue: string;\n}\n\nexport interface SearchPlaceOptions {\n resultSize: number;\n queryString: string;\n isOnlySchedulableRooms: boolean;\n}\n"],"mappings":";;;;;;;IAkBYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAiB9B;AAAA,IACYE,UAAU,GAAAD,OAAA,CAAAC,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA"}
|
|
1
|
+
{"version":3,"names":["EntityProviderType","exports","SearchType"],"sources":["types.ts"],"sourcesContent":["export interface RequestOptions {\n resource: string;\n dataPath: string;\n foundPath?: string;\n notFoundPath?: string;\n params?: Record<string, unknown>;\n}\n\nexport interface RequestResult {\n foundArray?: any[];\n notFoundArray?: any[];\n resultArray: any[];\n}\n\nexport interface LookupDetailOptions {\n id: string;\n}\n\nexport enum EntityProviderType {\n CI_USER = 'CI_USER',\n CI_MACHINE = 'CI_MACHINE',\n CONTACTS = 'CONTACTS',\n CSDM = 'CSDM',\n}\n\nexport interface LookupOptions {\n id: string;\n entityProviderType?: EntityProviderType;\n shouldBatch?: boolean;\n}\n\nexport interface LookupByEmailOptions {\n email: string;\n}\n\n// eslint-disable-next-line no-shadow\nexport enum SearchType {\n PERSON = 'PERSON',\n CALLING_SERVICE = 'CALLING_SERVICE',\n EXTERNAL_CALLING = 'EXTERNAL_CALLING',\n ROOM = 'ROOM',\n ROBOT = 'ROBOT',\n}\n\nexport interface SearchOptions {\n requestedTypes: SearchType[];\n resultSize: number;\n queryString: string;\n includePersonalDevices?: boolean;\n includeCommonAreaPhones?: boolean;\n includeOnlyPairableDevices?: boolean;\n}\n\nexport interface BatcherOptions {\n resource: string;\n lookupValue: string;\n}\n\nexport interface SearchPlaceOptions {\n resultSize: number;\n queryString: string;\n isOnlySchedulableRooms: boolean;\n}\n"],"mappings":";;;;;;;IAkBYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAiB9B;AAAA,IACYE,UAAU,GAAAD,OAAA,CAAAC,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA"}
|
package/package.json
CHANGED
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
]
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@webex/common": "3.
|
|
24
|
-
"@webex/common-timers": "3.
|
|
25
|
-
"@webex/internal-plugin-mercury": "3.
|
|
26
|
-
"@webex/webex-core": "3.
|
|
23
|
+
"@webex/common": "3.9.0",
|
|
24
|
+
"@webex/common-timers": "3.9.0",
|
|
25
|
+
"@webex/internal-plugin-mercury": "3.9.0",
|
|
26
|
+
"@webex/webex-core": "3.9.0",
|
|
27
27
|
"lodash": "^4.17.21",
|
|
28
28
|
"uuid": "^3.3.2"
|
|
29
29
|
},
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
34
34
|
"@webex/jest-config-legacy": "0.0.0",
|
|
35
35
|
"@webex/legacy-tools": "0.0.0",
|
|
36
|
-
"@webex/test-helper-chai": "3.
|
|
37
|
-
"@webex/test-helper-mock-webex": "3.
|
|
38
|
-
"@webex/test-helper-test-users": "3.
|
|
36
|
+
"@webex/test-helper-chai": "3.9.0",
|
|
37
|
+
"@webex/test-helper-mock-webex": "3.9.0",
|
|
38
|
+
"@webex/test-helper-test-users": "3.9.0",
|
|
39
39
|
"eslint": "^8.24.0",
|
|
40
40
|
"prettier": "^2.7.1",
|
|
41
41
|
"sinon": "^9.2.4"
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"test:style": "eslint ./src/**/*.*",
|
|
50
50
|
"test:unit": "webex-legacy-tools test --unit --runner jest"
|
|
51
51
|
},
|
|
52
|
-
"version": "3.
|
|
52
|
+
"version": "3.9.0"
|
|
53
53
|
}
|
package/src/dss.ts
CHANGED
|
@@ -371,11 +371,21 @@ const DSS = WebexPlugin.extend({
|
|
|
371
371
|
* @param {SearchType[]} options.requestedTypes an array of search types from: PERSON, CALLING_SERVICE, EXTERNAL_CALLING, ROOM, ROBOT
|
|
372
372
|
* @param {string[]} options.queryString A query string that will be transformed into a Directory search filter query. It is used to search the following fields: username, givenName, familyName, displayName and email
|
|
373
373
|
* @param {number} options.resultSize The maximum number of results returned from each provider
|
|
374
|
+
* @param {boolean} options.includePersonalDevices If true, includes personal devices associated with users in the search results.
|
|
375
|
+
* @param {boolean} options.includeCommonAreaPhones If true, includes common area phones in the search results.
|
|
376
|
+
* @param {boolean} options.includeOnlyPairableDevices If true, include the devices that are pairable in the search results.
|
|
374
377
|
* @returns {Promise} Resolves with an array of entities found
|
|
375
378
|
* @throws {DssTimeoutError} when server does not respond in the specified timeframe
|
|
376
379
|
*/
|
|
377
380
|
search(options: SearchOptions) {
|
|
378
|
-
const {
|
|
381
|
+
const {
|
|
382
|
+
requestedTypes,
|
|
383
|
+
resultSize,
|
|
384
|
+
queryString,
|
|
385
|
+
includeCommonAreaPhones,
|
|
386
|
+
includeOnlyPairableDevices,
|
|
387
|
+
includePersonalDevices,
|
|
388
|
+
} = options;
|
|
379
389
|
|
|
380
390
|
return this._request({
|
|
381
391
|
dataPath: SEARCH_DATA_PATH,
|
|
@@ -384,6 +394,9 @@ const DSS = WebexPlugin.extend({
|
|
|
384
394
|
queryString,
|
|
385
395
|
resultSize,
|
|
386
396
|
requestedTypes,
|
|
397
|
+
includeCommonAreaPhones,
|
|
398
|
+
includeOnlyPairableDevices,
|
|
399
|
+
includePersonalDevices,
|
|
387
400
|
},
|
|
388
401
|
}).then(({resultArray}) => resultArray);
|
|
389
402
|
},
|
package/src/types.ts
CHANGED
|
@@ -46,6 +46,9 @@ export interface SearchOptions {
|
|
|
46
46
|
requestedTypes: SearchType[];
|
|
47
47
|
resultSize: number;
|
|
48
48
|
queryString: string;
|
|
49
|
+
includePersonalDevices?: boolean;
|
|
50
|
+
includeCommonAreaPhones?: boolean;
|
|
51
|
+
includeOnlyPairableDevices?: boolean;
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
export interface BatcherOptions {
|
package/test/unit/spec/dss.ts
CHANGED
|
@@ -780,6 +780,9 @@ describe('plugin-dss', () => {
|
|
|
780
780
|
queryString: 'query',
|
|
781
781
|
resultSize: 100,
|
|
782
782
|
requestedTypes: ['PERSON', 'ROBOT'],
|
|
783
|
+
includePersonalDevices: undefined,
|
|
784
|
+
includeCommonAreaPhones: undefined,
|
|
785
|
+
includeOnlyPairableDevices: undefined,
|
|
783
786
|
},
|
|
784
787
|
},
|
|
785
788
|
]);
|
|
@@ -799,6 +802,9 @@ describe('plugin-dss', () => {
|
|
|
799
802
|
requestedTypes: ['PERSON', 'ROBOT'],
|
|
800
803
|
resultSize: 100,
|
|
801
804
|
queryString: 'query',
|
|
805
|
+
includePersonalDevices: undefined,
|
|
806
|
+
includeCommonAreaPhones: undefined,
|
|
807
|
+
includeOnlyPairableDevices: undefined,
|
|
802
808
|
},
|
|
803
809
|
});
|
|
804
810
|
|
|
@@ -829,6 +835,9 @@ describe('plugin-dss', () => {
|
|
|
829
835
|
requestedTypes: ['PERSON', 'ROBOT'],
|
|
830
836
|
resultSize: 100,
|
|
831
837
|
queryString: 'query',
|
|
838
|
+
includePersonalDevices: undefined,
|
|
839
|
+
includeCommonAreaPhones: undefined,
|
|
840
|
+
includeOnlyPairableDevices: undefined,
|
|
832
841
|
},
|
|
833
842
|
});
|
|
834
843
|
|
|
@@ -858,6 +867,9 @@ describe('plugin-dss', () => {
|
|
|
858
867
|
requestedTypes: ['PERSON', 'ROBOT'],
|
|
859
868
|
resultSize: 100,
|
|
860
869
|
queryString: 'query',
|
|
870
|
+
includePersonalDevices: undefined,
|
|
871
|
+
includeCommonAreaPhones: undefined,
|
|
872
|
+
includeOnlyPairableDevices: undefined,
|
|
861
873
|
},
|
|
862
874
|
});
|
|
863
875
|
|
|
@@ -889,6 +901,9 @@ describe('plugin-dss', () => {
|
|
|
889
901
|
requestedTypes: ['PERSON', 'ROBOT'],
|
|
890
902
|
resultSize: 100,
|
|
891
903
|
queryString: 'query',
|
|
904
|
+
includePersonalDevices: undefined,
|
|
905
|
+
includeCommonAreaPhones: undefined,
|
|
906
|
+
includeOnlyPairableDevices: undefined,
|
|
892
907
|
},
|
|
893
908
|
});
|
|
894
909
|
|
|
@@ -911,6 +926,37 @@ describe('plugin-dss', () => {
|
|
|
911
926
|
'\n Params: {"queryString":"query","resultSize":100,"requestedTypes":["PERSON","ROBOT"]}'
|
|
912
927
|
);
|
|
913
928
|
});
|
|
929
|
+
|
|
930
|
+
it('passes optional flags correctly to _request', async () => {
|
|
931
|
+
webex.internal.device.orgId = 'userOrgId';
|
|
932
|
+
webex.internal.dss._request = sinon
|
|
933
|
+
.stub()
|
|
934
|
+
.returns(Promise.resolve({resultArray: 'optional return'}));
|
|
935
|
+
|
|
936
|
+
const result = await webex.internal.dss.search({
|
|
937
|
+
requestedTypes: ['ROOM'],
|
|
938
|
+
resultSize: 50,
|
|
939
|
+
queryString: 'test-query',
|
|
940
|
+
includeCommonAreaPhones: true,
|
|
941
|
+
includeOnlyPairableDevices: false,
|
|
942
|
+
includePersonalDevices: true,
|
|
943
|
+
});
|
|
944
|
+
|
|
945
|
+
expect(webex.internal.dss._request.getCall(0).args[0]).to.deep.equal({
|
|
946
|
+
dataPath: 'directoryEntities',
|
|
947
|
+
resource: '/search/orgid/userOrgId/entities',
|
|
948
|
+
params: {
|
|
949
|
+
queryString: 'test-query',
|
|
950
|
+
resultSize: 50,
|
|
951
|
+
requestedTypes: ['ROOM'],
|
|
952
|
+
includeCommonAreaPhones: true,
|
|
953
|
+
includeOnlyPairableDevices: false,
|
|
954
|
+
includePersonalDevices: true,
|
|
955
|
+
},
|
|
956
|
+
});
|
|
957
|
+
|
|
958
|
+
expect(result).to.equal('optional return');
|
|
959
|
+
});
|
|
914
960
|
});
|
|
915
961
|
|
|
916
962
|
describe('#_request', () => {
|