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