@webex/internal-plugin-support 3.0.0-beta.42 → 3.0.0-beta.421
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/support.js +8 -2
- package/dist/support.js.map +1 -1
- package/package.json +9 -9
- package/src/support.js +10 -0
- package/test/unit/spec/support.js +63 -4
package/dist/support.js
CHANGED
|
@@ -129,7 +129,7 @@ var Support = _webexCore.WebexPlugin.extend({
|
|
|
129
129
|
* @returns {array}
|
|
130
130
|
*/
|
|
131
131
|
_constructFileMetadata: function _constructFileMetadata(metadata) {
|
|
132
|
-
var metadataArray = ['locusId', 'callStart', 'feedbackId', 'correlationId', 'meetingId', 'surveySessionId', 'productAreaTag', 'issueTypeTag'].map(function (key) {
|
|
132
|
+
var metadataArray = ['locusId', 'appVersion', 'callStart', 'feedbackId', 'correlationId', 'meetingId', 'surveySessionId', 'productAreaTag', 'issueTypeTag', 'locussessionid', 'autoupload'].map(function (key) {
|
|
133
133
|
if (metadata[key]) {
|
|
134
134
|
return {
|
|
135
135
|
key: key,
|
|
@@ -146,6 +146,12 @@ var Support = _webexCore.WebexPlugin.extend({
|
|
|
146
146
|
value: this.webex.sessionId
|
|
147
147
|
});
|
|
148
148
|
}
|
|
149
|
+
if (this.webex.internal.support.config.appVersion) {
|
|
150
|
+
metadataArray.push({
|
|
151
|
+
key: 'appVersion',
|
|
152
|
+
value: this.webex.internal.support.config.appVersion
|
|
153
|
+
});
|
|
154
|
+
}
|
|
149
155
|
if (this.webex.internal.device.userId) {
|
|
150
156
|
metadataArray.push({
|
|
151
157
|
key: 'userId',
|
|
@@ -160,7 +166,7 @@ var Support = _webexCore.WebexPlugin.extend({
|
|
|
160
166
|
}
|
|
161
167
|
return metadataArray;
|
|
162
168
|
},
|
|
163
|
-
version: "3.0.0-beta.
|
|
169
|
+
version: "3.0.0-beta.421"
|
|
164
170
|
});
|
|
165
171
|
var _default = Support;
|
|
166
172
|
exports.default = _default;
|
package/dist/support.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Support","WebexPlugin","extend","namespace","getFeedbackUrl","options","request","method","api","resource","body","appVersion","config","appType","feedbackId","uuid","v4","languageCode","then","res","url","getSupportUrl","webex","qs","submitLogs","metadata","logs","metadataArray","_constructFileMetadata","logger","sdkBuffer","clientBuffer","buffer","formatLogs","filename","locusId","callStart","sessionId","userId","credentials","getUserToken","catch","getClientToken","token","headers","authorization","toString","initalOpts","service","finalOpts","file","shouldAttemptReauth","phases","initialize","upload","$uri","session","tempURL","finalize","$body","logFilename","data","internal","device","map","key","value","filter","entry","Boolean","push","orgId"],"sources":["support.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\nimport {defaults} from 'lodash';\nimport uuid from 'uuid';\n\nconst Support = WebexPlugin.extend({\n namespace: 'Support',\n\n getFeedbackUrl(options) {\n options = options || {};\n\n return this.request({\n method: 'POST',\n api: 'conversation',\n resource: 'users/deskFeedbackUrl',\n body: defaults(options, {\n appVersion: this.config.appVersion,\n appType: this.config.appType,\n feedbackId: options.feedbackId || uuid.v4(),\n languageCode: this.config.languageCode,\n }),\n }).then((res) => res.body.url);\n },\n\n getSupportUrl() {\n return this.webex\n .request({\n method: 'GET',\n api: 'conversation',\n resource: 'users/deskSupportUrl',\n qs: {\n languageCode: this.config.languageCode,\n },\n })\n .then((res) => res.body.url);\n },\n\n submitLogs(metadata, logs) {\n const metadataArray = this._constructFileMetadata(metadata);\n\n // this is really testing that Ampersand is fully ready. once it's ready, these exist\n if (\n !logs &&\n this.webex.logger.sdkBuffer &&\n this.webex.logger.clientBuffer &&\n this.webex.logger.buffer\n ) {\n logs = this.webex.logger.formatLogs();\n }\n\n let filename;\n\n if (metadata.locusId && metadata.callStart) {\n filename = `${metadata.locusId}_${metadata.callStart}.txt`;\n } else {\n filename = `${this.webex.sessionId}.txt`;\n }\n\n let userId;\n\n return this.webex.credentials\n .getUserToken()\n .catch(() => this.webex.credentials.getClientToken())\n .then(async (token) => {\n const headers = {authorization: token.toString()};\n\n const initalOpts = {\n service: 'clientLogs',\n resource: 'logs/urls',\n };\n\n const finalOpts = {\n service: 'clientLogs',\n resource: 'logs/meta',\n };\n\n const options = defaults(initalOpts, {\n file: logs,\n shouldAttemptReauth: false,\n headers,\n phases: {\n initialize: {\n body: {\n file: filename,\n },\n },\n upload: {\n $uri: (session) => session.tempURL,\n },\n finalize: defaults(finalOpts, {\n $body: (session) => {\n userId = session.userId;\n\n return {\n filename: session.logFilename,\n data: metadataArray,\n userId: this.webex.internal.device.userId || session.userId,\n };\n },\n }),\n },\n });\n\n return this.webex.upload(options);\n })\n .then((body) => {\n if (userId && !body.userId) {\n body.userId = userId;\n }\n\n return body;\n });\n },\n\n /**\n * Constructs an array of key-value pairs for log upload.\n * @param {*} metadata\n * @returns {array}\n */\n _constructFileMetadata(metadata) {\n const metadataArray = [\n 'locusId',\n 'callStart',\n 'feedbackId',\n 'correlationId',\n 'meetingId',\n 'surveySessionId',\n 'productAreaTag',\n 'issueTypeTag',\n ]\n .map((key) => {\n if (metadata[key]) {\n return {\n key,\n value: metadata[key],\n };\n }\n\n return null;\n })\n .filter((entry) => Boolean(entry));\n\n if (this.webex.sessionId) {\n metadataArray.push({\n key: 'trackingId',\n value: this.webex.sessionId,\n });\n }\n\n if (this.webex.internal.device.userId) {\n metadataArray.push({\n key: 'userId',\n value: this.webex.internal.device.userId,\n });\n }\n\n if (this.webex.internal.device.orgId) {\n metadataArray.push({\n key: 'orgId',\n value: this.webex.internal.device.orgId,\n });\n }\n\n return metadataArray;\n },\n});\n\nexport default Support;\n"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["Support","WebexPlugin","extend","namespace","getFeedbackUrl","options","request","method","api","resource","body","appVersion","config","appType","feedbackId","uuid","v4","languageCode","then","res","url","getSupportUrl","webex","qs","submitLogs","metadata","logs","metadataArray","_constructFileMetadata","logger","sdkBuffer","clientBuffer","buffer","formatLogs","filename","locusId","callStart","sessionId","userId","credentials","getUserToken","catch","getClientToken","token","headers","authorization","toString","initalOpts","service","finalOpts","file","shouldAttemptReauth","phases","initialize","upload","$uri","session","tempURL","finalize","$body","logFilename","data","internal","device","map","key","value","filter","entry","Boolean","push","support","orgId"],"sources":["support.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\nimport {defaults} from 'lodash';\nimport uuid from 'uuid';\n\nconst Support = WebexPlugin.extend({\n namespace: 'Support',\n\n getFeedbackUrl(options) {\n options = options || {};\n\n return this.request({\n method: 'POST',\n api: 'conversation',\n resource: 'users/deskFeedbackUrl',\n body: defaults(options, {\n appVersion: this.config.appVersion,\n appType: this.config.appType,\n feedbackId: options.feedbackId || uuid.v4(),\n languageCode: this.config.languageCode,\n }),\n }).then((res) => res.body.url);\n },\n\n getSupportUrl() {\n return this.webex\n .request({\n method: 'GET',\n api: 'conversation',\n resource: 'users/deskSupportUrl',\n qs: {\n languageCode: this.config.languageCode,\n },\n })\n .then((res) => res.body.url);\n },\n\n submitLogs(metadata, logs) {\n const metadataArray = this._constructFileMetadata(metadata);\n\n // this is really testing that Ampersand is fully ready. once it's ready, these exist\n if (\n !logs &&\n this.webex.logger.sdkBuffer &&\n this.webex.logger.clientBuffer &&\n this.webex.logger.buffer\n ) {\n logs = this.webex.logger.formatLogs();\n }\n\n let filename;\n\n if (metadata.locusId && metadata.callStart) {\n filename = `${metadata.locusId}_${metadata.callStart}.txt`;\n } else {\n filename = `${this.webex.sessionId}.txt`;\n }\n\n let userId;\n\n return this.webex.credentials\n .getUserToken()\n .catch(() => this.webex.credentials.getClientToken())\n .then(async (token) => {\n const headers = {authorization: token.toString()};\n\n const initalOpts = {\n service: 'clientLogs',\n resource: 'logs/urls',\n };\n\n const finalOpts = {\n service: 'clientLogs',\n resource: 'logs/meta',\n };\n\n const options = defaults(initalOpts, {\n file: logs,\n shouldAttemptReauth: false,\n headers,\n phases: {\n initialize: {\n body: {\n file: filename,\n },\n },\n upload: {\n $uri: (session) => session.tempURL,\n },\n finalize: defaults(finalOpts, {\n $body: (session) => {\n userId = session.userId;\n\n return {\n filename: session.logFilename,\n data: metadataArray,\n userId: this.webex.internal.device.userId || session.userId,\n };\n },\n }),\n },\n });\n\n return this.webex.upload(options);\n })\n .then((body) => {\n if (userId && !body.userId) {\n body.userId = userId;\n }\n\n return body;\n });\n },\n\n /**\n * Constructs an array of key-value pairs for log upload.\n * @param {*} metadata\n * @returns {array}\n */\n _constructFileMetadata(metadata) {\n const metadataArray = [\n 'locusId',\n 'appVersion',\n 'callStart',\n 'feedbackId',\n 'correlationId',\n 'meetingId',\n 'surveySessionId',\n 'productAreaTag',\n 'issueTypeTag',\n 'locussessionid',\n 'autoupload',\n ]\n .map((key) => {\n if (metadata[key]) {\n return {\n key,\n value: metadata[key],\n };\n }\n\n return null;\n })\n .filter((entry) => Boolean(entry));\n\n if (this.webex.sessionId) {\n metadataArray.push({\n key: 'trackingId',\n value: this.webex.sessionId,\n });\n }\n\n if (this.webex.internal.support.config.appVersion) {\n metadataArray.push({\n key: 'appVersion',\n value: this.webex.internal.support.config.appVersion,\n });\n }\n\n if (this.webex.internal.device.userId) {\n metadataArray.push({\n key: 'userId',\n value: this.webex.internal.device.userId,\n });\n }\n\n if (this.webex.internal.device.orgId) {\n metadataArray.push({\n key: 'orgId',\n value: this.webex.internal.device.orgId,\n });\n }\n\n return metadataArray;\n },\n});\n\nexport default Support;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/internal-plugin-support",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.421",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "nickclar <nickclar@cisco.com>",
|
|
@@ -21,14 +21,14 @@
|
|
|
21
21
|
]
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
25
|
-
"@webex/internal-plugin-search": "3.0.0-beta.
|
|
26
|
-
"@webex/internal-plugin-support": "3.0.0-beta.
|
|
27
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
28
|
-
"@webex/test-helper-file": "3.0.0-beta.
|
|
29
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
30
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
31
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
24
|
+
"@webex/internal-plugin-device": "3.0.0-beta.421",
|
|
25
|
+
"@webex/internal-plugin-search": "3.0.0-beta.421",
|
|
26
|
+
"@webex/internal-plugin-support": "3.0.0-beta.421",
|
|
27
|
+
"@webex/test-helper-chai": "3.0.0-beta.421",
|
|
28
|
+
"@webex/test-helper-file": "3.0.0-beta.421",
|
|
29
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.421",
|
|
30
|
+
"@webex/test-helper-test-users": "3.0.0-beta.421",
|
|
31
|
+
"@webex/webex-core": "3.0.0-beta.421",
|
|
32
32
|
"lodash": "^4.17.21",
|
|
33
33
|
"uuid": "^3.3.2"
|
|
34
34
|
}
|
package/src/support.js
CHANGED
|
@@ -123,6 +123,7 @@ const Support = WebexPlugin.extend({
|
|
|
123
123
|
_constructFileMetadata(metadata) {
|
|
124
124
|
const metadataArray = [
|
|
125
125
|
'locusId',
|
|
126
|
+
'appVersion',
|
|
126
127
|
'callStart',
|
|
127
128
|
'feedbackId',
|
|
128
129
|
'correlationId',
|
|
@@ -130,6 +131,8 @@ const Support = WebexPlugin.extend({
|
|
|
130
131
|
'surveySessionId',
|
|
131
132
|
'productAreaTag',
|
|
132
133
|
'issueTypeTag',
|
|
134
|
+
'locussessionid',
|
|
135
|
+
'autoupload',
|
|
133
136
|
]
|
|
134
137
|
.map((key) => {
|
|
135
138
|
if (metadata[key]) {
|
|
@@ -150,6 +153,13 @@ const Support = WebexPlugin.extend({
|
|
|
150
153
|
});
|
|
151
154
|
}
|
|
152
155
|
|
|
156
|
+
if (this.webex.internal.support.config.appVersion) {
|
|
157
|
+
metadataArray.push({
|
|
158
|
+
key: 'appVersion',
|
|
159
|
+
value: this.webex.internal.support.config.appVersion,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
|
|
153
163
|
if (this.webex.internal.device.userId) {
|
|
154
164
|
metadataArray.push({
|
|
155
165
|
key: 'userId',
|
|
@@ -8,9 +8,7 @@ import Support from '@webex/internal-plugin-support';
|
|
|
8
8
|
import {assert} from '@webex/test-helper-chai';
|
|
9
9
|
import MockWebex from '@webex/test-helper-mock-webex';
|
|
10
10
|
|
|
11
|
-
describe('plugin-support',
|
|
12
|
-
this.timeout(20000);
|
|
13
|
-
|
|
11
|
+
describe('plugin-support', () => {
|
|
14
12
|
let webex;
|
|
15
13
|
|
|
16
14
|
beforeEach(() => {
|
|
@@ -22,18 +20,23 @@ describe('plugin-support', function () {
|
|
|
22
20
|
|
|
23
21
|
webex.internal.device.userId = 'user-abc-123';
|
|
24
22
|
webex.internal.device.orgId = 'org-abc-123';
|
|
23
|
+
webex.internal.support.config.appVersion = '0.0.0.0';
|
|
25
24
|
});
|
|
26
25
|
|
|
27
26
|
describe('#_constructFileMetadata()', () => {
|
|
28
27
|
it('constructs a sample File Meta Data', () => {
|
|
29
28
|
const result = webex.internal.support._constructFileMetadata({});
|
|
30
29
|
|
|
31
|
-
assert.equal(result.length,
|
|
30
|
+
assert.equal(result.length, 4);
|
|
32
31
|
assert.deepEqual(result, [
|
|
33
32
|
{
|
|
34
33
|
key: 'trackingId',
|
|
35
34
|
value: 'mock-webex_88888888-4444-4444-4444-aaaaaaaaaaaa',
|
|
36
35
|
},
|
|
36
|
+
{
|
|
37
|
+
key: 'appVersion',
|
|
38
|
+
value: '0.0.0.0',
|
|
39
|
+
},
|
|
37
40
|
{
|
|
38
41
|
key: 'userId',
|
|
39
42
|
value: webex.internal.device.userId,
|
|
@@ -92,6 +95,62 @@ describe('plugin-support', function () {
|
|
|
92
95
|
|
|
93
96
|
assert.equal(found?.value, issueTypeTag);
|
|
94
97
|
});
|
|
98
|
+
|
|
99
|
+
it('sends locussessionid if specified in metadata', () => {
|
|
100
|
+
const locussessionid = 'locussessionid';
|
|
101
|
+
const result = webex.internal.support._constructFileMetadata({locussessionid});
|
|
102
|
+
const found = result.find((attr) => attr.key === 'locussessionid');
|
|
103
|
+
|
|
104
|
+
assert.equal(found?.value, locussessionid);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it('sends locusId if specified in metadata', () => {
|
|
108
|
+
const locusId = 'locusId';
|
|
109
|
+
const result = webex.internal.support._constructFileMetadata({locusId});
|
|
110
|
+
const found = result.find((attr) => attr.key === 'locusId');
|
|
111
|
+
|
|
112
|
+
assert.equal(found?.value, locusId);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('sends callStart if specified in metadata', () => {
|
|
116
|
+
const callStart = 'callStart';
|
|
117
|
+
const result = webex.internal.support._constructFileMetadata({callStart});
|
|
118
|
+
const found = result.find((attr) => attr.key === 'callStart');
|
|
119
|
+
|
|
120
|
+
assert.equal(found?.value, callStart);
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it('sends feedbackId if specified in metadata', () => {
|
|
124
|
+
const feedbackId = 'feedbackId';
|
|
125
|
+
const result = webex.internal.support._constructFileMetadata({feedbackId});
|
|
126
|
+
const found = result.find((attr) => attr.key === 'feedbackId');
|
|
127
|
+
|
|
128
|
+
assert.equal(found?.value, feedbackId);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it('sends correlationId if specified in metadata', () => {
|
|
132
|
+
const correlationId = 'correlationId';
|
|
133
|
+
const result = webex.internal.support._constructFileMetadata({correlationId});
|
|
134
|
+
const found = result.find((attr) => attr.key === 'correlationId');
|
|
135
|
+
|
|
136
|
+
assert.equal(found?.value, correlationId);
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
it('sends meetingId if specified in metadata', () => {
|
|
140
|
+
const meetingId = 'meetingId';
|
|
141
|
+
const result = webex.internal.support._constructFileMetadata({meetingId});
|
|
142
|
+
const found = result.find((attr) => attr.key === 'meetingId');
|
|
143
|
+
|
|
144
|
+
assert.equal(found?.value, meetingId);
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
it('sends autoupload if specified in metadata', () => {
|
|
148
|
+
const autoupload = 'autoupload';
|
|
149
|
+
const result = webex.internal.support._constructFileMetadata({autoupload});
|
|
150
|
+
const found = result.find((attr) => attr.key === 'autoupload');
|
|
151
|
+
|
|
152
|
+
assert.equal(found?.value, autoupload);
|
|
153
|
+
});
|
|
95
154
|
});
|
|
96
155
|
|
|
97
156
|
describe('#submitLogs()', () => {
|