@twilio/mcs-client 0.5.3 → 0.6.0-canary.102
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/builds/browser.js +449 -484
- package/builds/browser.js.map +1 -1
- package/builds/lib.d.ts +16 -25
- package/builds/lib.js +449 -484
- package/builds/lib.js.map +1 -1
- package/builds/twilio-mcs-client.js +11240 -9472
- package/builds/twilio-mcs-client.min.js +37 -38
- package/dist/_virtual/rng-browser.js +34 -0
- package/dist/_virtual/rng-browser.js.map +1 -0
- package/dist/cancellable-promise.js +98 -0
- package/dist/cancellable-promise.js.map +1 -0
- package/dist/client.js +88 -23
- package/dist/client.js.map +1 -1
- package/dist/configuration.js.map +1 -1
- package/dist/index.js +8 -9
- package/dist/index.js.map +1 -1
- package/dist/logger.js +2 -4
- package/dist/logger.js.map +1 -1
- package/dist/media.js +15 -22
- package/dist/media.js.map +1 -1
- package/dist/node_modules/tslib/tslib.es6.js +1 -1
- package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/node_modules/uuid/index.js +44 -0
- package/dist/node_modules/uuid/index.js.map +1 -0
- package/dist/node_modules/uuid/lib/bytesToUuid.js +60 -0
- package/dist/node_modules/uuid/lib/bytesToUuid.js.map +1 -0
- package/dist/node_modules/uuid/lib/rng-browser.js +65 -0
- package/dist/node_modules/uuid/lib/rng-browser.js.map +1 -0
- package/dist/node_modules/uuid/v1.js +146 -0
- package/dist/node_modules/uuid/v1.js.map +1 -0
- package/dist/node_modules/uuid/v4.js +66 -0
- package/dist/node_modules/uuid/v4.js.map +1 -0
- package/dist/packages/mcs-client/package.json.js +1 -1
- package/dist/services/network.js +54 -32
- package/dist/services/network.js.map +1 -1
- package/dist/services/transport.js +26 -11
- package/dist/services/transport.js.map +1 -1
- package/dist/services/transporterror.js.map +1 -1
- package/package.json +21 -16
- package/CHANGELOG.md +0 -210
package/builds/lib.js
CHANGED
|
@@ -19,9 +19,13 @@ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
19
19
|
|
|
20
20
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
21
21
|
|
|
22
|
+
var shared = require('@twilio/shared');
|
|
22
23
|
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
|
|
23
24
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
24
|
-
require('core-js/modules/es.
|
|
25
|
+
require('core-js/modules/es.array.iterator.js');
|
|
26
|
+
require('core-js/modules/es.map.js');
|
|
27
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
28
|
+
require('core-js/modules/web.dom-collections.for-each.js');
|
|
25
29
|
var _regeneratorRuntime = require('@babel/runtime/regenerator');
|
|
26
30
|
require('core-js/modules/es.array.from.js');
|
|
27
31
|
var log$2 = require('loglevel');
|
|
@@ -29,10 +33,11 @@ require('core-js/modules/es.string.starts-with.js');
|
|
|
29
33
|
require('core-js/modules/es.array.reduce.js');
|
|
30
34
|
require('core-js/modules/es.regexp.exec.js');
|
|
31
35
|
require('core-js/modules/es.string.split.js');
|
|
36
|
+
require('core-js/modules/es.string.replace.js');
|
|
37
|
+
require('core-js/modules/es.json.stringify.js');
|
|
32
38
|
require('core-js/modules/es.object.assign.js');
|
|
33
|
-
require('core-js/modules/es.array.iterator.js');
|
|
34
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
35
39
|
require('core-js/modules/web.url.js');
|
|
40
|
+
require('core-js/modules/web.url-search-params.js');
|
|
36
41
|
var operationRetrier = require('@twilio/operation-retrier');
|
|
37
42
|
var declarativeTypeValidator = require('@twilio/declarative-type-validator');
|
|
38
43
|
|
|
@@ -47,14 +52,12 @@ function _interopNamespace(e) {
|
|
|
47
52
|
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
48
53
|
Object.defineProperty(n, k, d.get ? d : {
|
|
49
54
|
enumerable: true,
|
|
50
|
-
get: function () {
|
|
51
|
-
return e[k];
|
|
52
|
-
}
|
|
55
|
+
get: function () { return e[k]; }
|
|
53
56
|
});
|
|
54
57
|
}
|
|
55
58
|
});
|
|
56
59
|
}
|
|
57
|
-
n[
|
|
60
|
+
n["default"] = e;
|
|
58
61
|
return Object.freeze(n);
|
|
59
62
|
}
|
|
60
63
|
|
|
@@ -63,7 +66,7 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
|
|
|
63
66
|
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
|
|
64
67
|
var log__namespace = /*#__PURE__*/_interopNamespace(log$2);
|
|
65
68
|
|
|
66
|
-
|
|
69
|
+
/******************************************************************************
|
|
67
70
|
Copyright (c) Microsoft Corporation.
|
|
68
71
|
|
|
69
72
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
@@ -79,8 +82,8 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
79
82
|
***************************************************************************** */
|
|
80
83
|
function __decorate(decorators, target, key, desc) {
|
|
81
84
|
var c = arguments.length,
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
|
|
86
|
+
d;
|
|
84
87
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
|
|
85
88
|
if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
86
89
|
}
|
|
@@ -93,125 +96,99 @@ function __metadata(metadataKey, metadataValue) {
|
|
|
93
96
|
function prepareLine(prefix, args) {
|
|
94
97
|
return ["".concat(new Date().toISOString(), " MCS Client ").concat(prefix, ":")].concat(Array.from(args));
|
|
95
98
|
}
|
|
96
|
-
|
|
97
99
|
class Logger {
|
|
98
100
|
constructor(prefix) {
|
|
99
|
-
_defineProperty__default[
|
|
100
|
-
|
|
101
|
+
_defineProperty__default["default"](this, "prefix", "");
|
|
101
102
|
this.prefix = prefix !== null && prefix !== undefined && prefix.length > 0 ? prefix + " " : "";
|
|
102
103
|
}
|
|
103
|
-
|
|
104
104
|
static scope(prefix) {
|
|
105
105
|
return new Logger(prefix);
|
|
106
106
|
}
|
|
107
|
-
|
|
108
107
|
setLevel(level) {
|
|
109
108
|
log__namespace.setLevel(level);
|
|
110
109
|
}
|
|
111
|
-
|
|
112
110
|
static setLevel(level) {
|
|
113
111
|
log__namespace.setLevel(level);
|
|
114
112
|
}
|
|
115
113
|
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
116
|
-
|
|
117
|
-
|
|
118
114
|
trace() {
|
|
119
115
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
120
116
|
args[_key] = arguments[_key];
|
|
121
117
|
}
|
|
122
|
-
|
|
123
118
|
log__namespace.trace.apply(null, prepareLine(this.prefix + "T", args));
|
|
124
119
|
}
|
|
125
|
-
|
|
126
120
|
debug() {
|
|
127
121
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
128
122
|
args[_key2] = arguments[_key2];
|
|
129
123
|
}
|
|
130
|
-
|
|
131
124
|
log__namespace.debug.apply(null, prepareLine(this.prefix + "D", args));
|
|
132
125
|
}
|
|
133
|
-
|
|
134
126
|
info() {
|
|
135
127
|
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
136
128
|
args[_key3] = arguments[_key3];
|
|
137
129
|
}
|
|
138
|
-
|
|
139
130
|
log__namespace.info.apply(null, prepareLine(this.prefix + "I", args));
|
|
140
131
|
}
|
|
141
|
-
|
|
142
132
|
warn() {
|
|
143
133
|
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
144
134
|
args[_key4] = arguments[_key4];
|
|
145
135
|
}
|
|
146
|
-
|
|
147
136
|
log__namespace.warn.apply(null, prepareLine(this.prefix + "W", args));
|
|
148
137
|
}
|
|
149
|
-
|
|
150
138
|
error() {
|
|
151
139
|
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
|
152
140
|
args[_key5] = arguments[_key5];
|
|
153
141
|
}
|
|
154
|
-
|
|
155
142
|
log__namespace.error.apply(null, prepareLine(this.prefix + "E", args));
|
|
156
143
|
}
|
|
157
|
-
|
|
158
144
|
static trace() {
|
|
159
145
|
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
|
160
146
|
args[_key6] = arguments[_key6];
|
|
161
147
|
}
|
|
162
|
-
|
|
163
148
|
log__namespace.trace.apply(null, prepareLine("T", args));
|
|
164
149
|
}
|
|
165
|
-
|
|
166
150
|
static debug() {
|
|
167
151
|
for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
|
|
168
152
|
args[_key7] = arguments[_key7];
|
|
169
153
|
}
|
|
170
|
-
|
|
171
154
|
log__namespace.debug.apply(null, prepareLine("D", args));
|
|
172
155
|
}
|
|
173
|
-
|
|
174
156
|
static info() {
|
|
175
157
|
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
|
176
158
|
args[_key8] = arguments[_key8];
|
|
177
159
|
}
|
|
178
|
-
|
|
179
160
|
log__namespace.info.apply(null, prepareLine("I", args));
|
|
180
161
|
}
|
|
181
|
-
|
|
182
162
|
static warn() {
|
|
183
163
|
for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
|
|
184
164
|
args[_key9] = arguments[_key9];
|
|
185
165
|
}
|
|
186
|
-
|
|
187
166
|
log__namespace.warn.apply(null, prepareLine("W", args));
|
|
188
167
|
}
|
|
189
|
-
|
|
190
168
|
static error() {
|
|
191
169
|
for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
|
|
192
170
|
args[_key10] = arguments[_key10];
|
|
193
171
|
}
|
|
194
|
-
|
|
195
172
|
log__namespace.error.apply(null, prepareLine("E", args));
|
|
196
173
|
}
|
|
197
|
-
|
|
198
174
|
}
|
|
199
175
|
|
|
200
176
|
var MINIMUM_RETRY_DELAY = 1000;
|
|
201
177
|
var MAXIMUM_RETRY_DELAY = 4000;
|
|
202
178
|
var MAXIMUM_ATTEMPTS_COUNT = 3;
|
|
203
179
|
var RETRY_WHEN_THROTTLED = true;
|
|
204
|
-
|
|
205
180
|
var regionalMcsHost = region => "https://mcs.".concat(region !== null && region !== void 0 ? region : "us1", ".twilio.com");
|
|
206
|
-
|
|
207
181
|
var isFullUrl = url => url.startsWith("http");
|
|
208
|
-
|
|
209
182
|
var fullUrl = (partUrl, region) => "".concat(!isFullUrl(partUrl) ? regionalMcsHost(region) : "").concat(partUrl);
|
|
210
|
-
|
|
211
183
|
class Configuration {
|
|
212
184
|
constructor(token, baseUrl, baseSetUrl, options) {
|
|
213
185
|
var _ref, _options$MCS, _ref2, _constructorOptions$r, _constructorOptions$r2, _constructorOptions$b;
|
|
214
|
-
|
|
186
|
+
_defineProperty__default["default"](this, "token", void 0);
|
|
187
|
+
_defineProperty__default["default"](this, "retryWhenThrottledOverride", void 0);
|
|
188
|
+
_defineProperty__default["default"](this, "backoffConfigOverride", void 0);
|
|
189
|
+
_defineProperty__default["default"](this, "mediaUrl", void 0);
|
|
190
|
+
_defineProperty__default["default"](this, "mediaSetUrl", void 0);
|
|
191
|
+
_defineProperty__default["default"](this, "region", void 0);
|
|
215
192
|
var constructorOptions = (_ref = (_options$MCS = options.MCS) !== null && _options$MCS !== void 0 ? _options$MCS : options) !== null && _ref !== void 0 ? _ref : {};
|
|
216
193
|
this.region = (_ref2 = (_constructorOptions$r = constructorOptions.region) !== null && _constructorOptions$r !== void 0 ? _constructorOptions$r : options.region) !== null && _ref2 !== void 0 ? _ref2 : 'us1';
|
|
217
194
|
this.mediaUrl = fullUrl(baseUrl, this.region);
|
|
@@ -220,7 +197,6 @@ class Configuration {
|
|
|
220
197
|
this.retryWhenThrottledOverride = (_constructorOptions$r2 = constructorOptions.retryWhenThrottledOverride) !== null && _constructorOptions$r2 !== void 0 ? _constructorOptions$r2 : RETRY_WHEN_THROTTLED;
|
|
221
198
|
this.backoffConfigOverride = (_constructorOptions$b = constructorOptions.backoffConfigOverride) !== null && _constructorOptions$b !== void 0 ? _constructorOptions$b : Configuration.backoffConfigDefault;
|
|
222
199
|
}
|
|
223
|
-
|
|
224
200
|
static get backoffConfigDefault() {
|
|
225
201
|
return {
|
|
226
202
|
min: MINIMUM_RETRY_DELAY,
|
|
@@ -228,15 +204,12 @@ class Configuration {
|
|
|
228
204
|
maxAttemptsCount: MAXIMUM_ATTEMPTS_COUNT
|
|
229
205
|
};
|
|
230
206
|
}
|
|
231
|
-
|
|
232
207
|
static get retryWhenThrottledDefault() {
|
|
233
208
|
return RETRY_WHEN_THROTTLED;
|
|
234
209
|
}
|
|
235
|
-
|
|
236
210
|
updateToken(token) {
|
|
237
211
|
this.token = token;
|
|
238
212
|
}
|
|
239
|
-
|
|
240
213
|
}
|
|
241
214
|
|
|
242
215
|
/**
|
|
@@ -252,46 +225,38 @@ class Configuration {
|
|
|
252
225
|
*/
|
|
253
226
|
class Media {
|
|
254
227
|
constructor(config, network, data) {
|
|
228
|
+
_defineProperty__default["default"](this, "state", void 0);
|
|
229
|
+
_defineProperty__default["default"](this, "network", void 0);
|
|
230
|
+
_defineProperty__default["default"](this, "config", void 0);
|
|
255
231
|
this.config = config;
|
|
256
232
|
this.network = network;
|
|
257
|
-
|
|
258
233
|
this._update(data);
|
|
259
234
|
}
|
|
260
|
-
|
|
261
235
|
get sid() {
|
|
262
236
|
return this.state.sid;
|
|
263
237
|
}
|
|
264
|
-
|
|
265
238
|
get serviceSid() {
|
|
266
239
|
return this.state.serviceSid;
|
|
267
240
|
}
|
|
268
|
-
|
|
269
241
|
get dateCreated() {
|
|
270
242
|
return this.state.dateCreated;
|
|
271
243
|
}
|
|
272
|
-
|
|
273
244
|
get dateUpdated() {
|
|
274
245
|
return this.state.dateUpdated;
|
|
275
246
|
}
|
|
276
|
-
|
|
277
247
|
get contentType() {
|
|
278
248
|
return this.state.contentType;
|
|
279
249
|
}
|
|
280
|
-
|
|
281
250
|
get size() {
|
|
282
251
|
return this.state.size;
|
|
283
252
|
}
|
|
284
253
|
/** @deprecated Use filename instead */
|
|
285
|
-
|
|
286
|
-
|
|
287
254
|
get fileName() {
|
|
288
255
|
return this.state.filename;
|
|
289
256
|
}
|
|
290
|
-
|
|
291
257
|
get filename() {
|
|
292
258
|
return this.state.filename;
|
|
293
259
|
}
|
|
294
|
-
|
|
295
260
|
get category() {
|
|
296
261
|
return this.state.category;
|
|
297
262
|
}
|
|
@@ -302,84 +267,45 @@ class Media {
|
|
|
302
267
|
*
|
|
303
268
|
* It is reasonable to build your own refresh logic upon these two functions: as soon as URL returned
|
|
304
269
|
* by getCachedContentUrl() returns 40x status you should call getContentUrl() to refresh it.
|
|
305
|
-
*
|
|
306
|
-
* @returns {Promise<string>}
|
|
307
270
|
*/
|
|
308
|
-
|
|
309
|
-
|
|
310
271
|
getContentUrl() {
|
|
311
272
|
var _this = this;
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
case 5:
|
|
330
|
-
case "end":
|
|
331
|
-
return _context.stop();
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
}, _callee);
|
|
335
|
-
}))();
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Returns direct content URL to uploaded binary. This URL will expire after some time.
|
|
339
|
-
* This function does not support getting a new URL however. Once set it will remain the same.
|
|
340
|
-
* Use getContentUrl() to query a new one.
|
|
341
|
-
*
|
|
342
|
-
* It is reasonable to build your own refresh logic upon these two functions: as soon as URL returned
|
|
343
|
-
* by getCachedContentUrl() returns 40x status you should call getContentUrl() to refresh it.
|
|
344
|
-
*
|
|
345
|
-
* @returns {Promise<string>}
|
|
346
|
-
*/
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
getCachedContentUrl() {
|
|
350
|
-
var _this2 = this;
|
|
351
|
-
|
|
352
|
-
return _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2() {
|
|
353
|
-
return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
|
|
354
|
-
while (1) {
|
|
355
|
-
switch (_context2.prev = _context2.next) {
|
|
356
|
-
case 0:
|
|
357
|
-
if (!_this2.state.contentDirectUrl) {
|
|
358
|
-
_context2.next = 2;
|
|
273
|
+
return new shared.CancellablePromise( /*#__PURE__*/function () {
|
|
274
|
+
var _ref = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(resolve, reject, onCancel) {
|
|
275
|
+
var request, response;
|
|
276
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
277
|
+
while (1) {
|
|
278
|
+
switch (_context.prev = _context.next) {
|
|
279
|
+
case 0:
|
|
280
|
+
request = _this.network.get("".concat(_this.config.mediaUrl, "/").concat(_this.sid));
|
|
281
|
+
onCancel(() => request.cancel());
|
|
282
|
+
_context.prev = 2;
|
|
283
|
+
_context.next = 5;
|
|
284
|
+
return request;
|
|
285
|
+
case 5:
|
|
286
|
+
response = _context.sent;
|
|
287
|
+
_this._update(response.body);
|
|
288
|
+
resolve(_this.state.contentDirectUrl);
|
|
289
|
+
_context.next = 13;
|
|
359
290
|
break;
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
case 4:
|
|
369
|
-
return _context2.abrupt("return", _context2.sent);
|
|
370
|
-
|
|
371
|
-
case 5:
|
|
372
|
-
case "end":
|
|
373
|
-
return _context2.stop();
|
|
291
|
+
case 10:
|
|
292
|
+
_context.prev = 10;
|
|
293
|
+
_context.t0 = _context["catch"](2);
|
|
294
|
+
reject(_context.t0);
|
|
295
|
+
case 13:
|
|
296
|
+
case "end":
|
|
297
|
+
return _context.stop();
|
|
298
|
+
}
|
|
374
299
|
}
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
|
|
300
|
+
}, _callee, null, [[2, 10]]);
|
|
301
|
+
}));
|
|
302
|
+
return function (_x, _x2, _x3) {
|
|
303
|
+
return _ref.apply(this, arguments);
|
|
304
|
+
};
|
|
305
|
+
}());
|
|
378
306
|
}
|
|
379
|
-
|
|
380
307
|
_update(data) {
|
|
381
308
|
var _data$links$content_d, _data$filename, _data$category, _data$is_multipart_up;
|
|
382
|
-
|
|
383
309
|
this.state = {
|
|
384
310
|
sid: data.sid,
|
|
385
311
|
serviceSid: data.service_sid,
|
|
@@ -399,40 +325,38 @@ class Media {
|
|
|
399
325
|
isMultipartUpstream: (_data$is_multipart_up = data.is_multipart_upstream) !== null && _data$is_multipart_up !== void 0 ? _data$is_multipart_up : false
|
|
400
326
|
};
|
|
401
327
|
}
|
|
402
|
-
|
|
403
328
|
}
|
|
404
329
|
|
|
405
330
|
class TransportError extends Error {
|
|
406
331
|
constructor(message, code, body, status, headers) {
|
|
407
332
|
super(message);
|
|
333
|
+
_defineProperty__default["default"](this, "code", void 0);
|
|
334
|
+
_defineProperty__default["default"](this, "body", void 0);
|
|
335
|
+
_defineProperty__default["default"](this, "status", void 0);
|
|
336
|
+
_defineProperty__default["default"](this, "headers", void 0);
|
|
408
337
|
this.code = code;
|
|
409
338
|
this.body = body;
|
|
410
339
|
this.status = status;
|
|
411
340
|
this.headers = headers;
|
|
412
341
|
}
|
|
413
|
-
|
|
414
342
|
}
|
|
415
343
|
|
|
344
|
+
// eslint-disable-next-line
|
|
416
345
|
var XHR = global["XMLHttpRequest"] || require("xmlhttprequest").XMLHttpRequest;
|
|
417
|
-
|
|
418
346
|
function parseResponseHeaders(headerString) {
|
|
419
347
|
if (!headerString) {
|
|
420
348
|
return {};
|
|
421
349
|
}
|
|
422
|
-
|
|
423
350
|
return headerString.split("\r\n").map(el => el.split(": ")).filter(el => el.length === 2 && el[1].length > 0).reduce((prev, curr) => {
|
|
424
351
|
prev[curr[0]] = curr[1];
|
|
425
352
|
return prev;
|
|
426
353
|
}, {});
|
|
427
354
|
}
|
|
428
|
-
|
|
429
355
|
function extractBody(xhr) {
|
|
430
356
|
var contentType = xhr.getResponseHeader("Content-Type");
|
|
431
|
-
|
|
432
357
|
if (!contentType || contentType.indexOf("application/json") !== 0 || xhr.responseText.length === 0) {
|
|
433
358
|
return xhr.responseText;
|
|
434
359
|
}
|
|
435
|
-
|
|
436
360
|
try {
|
|
437
361
|
return JSON.parse(xhr.responseText);
|
|
438
362
|
} catch (e) {
|
|
@@ -442,168 +366,125 @@ function extractBody(xhr) {
|
|
|
442
366
|
/**
|
|
443
367
|
* Provides generic network interface
|
|
444
368
|
*/
|
|
445
|
-
|
|
446
|
-
|
|
447
369
|
class Transport {
|
|
448
370
|
static request(method, url, headers, body) {
|
|
449
|
-
return
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
var message = "".concat(xhr.status, ": [").concat(status, "] ").concat(bodyRepresentation);
|
|
485
|
-
reject(new TransportError(message, xhr.status, body, status, headers));
|
|
486
|
-
}
|
|
487
|
-
};
|
|
488
|
-
|
|
489
|
-
for (var headerName in headers) {
|
|
490
|
-
xhr.setRequestHeader(headerName, headers[headerName]);
|
|
491
|
-
|
|
492
|
-
if (headerName === "Content-Type" && headers[headerName] === "application/json") {
|
|
493
|
-
body = JSON.stringify(body);
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
xhr.send(body);
|
|
498
|
-
}));
|
|
499
|
-
|
|
500
|
-
case 1:
|
|
501
|
-
case "end":
|
|
502
|
-
return _context.stop();
|
|
371
|
+
return new shared.CancellablePromise((resolve, reject, onCancel) => {
|
|
372
|
+
var xhr = new XHR();
|
|
373
|
+
var isCancelled = false;
|
|
374
|
+
onCancel(() => {
|
|
375
|
+
xhr.abort();
|
|
376
|
+
isCancelled = true;
|
|
377
|
+
});
|
|
378
|
+
xhr.open(method, url, true);
|
|
379
|
+
xhr.onreadystatechange = function onreadystatechange() {
|
|
380
|
+
if (xhr.readyState !== 4 || isCancelled) {
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
var responseHeaders = parseResponseHeaders(xhr.getAllResponseHeaders());
|
|
384
|
+
var body = extractBody(xhr);
|
|
385
|
+
if (200 <= xhr.status && xhr.status < 300) {
|
|
386
|
+
resolve({
|
|
387
|
+
status: xhr.status,
|
|
388
|
+
headers: responseHeaders,
|
|
389
|
+
body
|
|
390
|
+
});
|
|
391
|
+
} else {
|
|
392
|
+
var _xhr$statusText;
|
|
393
|
+
var status = (_xhr$statusText = xhr.statusText) !== null && _xhr$statusText !== void 0 ? _xhr$statusText : "NONE";
|
|
394
|
+
var bodyRepresentation;
|
|
395
|
+
if (typeof body === "string") {
|
|
396
|
+
if (body && body.split("\n", 2).length === 1) bodyRepresentation = body;else {
|
|
397
|
+
var _body$replace$split$f;
|
|
398
|
+
// TODO: RTDSDK-3716: investigate why body is HTML string
|
|
399
|
+
var errorInfo = (_body$replace$split$f = body.replace(/<.*?>/g, "").split(/\r\n/g).filter(str => str.length)[0]) === null || _body$replace$split$f === void 0 ? void 0 : _body$replace$split$f.split(" ");
|
|
400
|
+
bodyRepresentation = (errorInfo === null || errorInfo === void 0 ? void 0 : errorInfo.length) > 2 ? errorInfo === null || errorInfo === void 0 ? void 0 : errorInfo.slice(1).join(" ") : "";
|
|
401
|
+
}
|
|
402
|
+
} else {
|
|
403
|
+
bodyRepresentation = JSON.stringify(body);
|
|
503
404
|
}
|
|
405
|
+
var message = "".concat(xhr.status, ": [").concat(status, "] ").concat(bodyRepresentation);
|
|
406
|
+
reject(new TransportError(message, xhr.status, body, status, responseHeaders));
|
|
504
407
|
}
|
|
505
|
-
}
|
|
506
|
-
|
|
408
|
+
};
|
|
409
|
+
for (var headerName in headers) {
|
|
410
|
+
xhr.setRequestHeader(headerName, headers[headerName]);
|
|
411
|
+
if (headerName === "Content-Type" && headers[headerName] === "application/json") {
|
|
412
|
+
body = JSON.stringify(body);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
xhr.send(body);
|
|
416
|
+
});
|
|
507
417
|
}
|
|
508
418
|
/**
|
|
509
419
|
* Make a GET request by given URL
|
|
510
420
|
*/
|
|
511
|
-
|
|
512
|
-
|
|
513
421
|
get(url, headers) {
|
|
514
|
-
return
|
|
515
|
-
return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
|
|
516
|
-
while (1) {
|
|
517
|
-
switch (_context2.prev = _context2.next) {
|
|
518
|
-
case 0:
|
|
519
|
-
return _context2.abrupt("return", Transport.request("GET", url, headers));
|
|
520
|
-
|
|
521
|
-
case 1:
|
|
522
|
-
case "end":
|
|
523
|
-
return _context2.stop();
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
}, _callee2);
|
|
527
|
-
}))();
|
|
422
|
+
return Transport.request("GET", url, headers);
|
|
528
423
|
}
|
|
529
424
|
/**
|
|
530
425
|
* Make a POST request by given URL
|
|
531
426
|
*/
|
|
532
|
-
|
|
533
|
-
|
|
534
427
|
post(url, headers, body) {
|
|
535
|
-
return
|
|
536
|
-
return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
|
|
537
|
-
while (1) {
|
|
538
|
-
switch (_context3.prev = _context3.next) {
|
|
539
|
-
case 0:
|
|
540
|
-
return _context3.abrupt("return", Transport.request("POST", url, headers, body));
|
|
541
|
-
|
|
542
|
-
case 1:
|
|
543
|
-
case "end":
|
|
544
|
-
return _context3.stop();
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
}, _callee3);
|
|
548
|
-
}))();
|
|
428
|
+
return Transport.request("POST", url, headers, body);
|
|
549
429
|
}
|
|
550
|
-
|
|
551
430
|
}
|
|
552
431
|
|
|
553
432
|
var log$1 = Logger.scope("Network");
|
|
554
|
-
|
|
555
433
|
class Network {
|
|
556
434
|
constructor(config, transport) {
|
|
435
|
+
_defineProperty__default["default"](this, "config", void 0);
|
|
436
|
+
_defineProperty__default["default"](this, "transport", void 0);
|
|
557
437
|
this.config = config;
|
|
558
438
|
this.transport = transport;
|
|
559
439
|
}
|
|
560
|
-
|
|
561
440
|
backoffConfig() {
|
|
562
441
|
return Object.assign(Configuration.backoffConfigDefault, this.config.backoffConfigOverride);
|
|
563
442
|
}
|
|
564
|
-
|
|
565
443
|
retryWhenThrottled() {
|
|
566
444
|
var _ref, _this$config$retryWhe;
|
|
567
|
-
|
|
568
445
|
return (_ref = (_this$config$retryWhe = this.config.retryWhenThrottledOverride) !== null && _this$config$retryWhe !== void 0 ? _this$config$retryWhe : Configuration.retryWhenThrottledDefault) !== null && _ref !== void 0 ? _ref : false;
|
|
569
446
|
}
|
|
570
|
-
|
|
571
447
|
executeWithRetry(request, retryWhenThrottled) {
|
|
572
448
|
var _this = this;
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
449
|
+
return new shared.CancellablePromise( /*#__PURE__*/function () {
|
|
450
|
+
var _ref2 = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(resolve, reject, onCancel) {
|
|
451
|
+
var retrier, codesToRetryOn;
|
|
452
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
|
|
453
|
+
while (1) {
|
|
454
|
+
switch (_context2.prev = _context2.next) {
|
|
455
|
+
case 0:
|
|
456
|
+
retrier = new operationRetrier.Retrier(_this.backoffConfig());
|
|
457
|
+
codesToRetryOn = [502, 503, 504];
|
|
582
458
|
if (retryWhenThrottled) {
|
|
583
459
|
codesToRetryOn.push(429);
|
|
584
460
|
}
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
461
|
+
onCancel(() => {
|
|
462
|
+
retrier.cancel();
|
|
463
|
+
retrier.removeAllListeners();
|
|
464
|
+
});
|
|
465
|
+
retrier.on("attempt", /*#__PURE__*/_asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
|
|
466
|
+
var requestPromise, result;
|
|
467
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
590
468
|
while (1) {
|
|
591
469
|
switch (_context.prev = _context.next) {
|
|
592
470
|
case 0:
|
|
593
471
|
_context.prev = 0;
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
472
|
+
requestPromise = request();
|
|
473
|
+
onCancel(() => {
|
|
474
|
+
requestPromise.cancel();
|
|
475
|
+
retrier.cancel();
|
|
476
|
+
retrier.removeAllListeners();
|
|
477
|
+
});
|
|
478
|
+
_context.next = 5;
|
|
479
|
+
return requestPromise;
|
|
480
|
+
case 5:
|
|
598
481
|
result = _context.sent;
|
|
599
482
|
retrier.succeeded(result);
|
|
600
|
-
_context.next =
|
|
483
|
+
_context.next = 12;
|
|
601
484
|
break;
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
_context.prev = 7;
|
|
485
|
+
case 9:
|
|
486
|
+
_context.prev = 9;
|
|
605
487
|
_context.t0 = _context["catch"](0);
|
|
606
|
-
|
|
607
488
|
if (codesToRetryOn.indexOf(_context.t0.status) > -1) {
|
|
608
489
|
retrier.failed(_context.t0);
|
|
609
490
|
} else if (_context.t0.message === "Twilsock disconnected") {
|
|
@@ -615,13 +496,12 @@ class Network {
|
|
|
615
496
|
retrier.cancel();
|
|
616
497
|
reject(_context.t0);
|
|
617
498
|
}
|
|
618
|
-
|
|
619
|
-
case 10:
|
|
499
|
+
case 12:
|
|
620
500
|
case "end":
|
|
621
501
|
return _context.stop();
|
|
622
502
|
}
|
|
623
503
|
}
|
|
624
|
-
}, _callee, null, [[0,
|
|
504
|
+
}, _callee, null, [[0, 9]]);
|
|
625
505
|
})));
|
|
626
506
|
retrier.on("succeeded", result => {
|
|
627
507
|
resolve(result);
|
|
@@ -629,132 +509,131 @@ class Network {
|
|
|
629
509
|
retrier.on("cancelled", err => reject(err));
|
|
630
510
|
retrier.on("failed", err => reject(err));
|
|
631
511
|
retrier.start();
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
return _context2.stop();
|
|
512
|
+
case 9:
|
|
513
|
+
case "end":
|
|
514
|
+
return _context2.stop();
|
|
515
|
+
}
|
|
637
516
|
}
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
|
|
517
|
+
}, _callee2);
|
|
518
|
+
}));
|
|
519
|
+
return function (_x, _x2, _x3) {
|
|
520
|
+
return _ref2.apply(this, arguments);
|
|
521
|
+
};
|
|
522
|
+
}());
|
|
641
523
|
}
|
|
642
|
-
|
|
643
524
|
get(url) {
|
|
644
525
|
var _this2 = this;
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
526
|
+
return new shared.CancellablePromise( /*#__PURE__*/function () {
|
|
527
|
+
var _ref4 = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee3(resolve, reject, onCancel) {
|
|
528
|
+
var headers, request, response;
|
|
529
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee3$(_context3) {
|
|
530
|
+
while (1) {
|
|
531
|
+
switch (_context3.prev = _context3.next) {
|
|
532
|
+
case 0:
|
|
533
|
+
headers = {
|
|
534
|
+
"X-Twilio-Token": _this2.config.token
|
|
535
|
+
};
|
|
536
|
+
request = _this2.executeWithRetry(() => _this2.transport.get(url, headers), _this2.retryWhenThrottled());
|
|
537
|
+
log$1.trace("sending GET request to ", url, " headers ", headers);
|
|
538
|
+
onCancel(() => request.cancel());
|
|
539
|
+
_context3.prev = 4;
|
|
540
|
+
_context3.next = 7;
|
|
541
|
+
return request;
|
|
542
|
+
case 7:
|
|
543
|
+
response = _context3.sent;
|
|
544
|
+
log$1.trace("response", response);
|
|
545
|
+
resolve(response);
|
|
546
|
+
_context3.next = 16;
|
|
547
|
+
break;
|
|
548
|
+
case 12:
|
|
549
|
+
_context3.prev = 12;
|
|
550
|
+
_context3.t0 = _context3["catch"](4);
|
|
551
|
+
log$1.debug("get() error ".concat(_context3.t0));
|
|
552
|
+
reject(_context3.t0);
|
|
553
|
+
case 16:
|
|
554
|
+
case "end":
|
|
555
|
+
return _context3.stop();
|
|
556
|
+
}
|
|
674
557
|
}
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
|
|
558
|
+
}, _callee3, null, [[4, 12]]);
|
|
559
|
+
}));
|
|
560
|
+
return function (_x4, _x5, _x6) {
|
|
561
|
+
return _ref4.apply(this, arguments);
|
|
562
|
+
};
|
|
563
|
+
}());
|
|
678
564
|
}
|
|
679
|
-
|
|
680
565
|
post(url, category, media, contentType, filename) {
|
|
681
566
|
var _this3 = this;
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
case 9:
|
|
715
|
-
response = _context4.sent;
|
|
716
|
-
_context4.next = 18;
|
|
717
|
-
break;
|
|
718
|
-
|
|
719
|
-
case 12:
|
|
720
|
-
_context4.prev = 12;
|
|
721
|
-
_context4.t0 = _context4["catch"](6);
|
|
722
|
-
|
|
723
|
-
if (!(global["XMLHttpRequest"] === undefined && media instanceof FormData)) {
|
|
724
|
-
_context4.next = 16;
|
|
567
|
+
var headers = {
|
|
568
|
+
"X-Twilio-Token": this.config.token
|
|
569
|
+
};
|
|
570
|
+
if ((typeof FormData === "undefined" || !(media instanceof FormData)) && contentType) {
|
|
571
|
+
Object.assign(headers, {
|
|
572
|
+
"Content-Type": contentType
|
|
573
|
+
});
|
|
574
|
+
}
|
|
575
|
+
var fullUrl = new URL(url);
|
|
576
|
+
if (category) {
|
|
577
|
+
fullUrl.searchParams.append("Category", category);
|
|
578
|
+
}
|
|
579
|
+
if (filename) {
|
|
580
|
+
fullUrl.searchParams.append("Filename", filename);
|
|
581
|
+
}
|
|
582
|
+
return new shared.CancellablePromise( /*#__PURE__*/function () {
|
|
583
|
+
var _ref5 = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee4(resolve, reject, onCancel) {
|
|
584
|
+
var request, response;
|
|
585
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee4$(_context4) {
|
|
586
|
+
while (1) {
|
|
587
|
+
switch (_context4.prev = _context4.next) {
|
|
588
|
+
case 0:
|
|
589
|
+
request = _this3.transport.post(fullUrl.href, headers, media);
|
|
590
|
+
onCancel(() => request.cancel());
|
|
591
|
+
log$1.trace("sending POST request to ".concat(url, " with headers ").concat(headers));
|
|
592
|
+
_context4.prev = 3;
|
|
593
|
+
_context4.next = 6;
|
|
594
|
+
return request;
|
|
595
|
+
case 6:
|
|
596
|
+
response = _context4.sent;
|
|
597
|
+
_context4.next = 17;
|
|
725
598
|
break;
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
599
|
+
case 9:
|
|
600
|
+
_context4.prev = 9;
|
|
601
|
+
_context4.t0 = _context4["catch"](3);
|
|
602
|
+
if (!(global["XMLHttpRequest"] === undefined && media instanceof FormData)) {
|
|
603
|
+
_context4.next = 14;
|
|
604
|
+
break;
|
|
605
|
+
}
|
|
606
|
+
reject(new TypeError("Posting FormData supported only with browser engine's FormData"));
|
|
607
|
+
return _context4.abrupt("return");
|
|
608
|
+
case 14:
|
|
609
|
+
log$1.debug("post() error ".concat(_context4.t0));
|
|
610
|
+
reject(_context4.t0);
|
|
611
|
+
return _context4.abrupt("return");
|
|
612
|
+
case 17:
|
|
613
|
+
log$1.trace("response", response);
|
|
614
|
+
resolve(response);
|
|
615
|
+
case 19:
|
|
616
|
+
case "end":
|
|
617
|
+
return _context4.stop();
|
|
618
|
+
}
|
|
741
619
|
}
|
|
742
|
-
}
|
|
743
|
-
}
|
|
744
|
-
|
|
620
|
+
}, _callee4, null, [[3, 9]]);
|
|
621
|
+
}));
|
|
622
|
+
return function (_x7, _x8, _x9) {
|
|
623
|
+
return _ref5.apply(this, arguments);
|
|
624
|
+
};
|
|
625
|
+
}());
|
|
745
626
|
}
|
|
746
|
-
|
|
747
627
|
}
|
|
748
628
|
|
|
749
|
-
var version = "0.
|
|
629
|
+
var version = "0.6.1";
|
|
750
630
|
|
|
751
|
-
var _class
|
|
631
|
+
var _class;
|
|
752
632
|
var log = Logger.scope("");
|
|
753
633
|
/**
|
|
754
634
|
* @classdesc A Client provides an interface for Media Content Service
|
|
755
635
|
*/
|
|
756
|
-
|
|
757
|
-
exports['default'] = (_temp = _class = class Client {
|
|
636
|
+
exports["default"] = (_class = class Client {
|
|
758
637
|
// eslint-disable-next-line
|
|
759
638
|
|
|
760
639
|
/**
|
|
@@ -768,8 +647,11 @@ exports['default'] = (_temp = _class = class Client {
|
|
|
768
647
|
*/
|
|
769
648
|
constructor(token, baseUrl, baseSetUrl) {
|
|
770
649
|
var _this$options$logLeve, _this$options$transpo;
|
|
771
|
-
|
|
772
650
|
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
651
|
+
_defineProperty__default["default"](this, "transport", void 0);
|
|
652
|
+
_defineProperty__default["default"](this, "options", void 0);
|
|
653
|
+
_defineProperty__default["default"](this, "network", void 0);
|
|
654
|
+
_defineProperty__default["default"](this, "config", void 0);
|
|
773
655
|
this.options = options;
|
|
774
656
|
this.options.logLevel = (_this$options$logLeve = this.options.logLevel) !== null && _this$options$logLeve !== void 0 ? _this$options$logLeve : "silent";
|
|
775
657
|
this.config = new Configuration(token, baseUrl, baseSetUrl, this.options);
|
|
@@ -784,14 +666,11 @@ exports['default'] = (_temp = _class = class Client {
|
|
|
784
666
|
* @property {String} [logLevel='silent'] - The level of logging to enable. Valid options
|
|
785
667
|
* (from strictest to broadest): ['silent', 'error', 'warn', 'info', 'debug', 'trace']
|
|
786
668
|
*/
|
|
787
|
-
|
|
788
669
|
/**
|
|
789
670
|
* Update the token used for Client operations
|
|
790
671
|
* @param {String} token - The JWT string of the new token
|
|
791
672
|
* @returns {void}
|
|
792
673
|
*/
|
|
793
|
-
|
|
794
|
-
|
|
795
674
|
updateToken(token) {
|
|
796
675
|
log.info("updateToken");
|
|
797
676
|
this.config.updateToken(token);
|
|
@@ -799,66 +678,82 @@ exports['default'] = (_temp = _class = class Client {
|
|
|
799
678
|
/**
|
|
800
679
|
* Gets media from media service
|
|
801
680
|
* @param {String} sid - Media's SID
|
|
802
|
-
* @returns {Promise<Media>}
|
|
803
681
|
*/
|
|
804
|
-
|
|
805
|
-
|
|
806
682
|
get(sid) {
|
|
807
683
|
var _this = this;
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
684
|
+
return new shared.CancellablePromise( /*#__PURE__*/function () {
|
|
685
|
+
var _ref = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(resolve, reject, onCancel) {
|
|
686
|
+
var request, response;
|
|
687
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
688
|
+
while (1) {
|
|
689
|
+
switch (_context.prev = _context.next) {
|
|
690
|
+
case 0:
|
|
691
|
+
request = _this.network.get("".concat(_this.config.mediaUrl, "/").concat(sid));
|
|
692
|
+
onCancel(() => request.cancel());
|
|
693
|
+
_context.prev = 2;
|
|
694
|
+
_context.next = 5;
|
|
695
|
+
return request;
|
|
696
|
+
case 5:
|
|
697
|
+
response = _context.sent;
|
|
698
|
+
resolve(new Media(_this.config, _this.network, response.body));
|
|
699
|
+
_context.next = 12;
|
|
700
|
+
break;
|
|
701
|
+
case 9:
|
|
702
|
+
_context.prev = 9;
|
|
703
|
+
_context.t0 = _context["catch"](2);
|
|
704
|
+
reject(_context.t0);
|
|
705
|
+
case 12:
|
|
706
|
+
case "end":
|
|
707
|
+
return _context.stop();
|
|
708
|
+
}
|
|
825
709
|
}
|
|
826
|
-
}
|
|
827
|
-
}
|
|
828
|
-
|
|
710
|
+
}, _callee, null, [[2, 9]]);
|
|
711
|
+
}));
|
|
712
|
+
return function (_x, _x2, _x3) {
|
|
713
|
+
return _ref.apply(this, arguments);
|
|
714
|
+
};
|
|
715
|
+
}());
|
|
829
716
|
}
|
|
830
717
|
/**
|
|
831
718
|
* Posts raw content to media service
|
|
832
719
|
* @param {String} contentType - content type of media
|
|
833
720
|
* @param {String|Buffer|Blob} media - content to post
|
|
834
721
|
* @param {MediaCategory|null} category - category for the media
|
|
835
|
-
* @returns {Promise<Media>}
|
|
836
722
|
*/
|
|
837
|
-
|
|
838
|
-
|
|
839
723
|
post(contentType, media, category, filename) {
|
|
840
724
|
var _this2 = this;
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
725
|
+
return new shared.CancellablePromise( /*#__PURE__*/function () {
|
|
726
|
+
var _ref2 = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(resolve, reject, onCancel) {
|
|
727
|
+
var request, response;
|
|
728
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
|
|
729
|
+
while (1) {
|
|
730
|
+
switch (_context2.prev = _context2.next) {
|
|
731
|
+
case 0:
|
|
732
|
+
request = _this2.network.post(_this2.config.mediaUrl, category !== null && category !== void 0 ? category : "media", media, contentType, filename);
|
|
733
|
+
onCancel(() => request.cancel());
|
|
734
|
+
_context2.prev = 2;
|
|
735
|
+
_context2.next = 5;
|
|
736
|
+
return request;
|
|
737
|
+
case 5:
|
|
738
|
+
response = _context2.sent;
|
|
739
|
+
resolve(new Media(_this2.config, _this2.network, response.body));
|
|
740
|
+
_context2.next = 12;
|
|
741
|
+
break;
|
|
742
|
+
case 9:
|
|
743
|
+
_context2.prev = 9;
|
|
744
|
+
_context2.t0 = _context2["catch"](2);
|
|
745
|
+
reject(_context2.t0);
|
|
746
|
+
case 12:
|
|
747
|
+
case "end":
|
|
748
|
+
return _context2.stop();
|
|
749
|
+
}
|
|
858
750
|
}
|
|
859
|
-
}
|
|
860
|
-
}
|
|
861
|
-
|
|
751
|
+
}, _callee2, null, [[2, 9]]);
|
|
752
|
+
}));
|
|
753
|
+
return function (_x4, _x5, _x6) {
|
|
754
|
+
return _ref2.apply(this, arguments);
|
|
755
|
+
};
|
|
756
|
+
}());
|
|
862
757
|
}
|
|
863
758
|
/**
|
|
864
759
|
* Posts FormData to media service. Can be used only with browser engine's FormData.
|
|
@@ -866,88 +761,158 @@ exports['default'] = (_temp = _class = class Client {
|
|
|
866
761
|
* new TypeError("Posting FormData supported only with browser engine's FormData")
|
|
867
762
|
* @param {FormData} formData - form data to post
|
|
868
763
|
* @param {MediaCategory|null} category - category for the media
|
|
869
|
-
* @returns {Promise<Media>}
|
|
870
764
|
*/
|
|
871
|
-
|
|
872
|
-
|
|
873
765
|
postFormData(formData, category) {
|
|
874
766
|
var _this3 = this;
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
767
|
+
return new shared.CancellablePromise( /*#__PURE__*/function () {
|
|
768
|
+
var _ref3 = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee3(resolve, reject, onCancel) {
|
|
769
|
+
var request, response;
|
|
770
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee3$(_context3) {
|
|
771
|
+
while (1) {
|
|
772
|
+
switch (_context3.prev = _context3.next) {
|
|
773
|
+
case 0:
|
|
774
|
+
request = _this3.network.post(_this3.config.mediaUrl, category !== null && category !== void 0 ? category : "media", formData);
|
|
775
|
+
onCancel(() => request.cancel());
|
|
776
|
+
_context3.prev = 2;
|
|
777
|
+
_context3.next = 5;
|
|
778
|
+
return request;
|
|
779
|
+
case 5:
|
|
780
|
+
response = _context3.sent;
|
|
781
|
+
resolve(new Media(_this3.config, _this3.network, response.body));
|
|
782
|
+
_context3.next = 12;
|
|
783
|
+
break;
|
|
784
|
+
case 9:
|
|
785
|
+
_context3.prev = 9;
|
|
786
|
+
_context3.t0 = _context3["catch"](2);
|
|
787
|
+
reject(_context3.t0);
|
|
788
|
+
case 12:
|
|
789
|
+
case "end":
|
|
790
|
+
return _context3.stop();
|
|
791
|
+
}
|
|
892
792
|
}
|
|
893
|
-
}
|
|
894
|
-
}
|
|
895
|
-
|
|
793
|
+
}, _callee3, null, [[2, 9]]);
|
|
794
|
+
}));
|
|
795
|
+
return function (_x7, _x8, _x9) {
|
|
796
|
+
return _ref3.apply(this, arguments);
|
|
797
|
+
};
|
|
798
|
+
}());
|
|
896
799
|
}
|
|
897
800
|
/**
|
|
898
801
|
* Retrieve information about multiple media SIDs at the same time.
|
|
899
802
|
* @param mediaSids Array of Media SIDs to get information from.
|
|
900
803
|
*/
|
|
901
|
-
|
|
902
|
-
|
|
903
804
|
mediaSetGet(mediaSids) {
|
|
904
805
|
var _this4 = this;
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
806
|
+
return new shared.CancellablePromise( /*#__PURE__*/function () {
|
|
807
|
+
var _ref4 = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee4(resolve, reject, onCancel) {
|
|
808
|
+
var query, request, response, media;
|
|
809
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee4$(_context4) {
|
|
810
|
+
while (1) {
|
|
811
|
+
switch (_context4.prev = _context4.next) {
|
|
812
|
+
case 0:
|
|
813
|
+
query = {
|
|
814
|
+
command: "get",
|
|
815
|
+
list: mediaSids.map(sid => ({
|
|
816
|
+
media_sid: sid
|
|
817
|
+
}))
|
|
818
|
+
};
|
|
819
|
+
request = _this4.network.post("".concat(_this4.config.mediaSetUrl), null, query, "application/json");
|
|
820
|
+
onCancel(() => request.cancel());
|
|
821
|
+
_context4.prev = 3;
|
|
822
|
+
_context4.next = 6;
|
|
823
|
+
return request;
|
|
824
|
+
case 6:
|
|
825
|
+
response = _context4.sent;
|
|
826
|
+
media = response.body.map(item => {
|
|
827
|
+
if (item.code !== 200) {
|
|
828
|
+
reject("Failed to obtain detailed information about Media items (failed SID ".concat(item.media_record.sid, ")"));
|
|
829
|
+
return;
|
|
830
|
+
}
|
|
831
|
+
return new Media(_this4.config, _this4.network, item.media_record);
|
|
832
|
+
});
|
|
833
|
+
resolve(media);
|
|
834
|
+
_context4.next = 14;
|
|
835
|
+
break;
|
|
836
|
+
case 11:
|
|
837
|
+
_context4.prev = 11;
|
|
838
|
+
_context4.t0 = _context4["catch"](3);
|
|
839
|
+
reject(_context4.t0);
|
|
840
|
+
case 14:
|
|
841
|
+
case "end":
|
|
842
|
+
return _context4.stop();
|
|
843
|
+
}
|
|
934
844
|
}
|
|
935
|
-
}
|
|
936
|
-
}
|
|
937
|
-
|
|
845
|
+
}, _callee4, null, [[3, 11]]);
|
|
846
|
+
}));
|
|
847
|
+
return function (_x10, _x11, _x12) {
|
|
848
|
+
return _ref4.apply(this, arguments);
|
|
849
|
+
};
|
|
850
|
+
}());
|
|
938
851
|
}
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
852
|
+
/**
|
|
853
|
+
* Retrieve temporary URLs for a set of media SIDs.
|
|
854
|
+
* @param mediaSids array of the media SIDs to get URLs from.
|
|
855
|
+
*/
|
|
856
|
+
mediaSetGetContentUrls(mediaSids) {
|
|
857
|
+
var _this5 = this;
|
|
858
|
+
return new shared.CancellablePromise( /*#__PURE__*/function () {
|
|
859
|
+
var _ref5 = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee5(resolve, reject, onCancel) {
|
|
860
|
+
var query, request, response, urls;
|
|
861
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee5$(_context5) {
|
|
862
|
+
while (1) {
|
|
863
|
+
switch (_context5.prev = _context5.next) {
|
|
864
|
+
case 0:
|
|
865
|
+
query = {
|
|
866
|
+
command: "get",
|
|
867
|
+
list: mediaSids.map(sid => ({
|
|
868
|
+
media_sid: sid
|
|
869
|
+
}))
|
|
870
|
+
};
|
|
871
|
+
request = _this5.network.post("".concat(_this5.config.mediaSetUrl), null, query, "application/json");
|
|
872
|
+
onCancel(() => request.cancel());
|
|
873
|
+
_context5.prev = 3;
|
|
874
|
+
_context5.next = 6;
|
|
875
|
+
return request;
|
|
876
|
+
case 6:
|
|
877
|
+
response = _context5.sent;
|
|
878
|
+
urls = new Map();
|
|
879
|
+
response.body.forEach(item => {
|
|
880
|
+
if (item.code !== 200) {
|
|
881
|
+
reject("Failed to obtain detailed information about Media items (failed SID ".concat(item.media_record.sid, ")"));
|
|
882
|
+
return;
|
|
883
|
+
}
|
|
884
|
+
urls.set(item.media_record.sid, item.media_record.links.content_direct_temporary);
|
|
885
|
+
});
|
|
886
|
+
resolve(urls);
|
|
887
|
+
_context5.next = 15;
|
|
888
|
+
break;
|
|
889
|
+
case 12:
|
|
890
|
+
_context5.prev = 12;
|
|
891
|
+
_context5.t0 = _context5["catch"](3);
|
|
892
|
+
reject(_context5.t0);
|
|
893
|
+
case 15:
|
|
894
|
+
case "end":
|
|
895
|
+
return _context5.stop();
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
}, _callee5, null, [[3, 12]]);
|
|
899
|
+
}));
|
|
900
|
+
return function (_x13, _x14, _x15) {
|
|
901
|
+
return _ref5.apply(this, arguments);
|
|
902
|
+
};
|
|
903
|
+
}());
|
|
904
|
+
}
|
|
905
|
+
}, _defineProperty__default["default"](_class, "version", version), _class);
|
|
906
|
+
__decorate([declarativeTypeValidator.validateTypes(declarativeTypeValidator.nonEmptyString), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", void 0)], exports["default"].prototype, "updateToken", null);
|
|
907
|
+
__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonEmptyString), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", shared.CancellablePromise)], exports["default"].prototype, "get", null);
|
|
908
|
+
exports["default"] = __decorate([declarativeTypeValidator.validateConstructorTypes(declarativeTypeValidator.nonEmptyString, declarativeTypeValidator.nonEmptyString, [declarativeTypeValidator.nonEmptyString, declarativeTypeValidator.literal(null)], [declarativeTypeValidator.pureObject, "undefined"]), __metadata("design:paramtypes", [String, String, Object, Object])], exports["default"]);
|
|
909
|
+
|
|
910
|
+
Object.defineProperty(exports, 'CancellablePromise', {
|
|
911
|
+
enumerable: true,
|
|
912
|
+
get: function () { return shared.CancellablePromise; }
|
|
913
|
+
});
|
|
914
|
+
exports.Client = exports["default"];
|
|
915
|
+
exports.McsClient = exports["default"];
|
|
950
916
|
exports.McsMedia = Media;
|
|
951
917
|
exports.Media = Media;
|
|
952
|
-
exports.default = exports['default'];
|
|
953
918
|
//# sourceMappingURL=lib.js.map
|