@webex/internal-plugin-lyra 3.0.0-beta.2 → 3.0.0-beta.21

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/space.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["Space","WebexPlugin","extend","namespace","list","webex","request","method","api","resource","then","res","body","items","get","space","spaceId","id","identity","reject","Error","join","options","passType","pass","type","deviceUrl","internal","device","url","data","verificationInitiation","uri","leave","removeAllDevices","params","base64","toBase64Url","querystring","stringify","verifyOccupant","occupantId","getCurrentBindings","bindConversation","conversation","kmsResourceObjectUrl","kmsMessage","resourceUri","userIds","conversationUrl","_bindConversation","resolve","encodedDeviceUrl","encode","bindingCleanupAfterCall","unbindConversation","parameters","authId","encryption","kms","prepareRequest","req","wrapped","deleteBinding","bindingId"],"sources":["space.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport querystring from 'querystring';\n\nimport {WebexPlugin} from '@webex/webex-core';\nimport {base64} from '@webex/common';\n\n/**\n * @class\n * @extends {Lyra}\n * @memberof Lyra\n */\nconst Space = WebexPlugin.extend({\n namespace: 'Lyra',\n\n /**\n * Lists lyra spaces associated with user\n *\n * @returns {Promise<Array>} spaces\n */\n list() {\n return this.webex.request({\n method: 'GET',\n api: 'lyra',\n resource: '/spaces'\n })\n .then((res) => res.body.items);\n },\n\n /**\n * Retrieves a lyra space info\n * @param {Types~LyraSpace} space\n * @param {string} space.id\n * @param {string} space.identity.id\n * @returns {Promise<LyraSpace>} response body\n */\n get(space = {}) {\n const spaceId = space.id || space.identity && space.identity.id;\n\n if (!spaceId) {\n return Promise.reject(new Error('space.id is required'));\n }\n\n return this.webex.request({\n method: 'GET',\n api: 'lyra',\n resource: `/spaces/${spaceId}`\n })\n .then((res) => res.body);\n },\n\n /**\n * Joins a lyra space, update every 10 minutes to keep alive for MANUAL\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {object} options\n * @param {string} options.passType\n * @param {string} options.data additional data such as proof for ultrasound\n * @param {string} options.uri use a custom uri\n * @returns {Promise}\n */\n join(space, options) {\n options = Object.assign({\n passType: 'MANUAL'\n }, options);\n\n const body = {\n pass: {\n type: options.passType\n },\n deviceUrl: this.webex.internal.device.url\n };\n\n if (options.data) {\n body.pass.data = options.data;\n }\n\n if (options.verificationInitiation) {\n body.verificationInitiation = options.verificationInitiation;\n }\n\n // if options.uri is available use it, since that would have the\n // complete lyra service URL\n if (options.uri) {\n return this.webex.request({\n method: 'PUT',\n uri: options.uri,\n body\n });\n }\n\n return this.webex.request({\n method: 'PUT',\n api: 'lyra',\n resource: `${space.url}/occupants/@me`,\n body\n });\n },\n\n /**\n * Leaves a lyra space\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {object} options\n * @param {boolean} options.removeAllDevices remove all devices of current user also\n * @returns {Promise}\n */\n leave(space, options = {}) {\n // all devices are removed by default (when deviceUrl is not supplied)\n let uri = `${space.url}/occupants/@me`;\n\n if (!options.removeAllDevices) {\n const params = {\n deviceUrl: base64.toBase64Url(this.webex.internal.device.url)\n };\n\n uri += `?${querystring.stringify(params)}`;\n }\n\n return this.webex.request({\n method: 'DELETE',\n api: 'lyra',\n resource: uri\n });\n },\n\n /**\n * Verifies a space occupant (to be used by the lyra device)\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {string} occupantId id of user to verify\n * @returns {Promise}\n */\n verifyOccupant(space, occupantId) {\n const body = {\n pass: {\n type: 'VERIFICATION'\n }\n };\n\n return this.webex.request({\n method: 'PUT',\n uri: `${space.url}/occupants/${occupantId}`,\n body\n });\n },\n\n\n /**\n * Gets the state of bindings in this Lyra space\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @returns {Promise<LyraBindings>} bindings response body\n */\n getCurrentBindings(space) {\n return this.webex.request({\n method: 'GET',\n uri: `${space.url}/bindings`\n })\n .then((res) => res.body);\n },\n\n /**\n * Binds a conversation to lyra space\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {string} space.id\n * @param {string} space.identity.id\n * @param {Types~Conversation} conversation\n * @param {string} conversation.kmsResourceObjectUrl\n * @param {string} conversation.url\n * @param {object} options\n * @param {boolean} options.uri complete lyra service URL\n * @returns {Promise<LyraBindings>} bindings response body\n */\n bindConversation(space = {}, conversation = {}, options = {}) {\n const spaceId = space.id || space.identity && space.identity.id;\n\n if (!space.url) {\n return Promise.reject(new Error('space.url is required'));\n }\n\n if (!spaceId) {\n return Promise.reject(new Error('space.id is required'));\n }\n\n if (!conversation.kmsResourceObjectUrl) {\n return Promise.reject(new Error('conversation.kmsResourceObjectUrl is required'));\n }\n\n if (!conversation.url) {\n return Promise.reject(new Error('conversation.url is required'));\n }\n\n const body = {\n kmsMessage: {\n method: 'create',\n uri: '/authorizations',\n resourceUri: `${conversation.kmsResourceObjectUrl}`,\n userIds: [spaceId]\n },\n conversationUrl: conversation.url\n };\n\n const request = {\n method: 'POST',\n body\n };\n\n // if options.uri is available use it, since that would have the\n // complete lyra service URL\n if (options.uri) {\n request.uri = options.uri;\n }\n else {\n request.api = 'lyra';\n request.resource = `${space.url}/bindings`;\n }\n\n return this._bindConversation(spaceId)\n .then(() => this.webex.request(request))\n .then((res) => res.body);\n },\n\n /**\n * Binds a conversation to lyra space by posting capabilities to Lyra.\n *\n * Lyra no longer automatically enables binding for a space containing a device with type \"SPARK_BOARD\".\n * Webexboard now is running the CE code stack which supports posting of capabilities to Lyra.\n * @param {String} spaceId space ID\n * @returns {Promise<LyraBindings>} bindings response body\n */\n _bindConversation(spaceId) {\n // Skip until we can bind a conversation to lyra space by posting capabilities to Lyra.\n /* eslint no-unreachable: 1 */\n return Promise.resolve();\n\n // PUT /lyra/api/v1/spaces/{spaceId}/devices/{encodedDeviceUrl}/capabilities\n const encodedDeviceUrl = base64.encode(this.webex.internal.device.url);\n const resource = `spaces/${spaceId}/devices/${encodedDeviceUrl}/capabilities`;\n\n return this.webex.request({\n method: 'PUT',\n api: 'lyra',\n resource,\n body: {\n bindingCleanupAfterCall: true\n }\n });\n },\n\n /**\n * Removes binding between a conversation and a lyra space using conversation\n * url\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {string} space.id\n * @param {string} space.identity.id\n * @param {Types~Conversation} conversation\n * @param {string} conversation.kmsResourceObjectUrl\n * @param {string} conversation.url\n * @param {object} options\n * @param {boolean} options.uri complete lyra service URL\n * @returns {Promise<LyraBindings>} bindings response body\n */\n unbindConversation(space = {}, conversation = {}, options = {}) {\n const spaceId = space.id || space.identity && space.identity.id;\n\n if (!space.url) {\n return Promise.reject(new Error('space.url is required'));\n }\n\n if (!spaceId) {\n return Promise.reject(new Error('space.id is required'));\n }\n\n if (!conversation.url) {\n return Promise.reject(new Error('conversation.url is required'));\n }\n\n if (!conversation.kmsResourceObjectUrl) {\n return Promise.reject(new Error('conversation.kmsResourceObjectUrl is required'));\n }\n\n const parameters = {\n kmsMessage: {\n method: 'delete',\n uri: `${conversation.kmsResourceObjectUrl}/authorizations?${querystring.stringify({authId: spaceId})}`\n },\n conversationUrl: base64.toBase64Url(conversation.url)\n };\n\n return this.webex.internal.encryption.kms.prepareRequest(parameters.kmsMessage)\n .then((req) => {\n parameters.kmsMessage = req.wrapped;\n // if options.uri is available use it, since that would have the\n // complete lyra service URL\n if (options.uri) {\n return this.webex.request({\n method: 'DELETE',\n uri: `${options.uri}?${querystring.stringify(parameters)}`\n });\n }\n\n return this.webex.request({\n method: 'DELETE',\n api: 'lyra',\n resource: `${space.url}/bindings?${querystring.stringify(parameters)}`\n });\n });\n },\n\n /**\n * Delete a binding using binding id\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {string} space.identity.id\n * @param {object} options\n * @param {string} options.kmsResourceObjectUrl\n * @param {string} options.bindingId\n * @returns {Promise<LyraBindings>} bindings response body\n */\n deleteBinding(space = {}, options = {}) {\n const spaceId = space.id || space.identity && space.identity.id;\n\n if (!space.url) {\n return Promise.reject(new Error('space.url is required'));\n }\n\n if (!spaceId) {\n return Promise.reject(new Error('space.id is required'));\n }\n\n if (!options.kmsResourceObjectUrl) {\n return Promise.reject(new Error('options.kmsResourceObjectUrl is required'));\n }\n\n if (!options.bindingId) {\n return Promise.reject(new Error('options.bindingId is required'));\n }\n\n const parameters = {\n kmsMessage: {\n method: 'delete',\n uri: `${options.kmsResourceObjectUrl}/authorizations?${querystring.stringify({authId: spaceId})}`\n }\n };\n\n return this.webex.internal.encryption.kms.prepareRequest(parameters.kmsMessage)\n .then((req) => {\n parameters.kmsMessage = req.wrapped;\n\n return this.webex.request({\n method: 'DELETE',\n uri: `${space.url}/bindings/${options.bindingId}?${querystring.stringify(parameters)}`\n });\n });\n }\n});\n\nexport default Space;\n"],"mappings":"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"}
1
+ {"version":3,"names":["Space","WebexPlugin","extend","namespace","list","webex","request","method","api","resource","then","res","body","items","get","space","spaceId","id","identity","reject","Error","join","options","passType","pass","type","deviceUrl","internal","device","url","data","verificationInitiation","uri","leave","removeAllDevices","params","base64","toBase64Url","querystring","stringify","verifyOccupant","occupantId","getCurrentBindings","bindConversation","conversation","kmsResourceObjectUrl","kmsMessage","resourceUri","userIds","conversationUrl","_bindConversation","resolve","encodedDeviceUrl","encode","bindingCleanupAfterCall","unbindConversation","parameters","authId","encryption","kms","prepareRequest","req","wrapped","deleteBinding","bindingId"],"sources":["space.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport querystring from 'querystring';\n\nimport {WebexPlugin} from '@webex/webex-core';\nimport {base64} from '@webex/common';\n\n/**\n * @class\n * @extends {Lyra}\n * @memberof Lyra\n */\nconst Space = WebexPlugin.extend({\n namespace: 'Lyra',\n\n /**\n * Lists lyra spaces associated with user\n *\n * @returns {Promise<Array>} spaces\n */\n list() {\n return this.webex\n .request({\n method: 'GET',\n api: 'lyra',\n resource: '/spaces',\n })\n .then((res) => res.body.items);\n },\n\n /**\n * Retrieves a lyra space info\n * @param {Types~LyraSpace} space\n * @param {string} space.id\n * @param {string} space.identity.id\n * @returns {Promise<LyraSpace>} response body\n */\n get(space = {}) {\n const spaceId = space.id || (space.identity && space.identity.id);\n\n if (!spaceId) {\n return Promise.reject(new Error('space.id is required'));\n }\n\n return this.webex\n .request({\n method: 'GET',\n api: 'lyra',\n resource: `/spaces/${spaceId}`,\n })\n .then((res) => res.body);\n },\n\n /**\n * Joins a lyra space, update every 10 minutes to keep alive for MANUAL\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {object} options\n * @param {string} options.passType\n * @param {string} options.data additional data such as proof for ultrasound\n * @param {string} options.uri use a custom uri\n * @returns {Promise}\n */\n join(space, options) {\n options = {\n passType: 'MANUAL',\n ...options,\n };\n\n const body = {\n pass: {\n type: options.passType,\n },\n deviceUrl: this.webex.internal.device.url,\n };\n\n if (options.data) {\n body.pass.data = options.data;\n }\n\n if (options.verificationInitiation) {\n body.verificationInitiation = options.verificationInitiation;\n }\n\n // if options.uri is available use it, since that would have the\n // complete lyra service URL\n if (options.uri) {\n return this.webex.request({\n method: 'PUT',\n uri: options.uri,\n body,\n });\n }\n\n return this.webex.request({\n method: 'PUT',\n api: 'lyra',\n resource: `${space.url}/occupants/@me`,\n body,\n });\n },\n\n /**\n * Leaves a lyra space\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {object} options\n * @param {boolean} options.removeAllDevices remove all devices of current user also\n * @returns {Promise}\n */\n leave(space, options = {}) {\n // all devices are removed by default (when deviceUrl is not supplied)\n let uri = `${space.url}/occupants/@me`;\n\n if (!options.removeAllDevices) {\n const params = {\n deviceUrl: base64.toBase64Url(this.webex.internal.device.url),\n };\n\n uri += `?${querystring.stringify(params)}`;\n }\n\n return this.webex.request({\n method: 'DELETE',\n api: 'lyra',\n resource: uri,\n });\n },\n\n /**\n * Verifies a space occupant (to be used by the lyra device)\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {string} occupantId id of user to verify\n * @returns {Promise}\n */\n verifyOccupant(space, occupantId) {\n const body = {\n pass: {\n type: 'VERIFICATION',\n },\n };\n\n return this.webex.request({\n method: 'PUT',\n uri: `${space.url}/occupants/${occupantId}`,\n body,\n });\n },\n\n /**\n * Gets the state of bindings in this Lyra space\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @returns {Promise<LyraBindings>} bindings response body\n */\n getCurrentBindings(space) {\n return this.webex\n .request({\n method: 'GET',\n uri: `${space.url}/bindings`,\n })\n .then((res) => res.body);\n },\n\n /**\n * Binds a conversation to lyra space\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {string} space.id\n * @param {string} space.identity.id\n * @param {Types~Conversation} conversation\n * @param {string} conversation.kmsResourceObjectUrl\n * @param {string} conversation.url\n * @param {object} options\n * @param {boolean} options.uri complete lyra service URL\n * @returns {Promise<LyraBindings>} bindings response body\n */\n bindConversation(space = {}, conversation = {}, options = {}) {\n const spaceId = space.id || (space.identity && space.identity.id);\n\n if (!space.url) {\n return Promise.reject(new Error('space.url is required'));\n }\n\n if (!spaceId) {\n return Promise.reject(new Error('space.id is required'));\n }\n\n if (!conversation.kmsResourceObjectUrl) {\n return Promise.reject(new Error('conversation.kmsResourceObjectUrl is required'));\n }\n\n if (!conversation.url) {\n return Promise.reject(new Error('conversation.url is required'));\n }\n\n const body = {\n kmsMessage: {\n method: 'create',\n uri: '/authorizations',\n resourceUri: `${conversation.kmsResourceObjectUrl}`,\n userIds: [spaceId],\n },\n conversationUrl: conversation.url,\n };\n\n const request = {\n method: 'POST',\n body,\n };\n\n // if options.uri is available use it, since that would have the\n // complete lyra service URL\n if (options.uri) {\n request.uri = options.uri;\n } else {\n request.api = 'lyra';\n request.resource = `${space.url}/bindings`;\n }\n\n return this._bindConversation(spaceId)\n .then(() => this.webex.request(request))\n .then((res) => res.body);\n },\n\n /**\n * Binds a conversation to lyra space by posting capabilities to Lyra.\n *\n * Lyra no longer automatically enables binding for a space containing a device with type \"SPARK_BOARD\".\n * Webexboard now is running the CE code stack which supports posting of capabilities to Lyra.\n * @param {String} spaceId space ID\n * @returns {Promise<LyraBindings>} bindings response body\n */\n _bindConversation(spaceId) {\n // Skip until we can bind a conversation to lyra space by posting capabilities to Lyra.\n /* eslint no-unreachable: 1 */\n return Promise.resolve();\n\n // PUT /lyra/api/v1/spaces/{spaceId}/devices/{encodedDeviceUrl}/capabilities\n const encodedDeviceUrl = base64.encode(this.webex.internal.device.url);\n const resource = `spaces/${spaceId}/devices/${encodedDeviceUrl}/capabilities`;\n\n return this.webex.request({\n method: 'PUT',\n api: 'lyra',\n resource,\n body: {\n bindingCleanupAfterCall: true,\n },\n });\n },\n\n /**\n * Removes binding between a conversation and a lyra space using conversation\n * url\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {string} space.id\n * @param {string} space.identity.id\n * @param {Types~Conversation} conversation\n * @param {string} conversation.kmsResourceObjectUrl\n * @param {string} conversation.url\n * @param {object} options\n * @param {boolean} options.uri complete lyra service URL\n * @returns {Promise<LyraBindings>} bindings response body\n */\n unbindConversation(space = {}, conversation = {}, options = {}) {\n const spaceId = space.id || (space.identity && space.identity.id);\n\n if (!space.url) {\n return Promise.reject(new Error('space.url is required'));\n }\n\n if (!spaceId) {\n return Promise.reject(new Error('space.id is required'));\n }\n\n if (!conversation.url) {\n return Promise.reject(new Error('conversation.url is required'));\n }\n\n if (!conversation.kmsResourceObjectUrl) {\n return Promise.reject(new Error('conversation.kmsResourceObjectUrl is required'));\n }\n\n const parameters = {\n kmsMessage: {\n method: 'delete',\n uri: `${conversation.kmsResourceObjectUrl}/authorizations?${querystring.stringify({\n authId: spaceId,\n })}`,\n },\n conversationUrl: base64.toBase64Url(conversation.url),\n };\n\n return this.webex.internal.encryption.kms.prepareRequest(parameters.kmsMessage).then((req) => {\n parameters.kmsMessage = req.wrapped;\n // if options.uri is available use it, since that would have the\n // complete lyra service URL\n if (options.uri) {\n return this.webex.request({\n method: 'DELETE',\n uri: `${options.uri}?${querystring.stringify(parameters)}`,\n });\n }\n\n return this.webex.request({\n method: 'DELETE',\n api: 'lyra',\n resource: `${space.url}/bindings?${querystring.stringify(parameters)}`,\n });\n });\n },\n\n /**\n * Delete a binding using binding id\n * @param {Types~LyraSpace} space\n * @param {string} space.url\n * @param {string} space.identity.id\n * @param {object} options\n * @param {string} options.kmsResourceObjectUrl\n * @param {string} options.bindingId\n * @returns {Promise<LyraBindings>} bindings response body\n */\n deleteBinding(space = {}, options = {}) {\n const spaceId = space.id || (space.identity && space.identity.id);\n\n if (!space.url) {\n return Promise.reject(new Error('space.url is required'));\n }\n\n if (!spaceId) {\n return Promise.reject(new Error('space.id is required'));\n }\n\n if (!options.kmsResourceObjectUrl) {\n return Promise.reject(new Error('options.kmsResourceObjectUrl is required'));\n }\n\n if (!options.bindingId) {\n return Promise.reject(new Error('options.bindingId is required'));\n }\n\n const parameters = {\n kmsMessage: {\n method: 'delete',\n uri: `${options.kmsResourceObjectUrl}/authorizations?${querystring.stringify({\n authId: spaceId,\n })}`,\n },\n };\n\n return this.webex.internal.encryption.kms.prepareRequest(parameters.kmsMessage).then((req) => {\n parameters.kmsMessage = req.wrapped;\n\n return this.webex.request({\n method: 'DELETE',\n uri: `${space.url}/bindings/${options.bindingId}?${querystring.stringify(parameters)}`,\n });\n });\n },\n});\n\nexport default Space;\n"],"mappings":";;;;;;;;;;;;;;;AAIA;AAEA;AACA;AAAqC;AAAA;AAErC;AACA;AACA;AACA;AACA;AACA,IAAMA,KAAK,GAAGC,sBAAW,CAACC,MAAM,CAAC;EAC/BC,SAAS,EAAE,MAAM;EAEjB;AACF;AACA;AACA;AACA;EACEC,IAAI,kBAAG;IACL,OAAO,IAAI,CAACC,KAAK,CACdC,OAAO,CAAC;MACPC,MAAM,EAAE,KAAK;MACbC,GAAG,EAAE,MAAM;MACXC,QAAQ,EAAE;IACZ,CAAC,CAAC,CACDC,IAAI,CAAC,UAACC,GAAG;MAAA,OAAKA,GAAG,CAACC,IAAI,CAACC,KAAK;IAAA,EAAC;EAClC,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,GAAG,iBAAa;IAAA,IAAZC,KAAK,uEAAG,CAAC,CAAC;IACZ,IAAMC,OAAO,GAAGD,KAAK,CAACE,EAAE,IAAKF,KAAK,CAACG,QAAQ,IAAIH,KAAK,CAACG,QAAQ,CAACD,EAAG;IAEjE,IAAI,CAACD,OAAO,EAAE;MACZ,OAAO,iBAAQG,MAAM,CAAC,IAAIC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1D;IAEA,OAAO,IAAI,CAACf,KAAK,CACdC,OAAO,CAAC;MACPC,MAAM,EAAE,KAAK;MACbC,GAAG,EAAE,MAAM;MACXC,QAAQ,oBAAaO,OAAO;IAC9B,CAAC,CAAC,CACDN,IAAI,CAAC,UAACC,GAAG;MAAA,OAAKA,GAAG,CAACC,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACES,IAAI,gBAACN,KAAK,EAAEO,OAAO,EAAE;IACnBA,OAAO;MACLC,QAAQ,EAAE;IAAQ,GACfD,OAAO,CACX;IAED,IAAMV,IAAI,GAAG;MACXY,IAAI,EAAE;QACJC,IAAI,EAAEH,OAAO,CAACC;MAChB,CAAC;MACDG,SAAS,EAAE,IAAI,CAACrB,KAAK,CAACsB,QAAQ,CAACC,MAAM,CAACC;IACxC,CAAC;IAED,IAAIP,OAAO,CAACQ,IAAI,EAAE;MAChBlB,IAAI,CAACY,IAAI,CAACM,IAAI,GAAGR,OAAO,CAACQ,IAAI;IAC/B;IAEA,IAAIR,OAAO,CAACS,sBAAsB,EAAE;MAClCnB,IAAI,CAACmB,sBAAsB,GAAGT,OAAO,CAACS,sBAAsB;IAC9D;;IAEA;IACA;IACA,IAAIT,OAAO,CAACU,GAAG,EAAE;MACf,OAAO,IAAI,CAAC3B,KAAK,CAACC,OAAO,CAAC;QACxBC,MAAM,EAAE,KAAK;QACbyB,GAAG,EAAEV,OAAO,CAACU,GAAG;QAChBpB,IAAI,EAAJA;MACF,CAAC,CAAC;IACJ;IAEA,OAAO,IAAI,CAACP,KAAK,CAACC,OAAO,CAAC;MACxBC,MAAM,EAAE,KAAK;MACbC,GAAG,EAAE,MAAM;MACXC,QAAQ,YAAKM,KAAK,CAACc,GAAG,mBAAgB;MACtCjB,IAAI,EAAJA;IACF,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEqB,KAAK,iBAAClB,KAAK,EAAgB;IAAA,IAAdO,OAAO,uEAAG,CAAC,CAAC;IACvB;IACA,IAAIU,GAAG,aAAMjB,KAAK,CAACc,GAAG,mBAAgB;IAEtC,IAAI,CAACP,OAAO,CAACY,gBAAgB,EAAE;MAC7B,IAAMC,MAAM,GAAG;QACbT,SAAS,EAAEU,cAAM,CAACC,WAAW,CAAC,IAAI,CAAChC,KAAK,CAACsB,QAAQ,CAACC,MAAM,CAACC,GAAG;MAC9D,CAAC;MAEDG,GAAG,eAAQM,oBAAW,CAACC,SAAS,CAACJ,MAAM,CAAC,CAAE;IAC5C;IAEA,OAAO,IAAI,CAAC9B,KAAK,CAACC,OAAO,CAAC;MACxBC,MAAM,EAAE,QAAQ;MAChBC,GAAG,EAAE,MAAM;MACXC,QAAQ,EAAEuB;IACZ,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEQ,cAAc,0BAACzB,KAAK,EAAE0B,UAAU,EAAE;IAChC,IAAM7B,IAAI,GAAG;MACXY,IAAI,EAAE;QACJC,IAAI,EAAE;MACR;IACF,CAAC;IAED,OAAO,IAAI,CAACpB,KAAK,CAACC,OAAO,CAAC;MACxBC,MAAM,EAAE,KAAK;MACbyB,GAAG,YAAKjB,KAAK,CAACc,GAAG,wBAAcY,UAAU,CAAE;MAC3C7B,IAAI,EAAJA;IACF,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACE8B,kBAAkB,8BAAC3B,KAAK,EAAE;IACxB,OAAO,IAAI,CAACV,KAAK,CACdC,OAAO,CAAC;MACPC,MAAM,EAAE,KAAK;MACbyB,GAAG,YAAKjB,KAAK,CAACc,GAAG;IACnB,CAAC,CAAC,CACDnB,IAAI,CAAC,UAACC,GAAG;MAAA,OAAKA,GAAG,CAACC,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE+B,gBAAgB,8BAA8C;IAAA;IAAA,IAA7C5B,KAAK,uEAAG,CAAC,CAAC;IAAA,IAAE6B,YAAY,uEAAG,CAAC,CAAC;IAAA,IAAEtB,OAAO,uEAAG,CAAC,CAAC;IAC1D,IAAMN,OAAO,GAAGD,KAAK,CAACE,EAAE,IAAKF,KAAK,CAACG,QAAQ,IAAIH,KAAK,CAACG,QAAQ,CAACD,EAAG;IAEjE,IAAI,CAACF,KAAK,CAACc,GAAG,EAAE;MACd,OAAO,iBAAQV,MAAM,CAAC,IAAIC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3D;IAEA,IAAI,CAACJ,OAAO,EAAE;MACZ,OAAO,iBAAQG,MAAM,CAAC,IAAIC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1D;IAEA,IAAI,CAACwB,YAAY,CAACC,oBAAoB,EAAE;MACtC,OAAO,iBAAQ1B,MAAM,CAAC,IAAIC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnF;IAEA,IAAI,CAACwB,YAAY,CAACf,GAAG,EAAE;MACrB,OAAO,iBAAQV,MAAM,CAAC,IAAIC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClE;IAEA,IAAMR,IAAI,GAAG;MACXkC,UAAU,EAAE;QACVvC,MAAM,EAAE,QAAQ;QAChByB,GAAG,EAAE,iBAAiB;QACtBe,WAAW,YAAKH,YAAY,CAACC,oBAAoB,CAAE;QACnDG,OAAO,EAAE,CAAChC,OAAO;MACnB,CAAC;MACDiC,eAAe,EAAEL,YAAY,CAACf;IAChC,CAAC;IAED,IAAMvB,OAAO,GAAG;MACdC,MAAM,EAAE,MAAM;MACdK,IAAI,EAAJA;IACF,CAAC;;IAED;IACA;IACA,IAAIU,OAAO,CAACU,GAAG,EAAE;MACf1B,OAAO,CAAC0B,GAAG,GAAGV,OAAO,CAACU,GAAG;IAC3B,CAAC,MAAM;MACL1B,OAAO,CAACE,GAAG,GAAG,MAAM;MACpBF,OAAO,CAACG,QAAQ,aAAMM,KAAK,CAACc,GAAG,cAAW;IAC5C;IAEA,OAAO,IAAI,CAACqB,iBAAiB,CAAClC,OAAO,CAAC,CACnCN,IAAI,CAAC;MAAA,OAAM,KAAI,CAACL,KAAK,CAACC,OAAO,CAACA,OAAO,CAAC;IAAA,EAAC,CACvCI,IAAI,CAAC,UAACC,GAAG;MAAA,OAAKA,GAAG,CAACC,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEsC,iBAAiB,6BAAClC,OAAO,EAAE;IACzB;IACA;IACA,OAAO,iBAAQmC,OAAO,EAAE;;IAExB;IACA,IAAMC,gBAAgB,GAAGhB,cAAM,CAACiB,MAAM,CAAC,IAAI,CAAChD,KAAK,CAACsB,QAAQ,CAACC,MAAM,CAACC,GAAG,CAAC;IACtE,IAAMpB,QAAQ,oBAAaO,OAAO,sBAAYoC,gBAAgB,kBAAe;IAE7E,OAAO,IAAI,CAAC/C,KAAK,CAACC,OAAO,CAAC;MACxBC,MAAM,EAAE,KAAK;MACbC,GAAG,EAAE,MAAM;MACXC,QAAQ,EAARA,QAAQ;MACRG,IAAI,EAAE;QACJ0C,uBAAuB,EAAE;MAC3B;IACF,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,kBAAkB,gCAA8C;IAAA;IAAA,IAA7CxC,KAAK,uEAAG,CAAC,CAAC;IAAA,IAAE6B,YAAY,uEAAG,CAAC,CAAC;IAAA,IAAEtB,OAAO,uEAAG,CAAC,CAAC;IAC5D,IAAMN,OAAO,GAAGD,KAAK,CAACE,EAAE,IAAKF,KAAK,CAACG,QAAQ,IAAIH,KAAK,CAACG,QAAQ,CAACD,EAAG;IAEjE,IAAI,CAACF,KAAK,CAACc,GAAG,EAAE;MACd,OAAO,iBAAQV,MAAM,CAAC,IAAIC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3D;IAEA,IAAI,CAACJ,OAAO,EAAE;MACZ,OAAO,iBAAQG,MAAM,CAAC,IAAIC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1D;IAEA,IAAI,CAACwB,YAAY,CAACf,GAAG,EAAE;MACrB,OAAO,iBAAQV,MAAM,CAAC,IAAIC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClE;IAEA,IAAI,CAACwB,YAAY,CAACC,oBAAoB,EAAE;MACtC,OAAO,iBAAQ1B,MAAM,CAAC,IAAIC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnF;IAEA,IAAMoC,UAAU,GAAG;MACjBV,UAAU,EAAE;QACVvC,MAAM,EAAE,QAAQ;QAChByB,GAAG,YAAKY,YAAY,CAACC,oBAAoB,6BAAmBP,oBAAW,CAACC,SAAS,CAAC;UAChFkB,MAAM,EAAEzC;QACV,CAAC,CAAC;MACJ,CAAC;MACDiC,eAAe,EAAEb,cAAM,CAACC,WAAW,CAACO,YAAY,CAACf,GAAG;IACtD,CAAC;IAED,OAAO,IAAI,CAACxB,KAAK,CAACsB,QAAQ,CAAC+B,UAAU,CAACC,GAAG,CAACC,cAAc,CAACJ,UAAU,CAACV,UAAU,CAAC,CAACpC,IAAI,CAAC,UAACmD,GAAG,EAAK;MAC5FL,UAAU,CAACV,UAAU,GAAGe,GAAG,CAACC,OAAO;MACnC;MACA;MACA,IAAIxC,OAAO,CAACU,GAAG,EAAE;QACf,OAAO,MAAI,CAAC3B,KAAK,CAACC,OAAO,CAAC;UACxBC,MAAM,EAAE,QAAQ;UAChByB,GAAG,YAAKV,OAAO,CAACU,GAAG,cAAIM,oBAAW,CAACC,SAAS,CAACiB,UAAU,CAAC;QAC1D,CAAC,CAAC;MACJ;MAEA,OAAO,MAAI,CAACnD,KAAK,CAACC,OAAO,CAAC;QACxBC,MAAM,EAAE,QAAQ;QAChBC,GAAG,EAAE,MAAM;QACXC,QAAQ,YAAKM,KAAK,CAACc,GAAG,uBAAaS,oBAAW,CAACC,SAAS,CAACiB,UAAU,CAAC;MACtE,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEO,aAAa,2BAA2B;IAAA;IAAA,IAA1BhD,KAAK,uEAAG,CAAC,CAAC;IAAA,IAAEO,OAAO,uEAAG,CAAC,CAAC;IACpC,IAAMN,OAAO,GAAGD,KAAK,CAACE,EAAE,IAAKF,KAAK,CAACG,QAAQ,IAAIH,KAAK,CAACG,QAAQ,CAACD,EAAG;IAEjE,IAAI,CAACF,KAAK,CAACc,GAAG,EAAE;MACd,OAAO,iBAAQV,MAAM,CAAC,IAAIC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3D;IAEA,IAAI,CAACJ,OAAO,EAAE;MACZ,OAAO,iBAAQG,MAAM,CAAC,IAAIC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1D;IAEA,IAAI,CAACE,OAAO,CAACuB,oBAAoB,EAAE;MACjC,OAAO,iBAAQ1B,MAAM,CAAC,IAAIC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9E;IAEA,IAAI,CAACE,OAAO,CAAC0C,SAAS,EAAE;MACtB,OAAO,iBAAQ7C,MAAM,CAAC,IAAIC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnE;IAEA,IAAMoC,UAAU,GAAG;MACjBV,UAAU,EAAE;QACVvC,MAAM,EAAE,QAAQ;QAChByB,GAAG,YAAKV,OAAO,CAACuB,oBAAoB,6BAAmBP,oBAAW,CAACC,SAAS,CAAC;UAC3EkB,MAAM,EAAEzC;QACV,CAAC,CAAC;MACJ;IACF,CAAC;IAED,OAAO,IAAI,CAACX,KAAK,CAACsB,QAAQ,CAAC+B,UAAU,CAACC,GAAG,CAACC,cAAc,CAACJ,UAAU,CAACV,UAAU,CAAC,CAACpC,IAAI,CAAC,UAACmD,GAAG,EAAK;MAC5FL,UAAU,CAACV,UAAU,GAAGe,GAAG,CAACC,OAAO;MAEnC,OAAO,MAAI,CAACzD,KAAK,CAACC,OAAO,CAAC;QACxBC,MAAM,EAAE,QAAQ;QAChByB,GAAG,YAAKjB,KAAK,CAACc,GAAG,uBAAaP,OAAO,CAAC0C,SAAS,cAAI1B,oBAAW,CAACC,SAAS,CAACiB,UAAU,CAAC;MACtF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;EAAA;AACH,CAAC,CAAC;AAAC,eAEYxD,KAAK;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/internal-plugin-lyra",
3
- "version": "3.0.0-beta.2",
3
+ "version": "3.0.0-beta.21",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "author": "Tran Tu <tratu@cisco.com>",
@@ -22,21 +22,21 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@ciscospark/test-users-legacy": "^1.2.0",
25
- "@webex/test-helper-chai": "3.0.0-beta.2",
26
- "@webex/test-helper-mock-webex": "3.0.0-beta.2",
27
- "@webex/test-helper-retry": "3.0.0-beta.2",
28
- "@webex/test-helper-test-users": "3.0.0-beta.2",
25
+ "@webex/test-helper-chai": "3.0.0-beta.21",
26
+ "@webex/test-helper-mock-webex": "3.0.0-beta.21",
27
+ "@webex/test-helper-retry": "3.0.0-beta.21",
28
+ "@webex/test-helper-test-users": "3.0.0-beta.21",
29
29
  "sinon": "^9.2.4"
30
30
  },
31
31
  "dependencies": {
32
- "@webex/common": "3.0.0-beta.2",
33
- "@webex/internal-plugin-conversation": "3.0.0-beta.2",
34
- "@webex/internal-plugin-encryption": "3.0.0-beta.2",
35
- "@webex/internal-plugin-feature": "3.0.0-beta.2",
36
- "@webex/internal-plugin-locus": "3.0.0-beta.2",
37
- "@webex/internal-plugin-lyra": "3.0.0-beta.2",
38
- "@webex/internal-plugin-mercury": "3.0.0-beta.2",
39
- "@webex/webex-core": "3.0.0-beta.2",
32
+ "@webex/common": "3.0.0-beta.21",
33
+ "@webex/internal-plugin-conversation": "3.0.0-beta.21",
34
+ "@webex/internal-plugin-encryption": "3.0.0-beta.21",
35
+ "@webex/internal-plugin-feature": "3.0.0-beta.21",
36
+ "@webex/internal-plugin-locus": "3.0.0-beta.21",
37
+ "@webex/internal-plugin-lyra": "3.0.0-beta.21",
38
+ "@webex/internal-plugin-mercury": "3.0.0-beta.21",
39
+ "@webex/webex-core": "3.0.0-beta.21",
40
40
  "bowser": "^2.11.0",
41
41
  "uuid": "^3.3.2"
42
42
  }
package/src/config.js CHANGED
@@ -3,6 +3,5 @@
3
3
  */
4
4
 
5
5
  export default {
6
- lyra: {
7
- }
6
+ lyra: {},
8
7
  };
package/src/device.js CHANGED
@@ -19,10 +19,11 @@ const Device = WebexPlugin.extend({
19
19
  * @returns {Promise<LyraAudioState>} {volume, microphones, url}
20
20
  */
21
21
  getAudioState(space) {
22
- return this.webex.request({
23
- method: 'GET',
24
- uri: `${space.url}/audio`
25
- })
22
+ return this.webex
23
+ .request({
24
+ method: 'GET',
25
+ uri: `${space.url}/audio`,
26
+ })
26
27
  .then((res) => res.body);
27
28
  },
28
29
 
@@ -44,11 +45,12 @@ const Device = WebexPlugin.extend({
44
45
  return Promise.reject(new Error('audioState.deviceUrl is required'));
45
46
  }
46
47
 
47
- return this.webex.request({
48
- method: 'PUT',
49
- uri: `${space.url}/audio`,
50
- body: audioState
51
- })
48
+ return this.webex
49
+ .request({
50
+ method: 'PUT',
51
+ uri: `${space.url}/audio`,
52
+ body: audioState,
53
+ })
52
54
  .then((res) => res.body);
53
55
  },
54
56
 
@@ -61,7 +63,7 @@ const Device = WebexPlugin.extend({
61
63
  mute(space) {
62
64
  return this.webex.request({
63
65
  method: 'POST',
64
- uri: `${space.url}/audio/microphones/actions/mute/invoke`
66
+ uri: `${space.url}/audio/microphones/actions/mute/invoke`,
65
67
  });
66
68
  },
67
69
 
@@ -74,7 +76,7 @@ const Device = WebexPlugin.extend({
74
76
  unmute(space) {
75
77
  return this.webex.request({
76
78
  method: 'POST',
77
- uri: `${space.url}/audio/microphones/actions/un-mute/invoke`
79
+ uri: `${space.url}/audio/microphones/actions/un-mute/invoke`,
78
80
  });
79
81
  },
80
82
 
@@ -87,7 +89,7 @@ const Device = WebexPlugin.extend({
87
89
  increaseVolume(space) {
88
90
  return this.webex.request({
89
91
  method: 'POST',
90
- uri: `${space.url}/audio/volume/actions/increase/invoke`
92
+ uri: `${space.url}/audio/volume/actions/increase/invoke`,
91
93
  });
92
94
  },
93
95
 
@@ -100,7 +102,7 @@ const Device = WebexPlugin.extend({
100
102
  decreaseVolume(space) {
101
103
  return this.webex.request({
102
104
  method: 'POST',
103
- uri: `${space.url}/audio/volume/actions/decrease/invoke`
105
+ uri: `${space.url}/audio/volume/actions/decrease/invoke`,
104
106
  });
105
107
  },
106
108
 
@@ -116,11 +118,10 @@ const Device = WebexPlugin.extend({
116
118
  method: 'POST',
117
119
  uri: `${space.url}/audio/volume/actions/set/invoke`,
118
120
  body: {
119
- level
120
- }
121
+ level,
122
+ },
121
123
  });
122
- }
123
-
124
+ },
124
125
  });
125
126
 
126
127
  export default Device;
package/src/index.js CHANGED
@@ -13,7 +13,7 @@ import Lyra from './lyra';
13
13
  import config from './config';
14
14
 
15
15
  registerInternalPlugin('lyra', Lyra, {
16
- config
16
+ config,
17
17
  });
18
18
 
19
19
  export {default} from './lyra';
package/src/lyra.js CHANGED
@@ -28,7 +28,7 @@ const Lyra = WebexPlugin.extend({
28
28
  namespace: 'Lyra',
29
29
  children: {
30
30
  space: Space,
31
- device: Device
31
+ device: Device,
32
32
  },
33
33
 
34
34
  /**
@@ -37,17 +37,17 @@ const Lyra = WebexPlugin.extend({
37
37
  * @returns {Promise<Endpoint>}
38
38
  */
39
39
  getAdvertisedEndpoint(token) {
40
- return this.webex.request({
41
- method: 'GET',
42
- api: 'proximity',
43
- resource: '/ultrasound/advertisements',
44
- qs: {
45
- token
46
- }
47
- })
40
+ return this.webex
41
+ .request({
42
+ method: 'GET',
43
+ api: 'proximity',
44
+ resource: '/ultrasound/advertisements',
45
+ qs: {
46
+ token,
47
+ },
48
+ })
48
49
  .then((res) => res.body);
49
- }
50
+ },
50
51
  });
51
52
 
52
-
53
53
  export default Lyra;
package/src/space.js CHANGED
@@ -21,11 +21,12 @@ const Space = WebexPlugin.extend({
21
21
  * @returns {Promise<Array>} spaces
22
22
  */
23
23
  list() {
24
- return this.webex.request({
25
- method: 'GET',
26
- api: 'lyra',
27
- resource: '/spaces'
28
- })
24
+ return this.webex
25
+ .request({
26
+ method: 'GET',
27
+ api: 'lyra',
28
+ resource: '/spaces',
29
+ })
29
30
  .then((res) => res.body.items);
30
31
  },
31
32
 
@@ -37,17 +38,18 @@ const Space = WebexPlugin.extend({
37
38
  * @returns {Promise<LyraSpace>} response body
38
39
  */
39
40
  get(space = {}) {
40
- const spaceId = space.id || space.identity && space.identity.id;
41
+ const spaceId = space.id || (space.identity && space.identity.id);
41
42
 
42
43
  if (!spaceId) {
43
44
  return Promise.reject(new Error('space.id is required'));
44
45
  }
45
46
 
46
- return this.webex.request({
47
- method: 'GET',
48
- api: 'lyra',
49
- resource: `/spaces/${spaceId}`
50
- })
47
+ return this.webex
48
+ .request({
49
+ method: 'GET',
50
+ api: 'lyra',
51
+ resource: `/spaces/${spaceId}`,
52
+ })
51
53
  .then((res) => res.body);
52
54
  },
53
55
 
@@ -62,15 +64,16 @@ const Space = WebexPlugin.extend({
62
64
  * @returns {Promise}
63
65
  */
64
66
  join(space, options) {
65
- options = Object.assign({
66
- passType: 'MANUAL'
67
- }, options);
67
+ options = {
68
+ passType: 'MANUAL',
69
+ ...options,
70
+ };
68
71
 
69
72
  const body = {
70
73
  pass: {
71
- type: options.passType
74
+ type: options.passType,
72
75
  },
73
- deviceUrl: this.webex.internal.device.url
76
+ deviceUrl: this.webex.internal.device.url,
74
77
  };
75
78
 
76
79
  if (options.data) {
@@ -87,7 +90,7 @@ const Space = WebexPlugin.extend({
87
90
  return this.webex.request({
88
91
  method: 'PUT',
89
92
  uri: options.uri,
90
- body
93
+ body,
91
94
  });
92
95
  }
93
96
 
@@ -95,7 +98,7 @@ const Space = WebexPlugin.extend({
95
98
  method: 'PUT',
96
99
  api: 'lyra',
97
100
  resource: `${space.url}/occupants/@me`,
98
- body
101
+ body,
99
102
  });
100
103
  },
101
104
 
@@ -113,7 +116,7 @@ const Space = WebexPlugin.extend({
113
116
 
114
117
  if (!options.removeAllDevices) {
115
118
  const params = {
116
- deviceUrl: base64.toBase64Url(this.webex.internal.device.url)
119
+ deviceUrl: base64.toBase64Url(this.webex.internal.device.url),
117
120
  };
118
121
 
119
122
  uri += `?${querystring.stringify(params)}`;
@@ -122,7 +125,7 @@ const Space = WebexPlugin.extend({
122
125
  return this.webex.request({
123
126
  method: 'DELETE',
124
127
  api: 'lyra',
125
- resource: uri
128
+ resource: uri,
126
129
  });
127
130
  },
128
131
 
@@ -136,18 +139,17 @@ const Space = WebexPlugin.extend({
136
139
  verifyOccupant(space, occupantId) {
137
140
  const body = {
138
141
  pass: {
139
- type: 'VERIFICATION'
140
- }
142
+ type: 'VERIFICATION',
143
+ },
141
144
  };
142
145
 
143
146
  return this.webex.request({
144
147
  method: 'PUT',
145
148
  uri: `${space.url}/occupants/${occupantId}`,
146
- body
149
+ body,
147
150
  });
148
151
  },
149
152
 
150
-
151
153
  /**
152
154
  * Gets the state of bindings in this Lyra space
153
155
  * @param {Types~LyraSpace} space
@@ -155,10 +157,11 @@ const Space = WebexPlugin.extend({
155
157
  * @returns {Promise<LyraBindings>} bindings response body
156
158
  */
157
159
  getCurrentBindings(space) {
158
- return this.webex.request({
159
- method: 'GET',
160
- uri: `${space.url}/bindings`
161
- })
160
+ return this.webex
161
+ .request({
162
+ method: 'GET',
163
+ uri: `${space.url}/bindings`,
164
+ })
162
165
  .then((res) => res.body);
163
166
  },
164
167
 
@@ -176,7 +179,7 @@ const Space = WebexPlugin.extend({
176
179
  * @returns {Promise<LyraBindings>} bindings response body
177
180
  */
178
181
  bindConversation(space = {}, conversation = {}, options = {}) {
179
- const spaceId = space.id || space.identity && space.identity.id;
182
+ const spaceId = space.id || (space.identity && space.identity.id);
180
183
 
181
184
  if (!space.url) {
182
185
  return Promise.reject(new Error('space.url is required'));
@@ -199,22 +202,21 @@ const Space = WebexPlugin.extend({
199
202
  method: 'create',
200
203
  uri: '/authorizations',
201
204
  resourceUri: `${conversation.kmsResourceObjectUrl}`,
202
- userIds: [spaceId]
205
+ userIds: [spaceId],
203
206
  },
204
- conversationUrl: conversation.url
207
+ conversationUrl: conversation.url,
205
208
  };
206
209
 
207
210
  const request = {
208
211
  method: 'POST',
209
- body
212
+ body,
210
213
  };
211
214
 
212
215
  // if options.uri is available use it, since that would have the
213
216
  // complete lyra service URL
214
217
  if (options.uri) {
215
218
  request.uri = options.uri;
216
- }
217
- else {
219
+ } else {
218
220
  request.api = 'lyra';
219
221
  request.resource = `${space.url}/bindings`;
220
222
  }
@@ -246,8 +248,8 @@ const Space = WebexPlugin.extend({
246
248
  api: 'lyra',
247
249
  resource,
248
250
  body: {
249
- bindingCleanupAfterCall: true
250
- }
251
+ bindingCleanupAfterCall: true,
252
+ },
251
253
  });
252
254
  },
253
255
 
@@ -266,7 +268,7 @@ const Space = WebexPlugin.extend({
266
268
  * @returns {Promise<LyraBindings>} bindings response body
267
269
  */
268
270
  unbindConversation(space = {}, conversation = {}, options = {}) {
269
- const spaceId = space.id || space.identity && space.identity.id;
271
+ const spaceId = space.id || (space.identity && space.identity.id);
270
272
 
271
273
  if (!space.url) {
272
274
  return Promise.reject(new Error('space.url is required'));
@@ -287,29 +289,30 @@ const Space = WebexPlugin.extend({
287
289
  const parameters = {
288
290
  kmsMessage: {
289
291
  method: 'delete',
290
- uri: `${conversation.kmsResourceObjectUrl}/authorizations?${querystring.stringify({authId: spaceId})}`
292
+ uri: `${conversation.kmsResourceObjectUrl}/authorizations?${querystring.stringify({
293
+ authId: spaceId,
294
+ })}`,
291
295
  },
292
- conversationUrl: base64.toBase64Url(conversation.url)
296
+ conversationUrl: base64.toBase64Url(conversation.url),
293
297
  };
294
298
 
295
- return this.webex.internal.encryption.kms.prepareRequest(parameters.kmsMessage)
296
- .then((req) => {
297
- parameters.kmsMessage = req.wrapped;
298
- // if options.uri is available use it, since that would have the
299
- // complete lyra service URL
300
- if (options.uri) {
301
- return this.webex.request({
302
- method: 'DELETE',
303
- uri: `${options.uri}?${querystring.stringify(parameters)}`
304
- });
305
- }
306
-
299
+ return this.webex.internal.encryption.kms.prepareRequest(parameters.kmsMessage).then((req) => {
300
+ parameters.kmsMessage = req.wrapped;
301
+ // if options.uri is available use it, since that would have the
302
+ // complete lyra service URL
303
+ if (options.uri) {
307
304
  return this.webex.request({
308
305
  method: 'DELETE',
309
- api: 'lyra',
310
- resource: `${space.url}/bindings?${querystring.stringify(parameters)}`
306
+ uri: `${options.uri}?${querystring.stringify(parameters)}`,
311
307
  });
308
+ }
309
+
310
+ return this.webex.request({
311
+ method: 'DELETE',
312
+ api: 'lyra',
313
+ resource: `${space.url}/bindings?${querystring.stringify(parameters)}`,
312
314
  });
315
+ });
313
316
  },
314
317
 
315
318
  /**
@@ -323,7 +326,7 @@ const Space = WebexPlugin.extend({
323
326
  * @returns {Promise<LyraBindings>} bindings response body
324
327
  */
325
328
  deleteBinding(space = {}, options = {}) {
326
- const spaceId = space.id || space.identity && space.identity.id;
329
+ const spaceId = space.id || (space.identity && space.identity.id);
327
330
 
328
331
  if (!space.url) {
329
332
  return Promise.reject(new Error('space.url is required'));
@@ -344,20 +347,21 @@ const Space = WebexPlugin.extend({
344
347
  const parameters = {
345
348
  kmsMessage: {
346
349
  method: 'delete',
347
- uri: `${options.kmsResourceObjectUrl}/authorizations?${querystring.stringify({authId: spaceId})}`
348
- }
350
+ uri: `${options.kmsResourceObjectUrl}/authorizations?${querystring.stringify({
351
+ authId: spaceId,
352
+ })}`,
353
+ },
349
354
  };
350
355
 
351
- return this.webex.internal.encryption.kms.prepareRequest(parameters.kmsMessage)
352
- .then((req) => {
353
- parameters.kmsMessage = req.wrapped;
356
+ return this.webex.internal.encryption.kms.prepareRequest(parameters.kmsMessage).then((req) => {
357
+ parameters.kmsMessage = req.wrapped;
354
358
 
355
- return this.webex.request({
356
- method: 'DELETE',
357
- uri: `${space.url}/bindings/${options.bindingId}?${querystring.stringify(parameters)}`
358
- });
359
+ return this.webex.request({
360
+ method: 'DELETE',
361
+ uri: `${space.url}/bindings/${options.bindingId}?${querystring.stringify(parameters)}`,
359
362
  });
360
- }
363
+ });
364
+ },
361
365
  });
362
366
 
363
367
  export default Space;