@webex/plugin-device-manager 3.0.0-beta.3 → 3.0.0-beta.300

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.
@@ -1 +1 @@
1
- {"version":3,"names":["DeviceManager","WebexPlugin","extend","namespace","_devicePendingPinChallenge","_pairedDevice","_boundSpace","initialize","webex","internal","mercury","on","data","_receiveDeviceUpdates","getAll","DeviceCollection","refresh","reset","request","api","resource","then","res","body","reject","_updateDeviceMetadata","items","devices","forEach","device","deviceInfo","machineType","LYRA_SPACE","lyra","space","get","catch","err","logger","error","set","search","options","searchQuery","Error","people","searchId","uuid","v4","searchType","searchEntity","includePeople","includeRooms","queryString","upsert","deviceId","id","identity","existingDevice","resolve","method","auxDevice","_decryptDeviceName","token","getAdvertisedEndpoint","advertiser","result","displayName","remove","requestPin","url","dev","occupants","pinChallenge","info","join","passType","verificationInitiation","pair","pin","unpair","leave","bindSpace","kmsResourceObjectUrl","bindConversation","unbindSpace","unbindConversation","getAudioState","putAudioState","audioState","mute","unmute","increaseVolume","decreaseVolume","setVolume","level","deviceArray","length","all","map","index","services","waitForCatalog","deviceClass","UC_CLOUD","updatedDevice","inDevice","metadata","encryptedUserAssignedName","encryptionKeyUrl","encryption","decryptText","decryptedDeviceName","undefined","userAssignedName","spaceUrl","substring","lastIndexOf","self","verified","productName","DEFAULT_PRODUCT_NAME","pairedDeviceId"],"sources":["device-manager.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {cloneDeep} from 'lodash';\nimport '@webex/internal-plugin-lyra';\nimport '@webex/internal-plugin-search';\nimport {WebexPlugin} from '@webex/webex-core';\nimport uuid from 'uuid';\n\nimport {LYRA_SPACE, UC_CLOUD, DEFAULT_PRODUCT_NAME} from './constants';\nimport DeviceCollection from './collection';\n\nconst DeviceManager = WebexPlugin.extend({\n namespace: 'DeviceManager',\n _devicePendingPinChallenge: null,\n _pairedDevice: null,\n _boundSpace: null,\n\n initialize() {\n // Lyra mercury events listener\n this.webex.internal.mercury.on('event:lyra.space_updated', ({data}) => {\n this._receiveDeviceUpdates(data);\n });\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n getAll() {\n return DeviceCollection.getAll();\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n refresh() {\n DeviceCollection.reset();\n\n return this.webex.request({\n api: 'wdm',\n resource: 'devices/auxiliary'\n })\n .then((res) => {\n if (!res.body) {\n return Promise.reject();\n }\n\n return this._updateDeviceMetadata(res.body.items)\n .then((devices) => {\n /* eslint-disable consistent-return */\n devices.forEach((device) => {\n if (device.deviceInfo &&\n device.deviceInfo.machineType === LYRA_SPACE) {\n return this.webex.internal.lyra.space.get(device.deviceInfo)\n .catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to receive device info', err);\n });\n }\n });\n /* eslint-enable consistent-return */\n res.body.items.forEach((device) => {\n DeviceCollection.set(device);\n });\n\n return this.getAll();\n });\n })\n .catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to fetch recent devices', err);\n });\n },\n\n /**\n * Search for a device by name\n * @param {Object} options\n * @param {string} options.searchQuery\n * @returns {Promise<Device>}\n */\n search(options) {\n if (!options || !options.searchQuery) {\n this.logger.error('DeviceManager#search: options.searchQuery is required');\n\n return Promise.reject(new Error('DeviceManager#search: options.searchQuery is required'));\n }\n\n return this.webex.internal.search.people({\n searchId: uuid.v4(),\n searchType: 'DEVICE_SEARCH',\n searchEntity: 'device',\n includePeople: false,\n includeRooms: true,\n queryString: options.searchQuery\n })\n .catch((err) => {\n this.logger.error('DeviceManager#search: failed to search a device', err);\n\n throw err;\n });\n },\n\n /**\n * Caches the device info and also registers to Redis for subsequent fetches\n * @param {Object} device\n * @param {string} device.id\n * @returns {deviceInfo}\n */\n upsert(device) {\n const deviceId = device.id || device.identity && device.identity.id;\n\n if (!deviceId) {\n this.logger.error('DeviceManager#upsert: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#upsert: device.id is required'));\n }\n this._pairedDevice = this._devicePendingPinChallenge;\n this._devicePendingPinChallenge = null;\n // check if the device is already existing, if so then merge else add\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n }\n\n // new device requested, add to wdm for subsequent retreivals\n return this.webex.request({\n api: 'wdm',\n method: 'PUT',\n resource: `devices/auxiliary/Room/${deviceId}`\n })\n .then((res) => {\n const auxDevice = res.body;\n\n return this._decryptDeviceName(auxDevice);\n })\n .then((device) => {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#upsert: failed to add/update a device', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Retreives device info of a particular device\n * @param {string} token\n * @returns {Promise<deviceInfo>}\n */\n get(token) {\n if (!token) {\n this.logger.error('DeviceManager#get: token is required');\n\n return Promise.reject(new Error('DeviceManager#get: token is required'));\n }\n let deviceInfo;\n\n return this.webex.internal.lyra.getAdvertisedEndpoint(token)\n .then((res) => {\n deviceInfo = res;\n\n return this.webex.internal.lyra.space.get({id: res.advertiser.id});\n })\n .then((result) => {\n // the deviceInfo doesn't have proper displayName, hence update\n // displayName on deviceInfo for search to work\n if (result && result.identity && result.identity.displayName) {\n deviceInfo.advertiser.displayName = result.identity.displayName;\n }\n\n return deviceInfo;\n })\n .catch((err) => {\n this.logger.error('DeviceManager#get: failed to get device info', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Unregisters the device from Redis, will not fetch in subsequent loads,\n * similar to space.deleteBinding()\n * @param {string} deviceId\n * @returns {Promise<deviceInfo>}\n */\n remove(deviceId) {\n if (!deviceId) {\n this.logger.error('DeviceManager#remove: deviceId is required');\n\n return Promise.reject(new Error('DeviceManager#remove: deviceId is required'));\n }\n\n return this.webex.request({\n method: 'delete',\n api: 'wdm',\n resource: `devices/auxiliary/${deviceId}`\n })\n .catch((error) => {\n this.logger.error('DeviceManager#remove: failed to remove the device', error);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Requests to display PIN on the device\n * @param {object} device\n * @param {object} options\n * @param {object} options.data\n * @returns {Promise<deviceInfo>}\n */\n requestPin(device, options = {}) {\n const deviceId = device.id || device.identity && device.identity.id;\n\n if (!deviceId) {\n this.logger.error('DeviceManager#requestPin: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#requestPin: device.id is required'));\n }\n const space = {id: deviceId, url: `/spaces/${deviceId}`};\n\n return this.webex.internal.lyra.space.get(space)\n .then((dev) => { // check if the space is pinChallenge capable\n if (dev && dev.occupants && dev.occupants.pinChallenge) {\n this.logger.info('DeviceManager#requestPin: space is PIN challenge capable');\n\n return this.webex.internal.lyra.space.join(space, {\n passType: 'MANUAL',\n verificationInitiation: 'PIN',\n data: options.data\n })\n .then(() => {\n this._devicePendingPinChallenge = dev;\n\n // return the actual device so that it can be upserted on successful\n // PIN exchange\n return dev;\n });\n }\n // pairs with the space if it's not PIN challenge capable\n this.logger.info('DeviceManager#requestPin: space is not PIN challenge capable, probably already occupied, will still return device info');\n\n return this.webex.internal.lyra.space.get(space)\n .then(() => Promise.resolve(dev));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#requestPin: device failed PIN challenge request', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * pairs the device with the user (manual pairing), also adds it to\n * user's recents list for subsequent fetches.\n * similar to space.join()\n * @param {object} options\n * @param {number} options.pin\n * @returns {Promise<deviceInfo>}\n */\n pair(options = {}) {\n if (!options.pin) {\n this.logger.error('DeviceManager#pair: options.pin is required');\n\n return Promise.reject(new Error('DeviceManager#pair: options.pin is required'));\n }\n if (this._devicePendingPinChallenge) {\n const space = {id: this._devicePendingPinChallenge.identity.id, url: `/spaces/${this._devicePendingPinChallenge.identity.id}`};\n\n return this.webex.internal.lyra.space.join(space, {\n passType: 'PIN_ANSWER',\n data: options.pin\n })\n .catch((err) => {\n this.logger.error('DeviceManager#pair: incorrect PIN, unable to pair ', err);\n\n return Promise.reject(err);\n })\n .then(() => this.upsert(this._devicePendingPinChallenge));\n }\n this.logger.error('DeviceManager#pair: no device to pair');\n\n return Promise.reject(new Error('DeviceManager#pair: no device to pair'));\n },\n\n /**\n * unpairs the device with the user (manual/ultrasonic pairing), but still\n * keeps in the recents list/does not remove from Redis\n * options.removeAllDevices will remove all associated devices to user\n * similar to space.leave()\n * @param {object} options\n * @param {boolean} options.removeAllDevices\n * @returns {Promise<deviceInfo>}\n */\n unpair(options = {}) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unpair: no device to unpair');\n\n return Promise.reject(new Error('DeviceManager#unpair: no device to unpair'));\n }\n const space = {url: `/spaces/${this._pairedDevice.identity.id}`};\n\n return this.webex.internal.lyra.space.leave(space, options)\n .catch((err) => {\n this.logger.error('DeviceManager#unpair: failed to remove device from Lyra', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * binds the space to the paired device (if supported)\n * similar to space.bindConversation()\n * @param {object} options\n * @param {boolean} options.url, conversation url\n * @param {boolean} options.kmsResourceObjectUrl of the convo\n * @returns {Promise<deviceInfo>}\n */\n bindSpace(options = {}) {\n if (!options.url) {\n this.logger.error('DeviceManager#pair: options.url is required');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: options.url is required'));\n }\n if (!options.kmsResourceObjectUrl) {\n this.logger.error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required'));\n }\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#bindSpace: No device paired currently');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: No device paired currently'));\n }\n const space = {url: `/spaces/${this._pairedDevice.identity.id}`, id: this._pairedDevice.identity.id};\n\n this._boundSpace = {\n kmsResourceObjectUrl: options.kmsResourceObjectUrl,\n url: options.url\n };\n\n return this.webex.internal.lyra.space.bindConversation(space, this._boundSpace)\n .catch((err) => {\n this.logger.error('DeviceManager#bindSpace: failed to bind device to Space');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * unbinds the space to the paired device (if supported)\n * similar to space.unbindConversation()\n * @returns {Promise<deviceInfo>}\n */\n unbindSpace() {\n if (!this._pairedDevice || !this._boundSpace) {\n this.logger.error('DeviceManager#unbindSpace: No space currently bound to the device');\n\n return Promise.reject(new Error('DeviceManager#unbindSpace: No space currently bound to the device'));\n }\n const space = {url: `/spaces/${this._pairedDevice.identity.id}`, id: this._pairedDevice.identity.id};\n\n return this.webex.internal.lyra.space.unbindConversation(space, this._boundSpace)\n .then((res) => {\n this._boundSpace = null;\n\n return Promise.resolve(res);\n })\n .catch((err) => {\n this.logger.error('DeviceManager#unbindSpace: failed to unbind Space to device');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Gets the audio state of the paired device\n * similar to device.getAudioState()\n * @returns {Promise<audioState>}\n */\n getAudioState() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#getAudioState: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#getAudioState: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.getAudioState(this._pairedDevice);\n },\n\n /**\n * Updates audio state of the paired device, should be called every 10 minutes\n * or when mic or volume state is changed\n * similar to device.putAudioState()\n * @param {object} space\n * @param {object} audioState\n * @returns {Promise<audioState>}\n */\n putAudioState(space, audioState = {}) {\n return this.webex.internal.lyra.device.putAudioState(space, audioState);\n },\n\n /**\n * Mutes paired device\n * similar to device.mute()\n * @returns {Promise<audioState>}\n */\n mute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#mute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#mute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.mute(this._pairedDevice);\n },\n\n /**\n * Unmutes paired device\n * similar to device.unmute()\n * @returns {Promise<audioState>}\n */\n unmute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unmute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#unmute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.unmute(this._pairedDevice);\n },\n\n /**\n * Increases paired device's volume\n * similar to device.increaseVolume()\n * @returns {Promise<audioState>}\n */\n increaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#increaseVolume: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#increaseVolume: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.increaseVolume(this._pairedDevice);\n },\n\n /**\n * Decreases paired device's volume\n * similar to device.decreaseVolume()\n * @returns {Promise<audioState>}\n */\n decreaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#decreaseVolume: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#decreaseVolume: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.decreaseVolume(this._pairedDevice);\n },\n\n /**\n * Sets paired device's volume but should use increase and decrease api instead\n * similar to device.setVolume()\n * @param {number} level\n * @returns {Promise<audioState>}\n */\n setVolume(level = 0) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#setVolume: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#setVolume: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.setVolume(this._pairedDevice, level);\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {Array} deviceArray\n * @returns {device}\n */\n _updateDeviceMetadata(deviceArray = []) {\n if (!deviceArray.length) {\n return Promise.resolve(deviceArray);\n }\n const devices = cloneDeep(deviceArray);\n\n return Promise.all(devices.map(\n (device, index) => this.webex.internal.services.waitForCatalog('postauth')\n .then(() => {\n if (device.deviceClass === UC_CLOUD) {\n device.id = `${this.webex.internal.services.get('wdm')}/${device.id}`;\n }\n\n return this._decryptDeviceName(device);\n })\n .then((updatedDevice) => {\n devices[index] = updatedDevice;\n\n return Promise.resolve();\n })\n ))\n .then(() => Promise.resolve(devices));\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {object} inDevice\n * @returns {device}\n */\n _decryptDeviceName(inDevice = {}) {\n const device = cloneDeep(inDevice);\n\n if (device.metadata &&\n device.metadata.encryptedUserAssignedName &&\n device.metadata.encryptionKeyUrl) {\n return this.webex.internal.encryption.decryptText(\n device.metadata.encryptionKeyUrl, device.metadata.encryptedUserAssignedName\n )\n .then((decryptedDeviceName) => {\n // set userAssignedName as the decypted value, unset encryptedUserAssignedName since it's not needed\n device.metadata.encryptedUserAssignedName = undefined;\n device.metadata.userAssignedName = decryptedDeviceName;\n\n return Promise.resolve(device);\n })\n .catch((err) => {\n // unset encryptedUserAssignedName if failed to decrypt\n device.metadata.encryptedUserAssignedName = undefined;\n this.logger.error('DeviceCollection#_decryptDeviceName: failed to decrypt device name', err);\n });\n }\n\n return Promise.resolve(device);\n },\n\n /**\n * Utility function to update device info on mercury updates\n * @param {object} device\n * @returns {device}\n */\n _receiveDeviceUpdates(device) {\n // we care only the updates are for the registered devices\n if (device && device.spaceUrl) {\n const deviceId = device.spaceUrl.substring(device.spaceUrl.lastIndexOf('/') + 1);\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n return this.webex.internal.lyra.space.get({id: deviceId})\n .then((space) => {\n const device = DeviceCollection.get(deviceId);\n\n if (device &&\n space.occupants &&\n (!space.occupants.self || !space.occupants.self.verified)) {\n device.productName = space.devices && space.devices[0] && space.devices[0].productName ||\n DEFAULT_PRODUCT_NAME;\n // pin challenge is not verified reset _pairedDevice if ids\n // match\n const pairedDeviceId = this._pairedDevice && (this._pairedDevice.id || this._pairedDevice.identity.id);\n\n if (pairedDeviceId === deviceId) {\n this._pairedDevice = null;\n this.logger.info(`DeviceManager#_receiveDeviceUpdates: device ${deviceId} lost pairing`);\n\n return Promise.resolve();\n }\n // we do not want to reset the device pending PIN challenge\n if (this._devicePendingPinChallenge.identity.id !== deviceId) {\n return this.upsert(device);\n }\n\n return Promise.resolve();\n }\n\n return Promise.resolve();\n })\n .catch((err) => {\n this.logger.error('DeviceManager#_receiveDeviceUpdates: failed to receive updates for Lyra space', err);\n });\n }\n }\n\n return Promise.resolve();\n }\n\n\n});\n\nexport default DeviceManager;\n"],"mappings":"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"}
1
+ {"version":3,"names":["DeviceManager","WebexPlugin","extend","namespace","_devicePendingPinChallenge","_pairedDevice","_boundSpace","initialize","webex","internal","mercury","on","data","_receiveDeviceUpdates","getAll","DeviceCollection","refresh","reset","request","api","resource","then","res","body","reject","_updateDeviceMetadata","items","devices","forEach","device","deviceInfo","machineType","LYRA_SPACE","lyra","space","get","catch","err","logger","error","set","search","options","searchQuery","Error","people","searchId","uuid","v4","searchType","searchEntity","includePeople","includeRooms","queryString","upsert","deviceId","id","identity","existingDevice","resolve","method","auxDevice","_decryptDeviceName","token","getAdvertisedEndpoint","advertiser","result","displayName","remove","requestPin","url","dev","occupants","pinChallenge","info","join","passType","verificationInitiation","pair","pin","unpair","leave","bindSpace","kmsResourceObjectUrl","bindConversation","unbindSpace","unbindConversation","getAudioState","putAudioState","audioState","mute","unmute","increaseVolume","decreaseVolume","setVolume","level","deviceArray","length","all","map","index","services","waitForCatalog","deviceClass","UC_CLOUD","updatedDevice","inDevice","metadata","encryptedUserAssignedName","encryptionKeyUrl","encryption","decryptText","decryptedDeviceName","undefined","userAssignedName","spaceUrl","substring","lastIndexOf","self","verified","productName","DEFAULT_PRODUCT_NAME","pairedDeviceId"],"sources":["device-manager.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {cloneDeep} from 'lodash';\nimport '@webex/internal-plugin-lyra';\nimport '@webex/internal-plugin-search';\nimport {WebexPlugin} from '@webex/webex-core';\nimport uuid from 'uuid';\n\nimport {LYRA_SPACE, UC_CLOUD, DEFAULT_PRODUCT_NAME} from './constants';\nimport DeviceCollection from './collection';\n\nconst DeviceManager = WebexPlugin.extend({\n namespace: 'DeviceManager',\n _devicePendingPinChallenge: null,\n _pairedDevice: null,\n _boundSpace: null,\n\n initialize() {\n // Lyra mercury events listener\n this.webex.internal.mercury.on('event:lyra.space_updated', ({data}) => {\n this._receiveDeviceUpdates(data);\n });\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n getAll() {\n return DeviceCollection.getAll();\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n refresh() {\n DeviceCollection.reset();\n\n return this.webex\n .request({\n api: 'wdm',\n resource: 'devices/auxiliary',\n })\n .then((res) => {\n if (!res.body) {\n return Promise.reject();\n }\n\n return this._updateDeviceMetadata(res.body.items).then((devices) => {\n /* eslint-disable consistent-return */\n devices.forEach((device) => {\n if (device.deviceInfo && device.deviceInfo.machineType === LYRA_SPACE) {\n return this.webex.internal.lyra.space.get(device.deviceInfo).catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to receive device info', err);\n });\n }\n });\n /* eslint-enable consistent-return */\n res.body.items.forEach((device) => {\n DeviceCollection.set(device);\n });\n\n return this.getAll();\n });\n })\n .catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to fetch recent devices', err);\n });\n },\n\n /**\n * Search for a device by name\n * @param {Object} options\n * @param {string} options.searchQuery\n * @returns {Promise<Device>}\n */\n search(options) {\n if (!options || !options.searchQuery) {\n this.logger.error('DeviceManager#search: options.searchQuery is required');\n\n return Promise.reject(new Error('DeviceManager#search: options.searchQuery is required'));\n }\n\n return this.webex.internal.search\n .people({\n searchId: uuid.v4(),\n searchType: 'DEVICE_SEARCH',\n searchEntity: 'device',\n includePeople: false,\n includeRooms: true,\n queryString: options.searchQuery,\n })\n .catch((err) => {\n this.logger.error('DeviceManager#search: failed to search a device', err);\n\n throw err;\n });\n },\n\n /**\n * Caches the device info and also registers to Redis for subsequent fetches\n * @param {Object} device\n * @param {string} device.id\n * @returns {deviceInfo}\n */\n upsert(device) {\n const deviceId = device.id || (device.identity && device.identity.id);\n\n if (!deviceId) {\n this.logger.error('DeviceManager#upsert: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#upsert: device.id is required'));\n }\n this._pairedDevice = this._devicePendingPinChallenge;\n this._devicePendingPinChallenge = null;\n // check if the device is already existing, if so then merge else add\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n }\n\n // new device requested, add to wdm for subsequent retreivals\n return (\n this.webex\n .request({\n api: 'wdm',\n method: 'PUT',\n resource: `devices/auxiliary/Room/${deviceId}`,\n })\n .then((res) => {\n const auxDevice = res.body;\n\n return this._decryptDeviceName(auxDevice);\n })\n // eslint-disable-next-line no-shadow\n .then((device) => {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#upsert: failed to add/update a device', err);\n\n return Promise.reject(err);\n })\n );\n },\n\n /**\n * Retreives device info of a particular device\n * @param {string} token\n * @returns {Promise<deviceInfo>}\n */\n get(token) {\n if (!token) {\n this.logger.error('DeviceManager#get: token is required');\n\n return Promise.reject(new Error('DeviceManager#get: token is required'));\n }\n let deviceInfo;\n\n return this.webex.internal.lyra\n .getAdvertisedEndpoint(token)\n .then((res) => {\n deviceInfo = res;\n\n return this.webex.internal.lyra.space.get({id: res.advertiser.id});\n })\n .then((result) => {\n // the deviceInfo doesn't have proper displayName, hence update\n // displayName on deviceInfo for search to work\n if (result && result.identity && result.identity.displayName) {\n deviceInfo.advertiser.displayName = result.identity.displayName;\n }\n\n return deviceInfo;\n })\n .catch((err) => {\n this.logger.error('DeviceManager#get: failed to get device info', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Unregisters the device from Redis, will not fetch in subsequent loads,\n * similar to space.deleteBinding()\n * @param {string} deviceId\n * @returns {Promise<deviceInfo>}\n */\n remove(deviceId) {\n if (!deviceId) {\n this.logger.error('DeviceManager#remove: deviceId is required');\n\n return Promise.reject(new Error('DeviceManager#remove: deviceId is required'));\n }\n\n return this.webex\n .request({\n method: 'delete',\n api: 'wdm',\n resource: `devices/auxiliary/${deviceId}`,\n })\n .catch((error) => {\n this.logger.error('DeviceManager#remove: failed to remove the device', error);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Requests to display PIN on the device\n * @param {object} device\n * @param {object} options\n * @param {object} options.data\n * @returns {Promise<deviceInfo>}\n */\n requestPin(device, options = {}) {\n const deviceId = device.id || (device.identity && device.identity.id);\n\n if (!deviceId) {\n this.logger.error('DeviceManager#requestPin: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#requestPin: device.id is required'));\n }\n const space = {id: deviceId, url: `/spaces/${deviceId}`};\n\n return this.webex.internal.lyra.space\n .get(space)\n .then((dev) => {\n // check if the space is pinChallenge capable\n if (dev && dev.occupants && dev.occupants.pinChallenge) {\n this.logger.info('DeviceManager#requestPin: space is PIN challenge capable');\n\n return this.webex.internal.lyra.space\n .join(space, {\n passType: 'MANUAL',\n verificationInitiation: 'PIN',\n data: options.data,\n })\n .then(() => {\n this._devicePendingPinChallenge = dev;\n\n // return the actual device so that it can be upserted on successful\n // PIN exchange\n return dev;\n });\n }\n // pairs with the space if it's not PIN challenge capable\n this.logger.info(\n 'DeviceManager#requestPin: space is not PIN challenge capable, probably already occupied, will still return device info'\n );\n\n return this.webex.internal.lyra.space.get(space).then(() => Promise.resolve(dev));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#requestPin: device failed PIN challenge request', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * pairs the device with the user (manual pairing), also adds it to\n * user's recents list for subsequent fetches.\n * similar to space.join()\n * @param {object} options\n * @param {number} options.pin\n * @returns {Promise<deviceInfo>}\n */\n pair(options = {}) {\n if (!options.pin) {\n this.logger.error('DeviceManager#pair: options.pin is required');\n\n return Promise.reject(new Error('DeviceManager#pair: options.pin is required'));\n }\n if (this._devicePendingPinChallenge) {\n const space = {\n id: this._devicePendingPinChallenge.identity.id,\n url: `/spaces/${this._devicePendingPinChallenge.identity.id}`,\n };\n\n return this.webex.internal.lyra.space\n .join(space, {\n passType: 'PIN_ANSWER',\n data: options.pin,\n })\n .catch((err) => {\n this.logger.error('DeviceManager#pair: incorrect PIN, unable to pair ', err);\n\n return Promise.reject(err);\n })\n .then(() => this.upsert(this._devicePendingPinChallenge));\n }\n this.logger.error('DeviceManager#pair: no device to pair');\n\n return Promise.reject(new Error('DeviceManager#pair: no device to pair'));\n },\n\n /**\n * unpairs the device with the user (manual/ultrasonic pairing), but still\n * keeps in the recents list/does not remove from Redis\n * options.removeAllDevices will remove all associated devices to user\n * similar to space.leave()\n * @param {object} options\n * @param {boolean} options.removeAllDevices\n * @returns {Promise<deviceInfo>}\n */\n unpair(options = {}) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unpair: no device to unpair');\n\n return Promise.reject(new Error('DeviceManager#unpair: no device to unpair'));\n }\n const space = {url: `/spaces/${this._pairedDevice.identity.id}`};\n\n return this.webex.internal.lyra.space.leave(space, options).catch((err) => {\n this.logger.error('DeviceManager#unpair: failed to remove device from Lyra', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * binds the space to the paired device (if supported)\n * similar to space.bindConversation()\n * @param {object} options\n * @param {boolean} options.url, conversation url\n * @param {boolean} options.kmsResourceObjectUrl of the convo\n * @returns {Promise<deviceInfo>}\n */\n bindSpace(options = {}) {\n if (!options.url) {\n this.logger.error('DeviceManager#pair: options.url is required');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: options.url is required'));\n }\n if (!options.kmsResourceObjectUrl) {\n this.logger.error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required');\n\n return Promise.reject(\n new Error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required')\n );\n }\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#bindSpace: No device paired currently');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: No device paired currently'));\n }\n const space = {\n url: `/spaces/${this._pairedDevice.identity.id}`,\n id: this._pairedDevice.identity.id,\n };\n\n this._boundSpace = {\n kmsResourceObjectUrl: options.kmsResourceObjectUrl,\n url: options.url,\n };\n\n return this.webex.internal.lyra.space.bindConversation(space, this._boundSpace).catch((err) => {\n this.logger.error('DeviceManager#bindSpace: failed to bind device to Space');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * unbinds the space to the paired device (if supported)\n * similar to space.unbindConversation()\n * @returns {Promise<deviceInfo>}\n */\n unbindSpace() {\n if (!this._pairedDevice || !this._boundSpace) {\n this.logger.error('DeviceManager#unbindSpace: No space currently bound to the device');\n\n return Promise.reject(\n new Error('DeviceManager#unbindSpace: No space currently bound to the device')\n );\n }\n const space = {\n url: `/spaces/${this._pairedDevice.identity.id}`,\n id: this._pairedDevice.identity.id,\n };\n\n return this.webex.internal.lyra.space\n .unbindConversation(space, this._boundSpace)\n .then((res) => {\n this._boundSpace = null;\n\n return Promise.resolve(res);\n })\n .catch((err) => {\n this.logger.error('DeviceManager#unbindSpace: failed to unbind Space to device');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Gets the audio state of the paired device\n * similar to device.getAudioState()\n * @returns {Promise<audioState>}\n */\n getAudioState() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#getAudioState: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#getAudioState: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.getAudioState(this._pairedDevice);\n },\n\n /**\n * Updates audio state of the paired device, should be called every 10 minutes\n * or when mic or volume state is changed\n * similar to device.putAudioState()\n * @param {object} space\n * @param {object} audioState\n * @returns {Promise<audioState>}\n */\n putAudioState(space, audioState = {}) {\n return this.webex.internal.lyra.device.putAudioState(space, audioState);\n },\n\n /**\n * Mutes paired device\n * similar to device.mute()\n * @returns {Promise<audioState>}\n */\n mute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#mute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#mute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.mute(this._pairedDevice);\n },\n\n /**\n * Unmutes paired device\n * similar to device.unmute()\n * @returns {Promise<audioState>}\n */\n unmute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unmute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#unmute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.unmute(this._pairedDevice);\n },\n\n /**\n * Increases paired device's volume\n * similar to device.increaseVolume()\n * @returns {Promise<audioState>}\n */\n increaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#increaseVolume: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#increaseVolume: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.increaseVolume(this._pairedDevice);\n },\n\n /**\n * Decreases paired device's volume\n * similar to device.decreaseVolume()\n * @returns {Promise<audioState>}\n */\n decreaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#decreaseVolume: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#decreaseVolume: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.decreaseVolume(this._pairedDevice);\n },\n\n /**\n * Sets paired device's volume but should use increase and decrease api instead\n * similar to device.setVolume()\n * @param {number} level\n * @returns {Promise<audioState>}\n */\n setVolume(level = 0) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#setVolume: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#setVolume: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.setVolume(this._pairedDevice, level);\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {Array} deviceArray\n * @returns {device}\n */\n _updateDeviceMetadata(deviceArray = []) {\n if (!deviceArray.length) {\n return Promise.resolve(deviceArray);\n }\n const devices = cloneDeep(deviceArray);\n\n return Promise.all(\n devices.map((device, index) =>\n this.webex.internal.services\n .waitForCatalog('postauth')\n .then(() => {\n if (device.deviceClass === UC_CLOUD) {\n device.id = `${this.webex.internal.services.get('wdm')}/${device.id}`;\n }\n\n return this._decryptDeviceName(device);\n })\n .then((updatedDevice) => {\n devices[index] = updatedDevice;\n\n return Promise.resolve();\n })\n )\n ).then(() => Promise.resolve(devices));\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {object} inDevice\n * @returns {device}\n */\n _decryptDeviceName(inDevice = {}) {\n const device = cloneDeep(inDevice);\n\n if (\n device.metadata &&\n device.metadata.encryptedUserAssignedName &&\n device.metadata.encryptionKeyUrl\n ) {\n return this.webex.internal.encryption\n .decryptText(device.metadata.encryptionKeyUrl, device.metadata.encryptedUserAssignedName)\n .then((decryptedDeviceName) => {\n // set userAssignedName as the decypted value, unset encryptedUserAssignedName since it's not needed\n device.metadata.encryptedUserAssignedName = undefined;\n device.metadata.userAssignedName = decryptedDeviceName;\n\n return Promise.resolve(device);\n })\n .catch((err) => {\n // unset encryptedUserAssignedName if failed to decrypt\n device.metadata.encryptedUserAssignedName = undefined;\n this.logger.error(\n 'DeviceCollection#_decryptDeviceName: failed to decrypt device name',\n err\n );\n });\n }\n\n return Promise.resolve(device);\n },\n\n /**\n * Utility function to update device info on mercury updates\n * @param {object} device\n * @returns {device}\n */\n _receiveDeviceUpdates(device) {\n // we care only the updates are for the registered devices\n if (device && device.spaceUrl) {\n const deviceId = device.spaceUrl.substring(device.spaceUrl.lastIndexOf('/') + 1);\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n return this.webex.internal.lyra.space\n .get({id: deviceId})\n .then((space) => {\n // eslint-disable-next-line no-shadow\n const device = DeviceCollection.get(deviceId);\n\n if (\n device &&\n space.occupants &&\n (!space.occupants.self || !space.occupants.self.verified)\n ) {\n device.productName =\n (space.devices && space.devices[0] && space.devices[0].productName) ||\n DEFAULT_PRODUCT_NAME;\n // pin challenge is not verified reset _pairedDevice if ids\n // match\n const pairedDeviceId =\n this._pairedDevice && (this._pairedDevice.id || this._pairedDevice.identity.id);\n\n if (pairedDeviceId === deviceId) {\n this._pairedDevice = null;\n this.logger.info(\n `DeviceManager#_receiveDeviceUpdates: device ${deviceId} lost pairing`\n );\n\n return Promise.resolve();\n }\n // we do not want to reset the device pending PIN challenge\n if (this._devicePendingPinChallenge.identity.id !== deviceId) {\n return this.upsert(device);\n }\n\n return Promise.resolve();\n }\n\n return Promise.resolve();\n })\n .catch((err) => {\n this.logger.error(\n 'DeviceManager#_receiveDeviceUpdates: failed to receive updates for Lyra space',\n err\n );\n });\n }\n }\n\n return Promise.resolve();\n },\n});\n\nexport default DeviceManager;\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,40 +1,32 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  _Object$defineProperty(exports, "config", {
12
9
  enumerable: true,
13
10
  get: function get() {
14
11
  return _config.default;
15
12
  }
16
13
  });
17
-
18
14
  _Object$defineProperty(exports, "default", {
19
15
  enumerable: true,
20
16
  get: function get() {
21
17
  return _deviceManager.default;
22
18
  }
23
19
  });
24
-
25
20
  require("@webex/internal-plugin-device");
26
-
27
21
  var _webexCore = require("@webex/webex-core");
28
-
29
22
  var _deviceManager = _interopRequireDefault(require("./device-manager"));
30
-
31
23
  var _config = _interopRequireDefault(require("./config"));
32
-
33
24
  /*!
34
25
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
35
26
  */
36
27
 
37
28
  /* globals */
29
+
38
30
  (0, _webexCore.registerPlugin)('devicemanager', _deviceManager.default, {
39
31
  config: _config.default
40
32
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["registerPlugin","DeviceManager","config"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* globals */\n\nimport '@webex/internal-plugin-device';\nimport {registerPlugin} from '@webex/webex-core';\n\nimport DeviceManager from './device-manager';\nimport config from './config';\n\nregisterPlugin('devicemanager', DeviceManager, {\n config\n});\n\nexport {default} from './device-manager';\nexport {default as config} from './config';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMA;;AACA;;AAEA;;AACA;;AAVA;AACA;AACA;;AAEA;AAQA,IAAAA,yBAAA,EAAe,eAAf,EAAgCC,sBAAhC,EAA+C;EAC7CC,MAAM,EAANA;AAD6C,CAA/C"}
1
+ {"version":3,"names":["registerPlugin","DeviceManager","config"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* globals */\n\nimport '@webex/internal-plugin-device';\nimport {registerPlugin} from '@webex/webex-core';\n\nimport DeviceManager from './device-manager';\nimport config from './config';\n\nregisterPlugin('devicemanager', DeviceManager, {\n config,\n});\n\nexport {default} from './device-manager';\nexport {default as config} from './config';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAMA;AACA;AAEA;AACA;AAVA;AACA;AACA;;AAEA;;AAQA,IAAAA,yBAAc,EAAC,eAAe,EAAEC,sBAAa,EAAE;EAC7CC,MAAM,EAANA;AACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-device-manager",
3
- "version": "3.0.0-beta.3",
3
+ "version": "3.0.0-beta.300",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "contributors": [
@@ -23,15 +23,15 @@
23
23
  ]
24
24
  },
25
25
  "dependencies": {
26
- "@webex/internal-plugin-calendar": "3.0.0-beta.3",
27
- "@webex/internal-plugin-device": "3.0.0-beta.3",
28
- "@webex/internal-plugin-lyra": "3.0.0-beta.3",
29
- "@webex/internal-plugin-search": "3.0.0-beta.3",
30
- "@webex/plugin-authorization": "3.0.0-beta.3",
31
- "@webex/plugin-device-manager": "3.0.0-beta.3",
32
- "@webex/plugin-logger": "3.0.0-beta.3",
33
- "@webex/test-helper-chai": "3.0.0-beta.3",
34
- "@webex/webex-core": "3.0.0-beta.3",
26
+ "@webex/internal-plugin-calendar": "3.0.0-beta.300",
27
+ "@webex/internal-plugin-device": "3.0.0-beta.300",
28
+ "@webex/internal-plugin-lyra": "3.0.0-beta.300",
29
+ "@webex/internal-plugin-search": "3.0.0-beta.300",
30
+ "@webex/plugin-authorization": "3.0.0-beta.300",
31
+ "@webex/plugin-device-manager": "3.0.0-beta.300",
32
+ "@webex/plugin-logger": "3.0.0-beta.300",
33
+ "@webex/test-helper-chai": "3.0.0-beta.300",
34
+ "@webex/webex-core": "3.0.0-beta.300",
35
35
  "lodash": "^4.17.21",
36
36
  "uuid": "^3.3.2"
37
37
  }