@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/README.md +1 -3
- package/dist/config.js +0 -3
- package/dist/config.js.map +1 -1
- package/dist/device.js +1 -17
- package/dist/device.js.map +1 -1
- package/dist/index.js +1 -12
- package/dist/index.js.map +1 -1
- package/dist/lyra.js +2 -10
- package/dist/lyra.js.map +1 -1
- package/dist/space.js +20 -64
- package/dist/space.js.map +1 -1
- package/package.json +13 -13
- package/src/config.js +1 -2
- package/src/device.js +18 -17
- package/src/index.js +1 -1
- package/src/lyra.js +11 -11
- package/src/space.js +68 -64
- package/test/integration/spec/device.js +69 -48
- package/test/integration/spec/space.js +127 -82
- package/test/unit/spec/device.js +22 -15
- package/test/unit/spec/lyra.js +16 -11
- package/test/unit/spec/space.js +132 -71
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":";;;;;;;;;;;;;;;;AAIA;;AAEA;;AACA;;AAPA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA,IAAMA,KAAK,GAAGC,sBAAA,CAAYC,MAAZ,CAAmB;EAC/BC,SAAS,EAAE,MADoB;;EAG/B;AACF;AACA;AACA;AACA;EACEC,IAR+B,kBAQxB;IACL,OAAO,KAAKC,KAAL,CAAWC,OAAX,CAAmB;MACxBC,MAAM,EAAE,KADgB;MAExBC,GAAG,EAAE,MAFmB;MAGxBC,QAAQ,EAAE;IAHc,CAAnB,EAKJC,IALI,CAKC,UAACC,GAAD;MAAA,OAASA,GAAG,CAACC,IAAJ,CAASC,KAAlB;IAAA,CALD,CAAP;EAMD,CAf8B;;EAiB/B;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,GAxB+B,iBAwBf;IAAA,IAAZC,KAAY,uEAAJ,EAAI;IACd,IAAMC,OAAO,GAAGD,KAAK,CAACE,EAAN,IAAYF,KAAK,CAACG,QAAN,IAAkBH,KAAK,CAACG,QAAN,CAAeD,EAA7D;;IAEA,IAAI,CAACD,OAAL,EAAc;MACZ,OAAO,iBAAQG,MAAR,CAAe,IAAIC,KAAJ,CAAU,sBAAV,CAAf,CAAP;IACD;;IAED,OAAO,KAAKf,KAAL,CAAWC,OAAX,CAAmB;MACxBC,MAAM,EAAE,KADgB;MAExBC,GAAG,EAAE,MAFmB;MAGxBC,QAAQ,oBAAaO,OAAb;IAHgB,CAAnB,EAKJN,IALI,CAKC,UAACC,GAAD;MAAA,OAASA,GAAG,CAACC,IAAb;IAAA,CALD,CAAP;EAMD,CArC8B;;EAuC/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACES,IAjD+B,gBAiD1BN,KAjD0B,EAiDnBO,OAjDmB,EAiDV;IACnBA,OAAO,GAAG,qBAAc;MACtBC,QAAQ,EAAE;IADY,CAAd,EAEPD,OAFO,CAAV;IAIA,IAAMV,IAAI,GAAG;MACXY,IAAI,EAAE;QACJC,IAAI,EAAEH,OAAO,CAACC;MADV,CADK;MAIXG,SAAS,EAAE,KAAKrB,KAAL,CAAWsB,QAAX,CAAoBC,MAApB,CAA2BC;IAJ3B,CAAb;;IAOA,IAAIP,OAAO,CAACQ,IAAZ,EAAkB;MAChBlB,IAAI,CAACY,IAAL,CAAUM,IAAV,GAAiBR,OAAO,CAACQ,IAAzB;IACD;;IAED,IAAIR,OAAO,CAACS,sBAAZ,EAAoC;MAClCnB,IAAI,CAACmB,sBAAL,GAA8BT,OAAO,CAACS,sBAAtC;IACD,CAlBkB,CAoBnB;IACA;;;IACA,IAAIT,OAAO,CAACU,GAAZ,EAAiB;MACf,OAAO,KAAK3B,KAAL,CAAWC,OAAX,CAAmB;QACxBC,MAAM,EAAE,KADgB;QAExByB,GAAG,EAAEV,OAAO,CAACU,GAFW;QAGxBpB,IAAI,EAAJA;MAHwB,CAAnB,CAAP;IAKD;;IAED,OAAO,KAAKP,KAAL,CAAWC,OAAX,CAAmB;MACxBC,MAAM,EAAE,KADgB;MAExBC,GAAG,EAAE,MAFmB;MAGxBC,QAAQ,YAAKM,KAAK,CAACc,GAAX,mBAHgB;MAIxBjB,IAAI,EAAJA;IAJwB,CAAnB,CAAP;EAMD,CArF8B;;EAuF/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEqB,KA/F+B,iBA+FzBlB,KA/FyB,EA+FJ;IAAA,IAAdO,OAAc,uEAAJ,EAAI;IACzB;IACA,IAAIU,GAAG,aAAMjB,KAAK,CAACc,GAAZ,mBAAP;;IAEA,IAAI,CAACP,OAAO,CAACY,gBAAb,EAA+B;MAC7B,IAAMC,MAAM,GAAG;QACbT,SAAS,EAAEU,cAAA,CAAOC,WAAP,CAAmB,KAAKhC,KAAL,CAAWsB,QAAX,CAAoBC,MAApB,CAA2BC,GAA9C;MADE,CAAf;MAIAG,GAAG,eAAQM,oBAAA,CAAYC,SAAZ,CAAsBJ,MAAtB,CAAR,CAAH;IACD;;IAED,OAAO,KAAK9B,KAAL,CAAWC,OAAX,CAAmB;MACxBC,MAAM,EAAE,QADgB;MAExBC,GAAG,EAAE,MAFmB;MAGxBC,QAAQ,EAAEuB;IAHc,CAAnB,CAAP;EAKD,CAhH8B;;EAkH/B;AACF;AACA;AACA;AACA;AACA;AACA;EACEQ,cAzH+B,0BAyHhBzB,KAzHgB,EAyHT0B,UAzHS,EAyHG;IAChC,IAAM7B,IAAI,GAAG;MACXY,IAAI,EAAE;QACJC,IAAI,EAAE;MADF;IADK,CAAb;IAMA,OAAO,KAAKpB,KAAL,CAAWC,OAAX,CAAmB;MACxBC,MAAM,EAAE,KADgB;MAExByB,GAAG,YAAKjB,KAAK,CAACc,GAAX,wBAA4BY,UAA5B,CAFqB;MAGxB7B,IAAI,EAAJA;IAHwB,CAAnB,CAAP;EAKD,CArI8B;;EAwI/B;AACF;AACA;AACA;AACA;AACA;EACE8B,kBA9I+B,8BA8IZ3B,KA9IY,EA8IL;IACxB,OAAO,KAAKV,KAAL,CAAWC,OAAX,CAAmB;MACxBC,MAAM,EAAE,KADgB;MAExByB,GAAG,YAAKjB,KAAK,CAACc,GAAX;IAFqB,CAAnB,EAIJnB,IAJI,CAIC,UAACC,GAAD;MAAA,OAASA,GAAG,CAACC,IAAb;IAAA,CAJD,CAAP;EAKD,CApJ8B;;EAsJ/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE+B,gBAnK+B,8BAmK+B;IAAA;;IAAA,IAA7C5B,KAA6C,uEAArC,EAAqC;IAAA,IAAjC6B,YAAiC,uEAAlB,EAAkB;IAAA,IAAdtB,OAAc,uEAAJ,EAAI;IAC5D,IAAMN,OAAO,GAAGD,KAAK,CAACE,EAAN,IAAYF,KAAK,CAACG,QAAN,IAAkBH,KAAK,CAACG,QAAN,CAAeD,EAA7D;;IAEA,IAAI,CAACF,KAAK,CAACc,GAAX,EAAgB;MACd,OAAO,iBAAQV,MAAR,CAAe,IAAIC,KAAJ,CAAU,uBAAV,CAAf,CAAP;IACD;;IAED,IAAI,CAACJ,OAAL,EAAc;MACZ,OAAO,iBAAQG,MAAR,CAAe,IAAIC,KAAJ,CAAU,sBAAV,CAAf,CAAP;IACD;;IAED,IAAI,CAACwB,YAAY,CAACC,oBAAlB,EAAwC;MACtC,OAAO,iBAAQ1B,MAAR,CAAe,IAAIC,KAAJ,CAAU,+CAAV,CAAf,CAAP;IACD;;IAED,IAAI,CAACwB,YAAY,CAACf,GAAlB,EAAuB;MACrB,OAAO,iBAAQV,MAAR,CAAe,IAAIC,KAAJ,CAAU,8BAAV,CAAf,CAAP;IACD;;IAED,IAAMR,IAAI,GAAG;MACXkC,UAAU,EAAE;QACVvC,MAAM,EAAE,QADE;QAEVyB,GAAG,EAAE,iBAFK;QAGVe,WAAW,YAAKH,YAAY,CAACC,oBAAlB,CAHD;QAIVG,OAAO,EAAE,CAAChC,OAAD;MAJC,CADD;MAOXiC,eAAe,EAAEL,YAAY,CAACf;IAPnB,CAAb;IAUA,IAAMvB,OAAO,GAAG;MACdC,MAAM,EAAE,MADM;MAEdK,IAAI,EAAJA;IAFc,CAAhB,CA7B4D,CAkC5D;IACA;;IACA,IAAIU,OAAO,CAACU,GAAZ,EAAiB;MACf1B,OAAO,CAAC0B,GAAR,GAAcV,OAAO,CAACU,GAAtB;IACD,CAFD,MAGK;MACH1B,OAAO,CAACE,GAAR,GAAc,MAAd;MACAF,OAAO,CAACG,QAAR,aAAsBM,KAAK,CAACc,GAA5B;IACD;;IAED,OAAO,KAAKqB,iBAAL,CAAuBlC,OAAvB,EACJN,IADI,CACC;MAAA,OAAM,KAAI,CAACL,KAAL,CAAWC,OAAX,CAAmBA,OAAnB,CAAN;IAAA,CADD,EAEJI,IAFI,CAEC,UAACC,GAAD;MAAA,OAASA,GAAG,CAACC,IAAb;IAAA,CAFD,CAAP;EAGD,CAlN8B;;EAoN/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEsC,iBA5N+B,6BA4NblC,OA5Na,EA4NJ;IACzB;;IACA;IACA,OAAO,iBAAQmC,OAAR,EAAP,CAHyB,CAKzB;;IACA,IAAMC,gBAAgB,GAAGhB,cAAA,CAAOiB,MAAP,CAAc,KAAKhD,KAAL,CAAWsB,QAAX,CAAoBC,MAApB,CAA2BC,GAAzC,CAAzB;;IACA,IAAMpB,QAAQ,oBAAaO,OAAb,sBAAgCoC,gBAAhC,kBAAd;IAEA,OAAO,KAAK/C,KAAL,CAAWC,OAAX,CAAmB;MACxBC,MAAM,EAAE,KADgB;MAExBC,GAAG,EAAE,MAFmB;MAGxBC,QAAQ,EAARA,QAHwB;MAIxBG,IAAI,EAAE;QACJ0C,uBAAuB,EAAE;MADrB;IAJkB,CAAnB,CAAP;EAQD,CA7O8B;;EA+O/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,kBA7P+B,gCA6PiC;IAAA;;IAAA,IAA7CxC,KAA6C,uEAArC,EAAqC;IAAA,IAAjC6B,YAAiC,uEAAlB,EAAkB;IAAA,IAAdtB,OAAc,uEAAJ,EAAI;IAC9D,IAAMN,OAAO,GAAGD,KAAK,CAACE,EAAN,IAAYF,KAAK,CAACG,QAAN,IAAkBH,KAAK,CAACG,QAAN,CAAeD,EAA7D;;IAEA,IAAI,CAACF,KAAK,CAACc,GAAX,EAAgB;MACd,OAAO,iBAAQV,MAAR,CAAe,IAAIC,KAAJ,CAAU,uBAAV,CAAf,CAAP;IACD;;IAED,IAAI,CAACJ,OAAL,EAAc;MACZ,OAAO,iBAAQG,MAAR,CAAe,IAAIC,KAAJ,CAAU,sBAAV,CAAf,CAAP;IACD;;IAED,IAAI,CAACwB,YAAY,CAACf,GAAlB,EAAuB;MACrB,OAAO,iBAAQV,MAAR,CAAe,IAAIC,KAAJ,CAAU,8BAAV,CAAf,CAAP;IACD;;IAED,IAAI,CAACwB,YAAY,CAACC,oBAAlB,EAAwC;MACtC,OAAO,iBAAQ1B,MAAR,CAAe,IAAIC,KAAJ,CAAU,+CAAV,CAAf,CAAP;IACD;;IAED,IAAMoC,UAAU,GAAG;MACjBV,UAAU,EAAE;QACVvC,MAAM,EAAE,QADE;QAEVyB,GAAG,YAAKY,YAAY,CAACC,oBAAlB,6BAAyDP,oBAAA,CAAYC,SAAZ,CAAsB;UAACkB,MAAM,EAAEzC;QAAT,CAAtB,CAAzD;MAFO,CADK;MAKjBiC,eAAe,EAAEb,cAAA,CAAOC,WAAP,CAAmBO,YAAY,CAACf,GAAhC;IALA,CAAnB;IAQA,OAAO,KAAKxB,KAAL,CAAWsB,QAAX,CAAoB+B,UAApB,CAA+BC,GAA/B,CAAmCC,cAAnC,CAAkDJ,UAAU,CAACV,UAA7D,EACJpC,IADI,CACC,UAACmD,GAAD,EAAS;MACbL,UAAU,CAACV,UAAX,GAAwBe,GAAG,CAACC,OAA5B,CADa,CAEb;MACA;;MACA,IAAIxC,OAAO,CAACU,GAAZ,EAAiB;QACf,OAAO,MAAI,CAAC3B,KAAL,CAAWC,OAAX,CAAmB;UACxBC,MAAM,EAAE,QADgB;UAExByB,GAAG,YAAKV,OAAO,CAACU,GAAb,cAAoBM,oBAAA,CAAYC,SAAZ,CAAsBiB,UAAtB,CAApB;QAFqB,CAAnB,CAAP;MAID;;MAED,OAAO,MAAI,CAACnD,KAAL,CAAWC,OAAX,CAAmB;QACxBC,MAAM,EAAE,QADgB;QAExBC,GAAG,EAAE,MAFmB;QAGxBC,QAAQ,YAAKM,KAAK,CAACc,GAAX,uBAA2BS,oBAAA,CAAYC,SAAZ,CAAsBiB,UAAtB,CAA3B;MAHgB,CAAnB,CAAP;IAKD,CAjBI,CAAP;EAkBD,CA1S8B;;EA4S/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEO,aAtT+B,2BAsTS;IAAA;;IAAA,IAA1BhD,KAA0B,uEAAlB,EAAkB;IAAA,IAAdO,OAAc,uEAAJ,EAAI;IACtC,IAAMN,OAAO,GAAGD,KAAK,CAACE,EAAN,IAAYF,KAAK,CAACG,QAAN,IAAkBH,KAAK,CAACG,QAAN,CAAeD,EAA7D;;IAEA,IAAI,CAACF,KAAK,CAACc,GAAX,EAAgB;MACd,OAAO,iBAAQV,MAAR,CAAe,IAAIC,KAAJ,CAAU,uBAAV,CAAf,CAAP;IACD;;IAED,IAAI,CAACJ,OAAL,EAAc;MACZ,OAAO,iBAAQG,MAAR,CAAe,IAAIC,KAAJ,CAAU,sBAAV,CAAf,CAAP;IACD;;IAED,IAAI,CAACE,OAAO,CAACuB,oBAAb,EAAmC;MACjC,OAAO,iBAAQ1B,MAAR,CAAe,IAAIC,KAAJ,CAAU,0CAAV,CAAf,CAAP;IACD;;IAED,IAAI,CAACE,OAAO,CAAC0C,SAAb,EAAwB;MACtB,OAAO,iBAAQ7C,MAAR,CAAe,IAAIC,KAAJ,CAAU,+BAAV,CAAf,CAAP;IACD;;IAED,IAAMoC,UAAU,GAAG;MACjBV,UAAU,EAAE;QACVvC,MAAM,EAAE,QADE;QAEVyB,GAAG,YAAKV,OAAO,CAACuB,oBAAb,6BAAoDP,oBAAA,CAAYC,SAAZ,CAAsB;UAACkB,MAAM,EAAEzC;QAAT,CAAtB,CAApD;MAFO;IADK,CAAnB;IAOA,OAAO,KAAKX,KAAL,CAAWsB,QAAX,CAAoB+B,UAApB,CAA+BC,GAA/B,CAAmCC,cAAnC,CAAkDJ,UAAU,CAACV,UAA7D,EACJpC,IADI,CACC,UAACmD,GAAD,EAAS;MACbL,UAAU,CAACV,UAAX,GAAwBe,GAAG,CAACC,OAA5B;MAEA,OAAO,MAAI,CAACzD,KAAL,CAAWC,OAAX,CAAmB;QACxBC,MAAM,EAAE,QADgB;QAExByB,GAAG,YAAKjB,KAAK,CAACc,GAAX,uBAA2BP,OAAO,CAAC0C,SAAnC,cAAgD1B,oBAAA,CAAYC,SAAZ,CAAsBiB,UAAtB,CAAhD;MAFqB,CAAnB,CAAP;IAID,CARI,CAAP;EASD,CAzV8B;EAAA;AAAA,CAAnB,CAAd;;eA4VexD,K"}
|
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/internal-plugin-lyra",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
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.
|
|
26
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
27
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
28
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
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.
|
|
33
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
34
|
-
"@webex/internal-plugin-encryption": "3.0.0-beta.
|
|
35
|
-
"@webex/internal-plugin-feature": "3.0.0-beta.
|
|
36
|
-
"@webex/internal-plugin-locus": "3.0.0-beta.
|
|
37
|
-
"@webex/internal-plugin-lyra": "3.0.0-beta.
|
|
38
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
39
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
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
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
|
|
23
|
-
|
|
24
|
-
|
|
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
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
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
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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 =
|
|
66
|
-
passType: 'MANUAL'
|
|
67
|
-
|
|
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
|
|
159
|
-
|
|
160
|
-
|
|
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({
|
|
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
|
-
.
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
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
|
-
|
|
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({
|
|
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
|
-
.
|
|
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
|
-
|
|
356
|
-
|
|
357
|
-
|
|
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;
|