purecloud-platform-client-v2 136.1.0 → 137.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -12
- package/dist/node/purecloud-platform-client-v2.js +9667 -9635
- package/dist/web-amd/purecloud-platform-client-v2.js +9667 -9635
- package/dist/web-amd/purecloud-platform-client-v2.min.js +1 -1
- package/dist/web-cjs/bundle.js +9674 -9635
- package/dist/web-cjs/purecloud-platform-client-v2.js +11469 -13867
- package/dist/web-cjs/purecloud-platform-client-v2.min.js +1 -1
- package/index.d.ts +92 -76
- package/package.json +2 -2
- package/src/purecloud-platform-client-v2/ApiClient.js +197 -169
- package/src/purecloud-platform-client-v2/api/AlertingApi.js +56 -56
- package/src/purecloud-platform-client-v2/api/AnalyticsApi.js +231 -231
- package/src/purecloud-platform-client-v2/api/ArchitectApi.js +534 -534
- package/src/purecloud-platform-client-v2/api/AuditApi.js +31 -31
- package/src/purecloud-platform-client-v2/api/AuthorizationApi.js +212 -212
- package/src/purecloud-platform-client-v2/api/BillingApi.js +12 -12
- package/src/purecloud-platform-client-v2/api/ChatApi.js +16 -16
- package/src/purecloud-platform-client-v2/api/CoachingApi.js +96 -96
- package/src/purecloud-platform-client-v2/api/ContentManagementApi.js +192 -192
- package/src/purecloud-platform-client-v2/api/ConversationsApi.js +808 -808
- package/src/purecloud-platform-client-v2/api/DataExtensionsApi.js +17 -17
- package/src/purecloud-platform-client-v2/api/ExternalContactsApi.js +337 -337
- package/src/purecloud-platform-client-v2/api/FaxApi.js +31 -31
- package/src/purecloud-platform-client-v2/api/FlowsApi.js +11 -11
- package/src/purecloud-platform-client-v2/api/GamificationApi.js +246 -246
- package/src/purecloud-platform-client-v2/api/GeneralDataProtectionRegulationApi.js +21 -21
- package/src/purecloud-platform-client-v2/api/GeolocationApi.js +26 -26
- package/src/purecloud-platform-client-v2/api/GreetingsApi.js +88 -88
- package/src/purecloud-platform-client-v2/api/GroupsApi.js +72 -72
- package/src/purecloud-platform-client-v2/api/IdentityProviderApi.js +171 -171
- package/src/purecloud-platform-client-v2/api/IntegrationsApi.js +311 -311
- package/src/purecloud-platform-client-v2/api/JourneyApi.js +146 -146
- package/src/purecloud-platform-client-v2/api/KnowledgeApi.js +131 -131
- package/src/purecloud-platform-client-v2/api/LanguageUnderstandingApi.js +151 -151
- package/src/purecloud-platform-client-v2/api/LanguagesApi.js +51 -51
- package/src/purecloud-platform-client-v2/api/LearningApi.js +107 -107
- package/src/purecloud-platform-client-v2/api/LicenseApi.js +49 -49
- package/src/purecloud-platform-client-v2/api/LocationsApi.js +41 -41
- package/src/purecloud-platform-client-v2/api/MessagingApi.js +26 -26
- package/src/purecloud-platform-client-v2/api/MobileDevicesApi.js +26 -26
- package/src/purecloud-platform-client-v2/api/NotificationsApi.js +43 -43
- package/src/purecloud-platform-client-v2/api/OAuthApi.js +67 -67
- package/src/purecloud-platform-client-v2/api/ObjectsApi.js +50 -50
- package/src/purecloud-platform-client-v2/api/OrganizationApi.js +81 -81
- package/src/purecloud-platform-client-v2/api/OrganizationAuthorizationApi.js +162 -162
- package/src/purecloud-platform-client-v2/api/OutboundApi.js +608 -608
- package/src/purecloud-platform-client-v2/api/PresenceApi.js +64 -64
- package/src/purecloud-platform-client-v2/api/QualityApi.js +285 -285
- package/src/purecloud-platform-client-v2/api/RecordingApi.js +302 -302
- package/src/purecloud-platform-client-v2/api/ResponseManagementApi.js +86 -86
- package/src/purecloud-platform-client-v2/api/RoutingApi.js +536 -536
- package/src/purecloud-platform-client-v2/api/SCIMApi.js +195 -195
- package/src/purecloud-platform-client-v2/api/ScriptsApi.js +66 -66
- package/src/purecloud-platform-client-v2/api/SearchApi.js +96 -96
- package/src/purecloud-platform-client-v2/api/SpeechTextAnalyticsApi.js +194 -194
- package/src/purecloud-platform-client-v2/api/StationsApi.js +28 -28
- package/src/purecloud-platform-client-v2/api/SuggestApi.js +21 -21
- package/src/purecloud-platform-client-v2/api/TelephonyApi.js +16 -16
- package/src/purecloud-platform-client-v2/api/TelephonyProvidersEdgeApi.js +657 -657
- package/src/purecloud-platform-client-v2/api/TextbotsApi.js +23 -23
- package/src/purecloud-platform-client-v2/api/TokensApi.js +21 -21
- package/src/purecloud-platform-client-v2/api/UploadsApi.js +26 -26
- package/src/purecloud-platform-client-v2/api/UsageApi.js +11 -11
- package/src/purecloud-platform-client-v2/api/UserRecordingsApi.js +31 -31
- package/src/purecloud-platform-client-v2/api/UsersApi.js +413 -413
- package/src/purecloud-platform-client-v2/api/UtilitiesApi.js +21 -21
- package/src/purecloud-platform-client-v2/api/VoicemailApi.js +140 -140
- package/src/purecloud-platform-client-v2/api/WebChatApi.js +97 -97
- package/src/purecloud-platform-client-v2/api/WebDeploymentsApi.js +66 -66
- package/src/purecloud-platform-client-v2/api/WebMessagingApi.js +6 -6
- package/src/purecloud-platform-client-v2/api/WidgetsApi.js +26 -26
- package/src/purecloud-platform-client-v2/api/WorkforceManagementApi.js +765 -765
- package/src/purecloud-platform-client-v2/index.js +2 -1
- package/src/purecloud-platform-client-v2/logger.js +17 -13
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { default as axios } from 'axios';
|
|
2
2
|
import Configuration from './configuration.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* @module purecloud-platform-client-v2/ApiClient
|
|
6
|
-
* @version
|
|
6
|
+
* @version 137.1.0
|
|
7
7
|
*/
|
|
8
8
|
class ApiClient {
|
|
9
9
|
/**
|
|
@@ -85,10 +85,9 @@ class ApiClient {
|
|
|
85
85
|
* @type {Array.<String>}
|
|
86
86
|
*/
|
|
87
87
|
this.authentications = {
|
|
88
|
-
'
|
|
89
|
-
'
|
|
88
|
+
'Guest Chat JWT': {type: 'apiKey', 'in': 'header', name: 'Authorization'},
|
|
89
|
+
'PureCloud OAuth': {type: 'oauth2'}
|
|
90
90
|
};
|
|
91
|
-
|
|
92
91
|
/**
|
|
93
92
|
* The default HTTP headers to be included for all API calls.
|
|
94
93
|
* @type {Array.<String>}
|
|
@@ -106,9 +105,6 @@ class ApiClient {
|
|
|
106
105
|
this.authData = {};
|
|
107
106
|
this.settingsPrefix = 'purecloud';
|
|
108
107
|
|
|
109
|
-
// Expose superagent module for use with superagent-proxy
|
|
110
|
-
this.superagent = superagent;
|
|
111
|
-
|
|
112
108
|
// Transparently request a new access token when it expires (Code Authorization only)
|
|
113
109
|
this.refreshInProgress = false;
|
|
114
110
|
|
|
@@ -277,63 +273,65 @@ class ApiClient {
|
|
|
277
273
|
return;
|
|
278
274
|
}
|
|
279
275
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
if (this.proxy && request.proxy) {
|
|
283
|
-
request.proxy(this.proxy);
|
|
276
|
+
const headers = {
|
|
277
|
+
'Authorization': `Basic ${authHeader}`
|
|
284
278
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
'error',
|
|
294
|
-
response.statusCode,
|
|
295
|
-
'POST',
|
|
296
|
-
`https://login.${this.config.environment}/oauth/token`,
|
|
297
|
-
request.header,
|
|
298
|
-
response.headers,
|
|
299
|
-
{ grant_type: 'client_credentials' },
|
|
300
|
-
response.body
|
|
301
|
-
);
|
|
302
|
-
reject(error);
|
|
303
|
-
} else {
|
|
279
|
+
axios({
|
|
280
|
+
method: `POST`,
|
|
281
|
+
url: `https://login.${this.config.environment}/oauth/token`,
|
|
282
|
+
headers: headers,
|
|
283
|
+
data: 'grant_type=client_credentials',
|
|
284
|
+
proxy: this.proxy
|
|
285
|
+
})
|
|
286
|
+
.then((response) => {
|
|
304
287
|
// Logging
|
|
305
288
|
this.config.logger.log(
|
|
306
289
|
'trace',
|
|
307
|
-
response.
|
|
290
|
+
response.status,
|
|
308
291
|
'POST',
|
|
309
292
|
`https://login.${this.config.environment}/oauth/token`,
|
|
310
|
-
|
|
293
|
+
headers,
|
|
311
294
|
response.headers,
|
|
312
295
|
{ grant_type: 'client_credentials' },
|
|
313
296
|
undefined
|
|
314
297
|
);
|
|
315
298
|
this.config.logger.log(
|
|
316
299
|
'debug',
|
|
317
|
-
response.
|
|
300
|
+
response.status,
|
|
318
301
|
'POST',
|
|
319
302
|
`https://login.${this.config.environment}/oauth/token`,
|
|
320
|
-
|
|
303
|
+
headers,
|
|
321
304
|
undefined,
|
|
322
305
|
{ grant_type: 'client_credentials' },
|
|
323
306
|
undefined
|
|
324
307
|
);
|
|
325
308
|
|
|
326
309
|
// Save access token
|
|
327
|
-
this.setAccessToken(response.
|
|
310
|
+
this.setAccessToken(response.data['access_token']);
|
|
328
311
|
|
|
329
312
|
// Set expiry time
|
|
330
|
-
this.authData.tokenExpiryTime = (new Date()).getTime() + (response.
|
|
313
|
+
this.authData.tokenExpiryTime = (new Date()).getTime() + (response.data['expires_in'] * 1000);
|
|
331
314
|
this.authData.tokenExpiryTimeString = (new Date(this.authData.tokenExpiryTime)).toUTCString();
|
|
332
315
|
|
|
333
316
|
// Return auth data
|
|
334
317
|
resolve(this.authData);
|
|
335
|
-
}
|
|
336
|
-
|
|
318
|
+
})
|
|
319
|
+
.catch((error) => {
|
|
320
|
+
// Log error
|
|
321
|
+
if (error.response) {
|
|
322
|
+
this.config.logger.log(
|
|
323
|
+
'error',
|
|
324
|
+
error.response.status,
|
|
325
|
+
'POST',
|
|
326
|
+
`https://login.${this.config.environment}/oauth/token`,
|
|
327
|
+
headers,
|
|
328
|
+
error.response.headers,
|
|
329
|
+
{ grant_type: 'client_credentials' },
|
|
330
|
+
error.response.data
|
|
331
|
+
);
|
|
332
|
+
}
|
|
333
|
+
reject(error);
|
|
334
|
+
});
|
|
337
335
|
});
|
|
338
336
|
}
|
|
339
337
|
|
|
@@ -356,6 +354,7 @@ class ApiClient {
|
|
|
356
354
|
{ grant_type: 'urn:ietf:params:oauth:grant-type:saml2-bearer' },
|
|
357
355
|
{ orgName: orgName },
|
|
358
356
|
{ assertion: assertion });
|
|
357
|
+
request.proxy = this.proxy;
|
|
359
358
|
var bodyParam = {
|
|
360
359
|
grant_type: 'urn:ietf:params:oauth:grant-type:saml2-bearer',
|
|
361
360
|
orgName: orgName,
|
|
@@ -363,54 +362,56 @@ class ApiClient {
|
|
|
363
362
|
};
|
|
364
363
|
|
|
365
364
|
// Handle response
|
|
366
|
-
request
|
|
367
|
-
|
|
368
|
-
// Log error
|
|
369
|
-
this.config.logger.log(
|
|
370
|
-
'error',
|
|
371
|
-
response.statusCode,
|
|
372
|
-
'POST',
|
|
373
|
-
`https://login.${this.config.environment}/oauth/token`,
|
|
374
|
-
request.header,
|
|
375
|
-
response.headers,
|
|
376
|
-
bodyParam,
|
|
377
|
-
response.body
|
|
378
|
-
);
|
|
379
|
-
reject(error);
|
|
380
|
-
} else {
|
|
365
|
+
request
|
|
366
|
+
.then((response) => {
|
|
381
367
|
// Logging
|
|
382
368
|
this.config.logger.log(
|
|
383
369
|
'trace',
|
|
384
|
-
response.
|
|
370
|
+
response.status,
|
|
385
371
|
'POST',
|
|
386
372
|
`https://login.${this.config.environment}/oauth/token`,
|
|
387
|
-
request.
|
|
373
|
+
request.headers,
|
|
388
374
|
response.headers,
|
|
389
375
|
bodyParam,
|
|
390
376
|
undefined
|
|
391
377
|
);
|
|
392
378
|
this.config.logger.log(
|
|
393
379
|
'debug',
|
|
394
|
-
response.
|
|
380
|
+
response.status,
|
|
395
381
|
'POST',
|
|
396
382
|
`https://login.${this.config.environment}/oauth/token`,
|
|
397
|
-
request.
|
|
383
|
+
request.headers,
|
|
398
384
|
undefined,
|
|
399
385
|
bodyParam,
|
|
400
386
|
undefined
|
|
401
387
|
);
|
|
402
388
|
|
|
403
389
|
// Get access token from response
|
|
404
|
-
var access_token = response.
|
|
390
|
+
var access_token = response.data.access_token;
|
|
405
391
|
|
|
406
392
|
this.setAccessToken(access_token);
|
|
407
|
-
this.authData.tokenExpiryTime = new Date().getTime() + response.
|
|
393
|
+
this.authData.tokenExpiryTime = new Date().getTime() + response.data['expires_in'] * 1000;
|
|
408
394
|
this.authData.tokenExpiryTimeString = new Date(this.authData.tokenExpiryTime).toUTCString();
|
|
409
395
|
|
|
410
396
|
// Return auth data
|
|
411
397
|
resolve(this.authData);
|
|
412
|
-
}
|
|
413
|
-
|
|
398
|
+
})
|
|
399
|
+
.catch((error) => {
|
|
400
|
+
// Log error
|
|
401
|
+
if (error.response) {
|
|
402
|
+
this.config.logger.log(
|
|
403
|
+
'error',
|
|
404
|
+
error.response.status,
|
|
405
|
+
'POST',
|
|
406
|
+
`https://login.${this.config.environment}/oauth/token`,
|
|
407
|
+
request.headers,
|
|
408
|
+
error.response.headers,
|
|
409
|
+
bodyParam,
|
|
410
|
+
error.response.data
|
|
411
|
+
);
|
|
412
|
+
}
|
|
413
|
+
reject(error);
|
|
414
|
+
});
|
|
414
415
|
});
|
|
415
416
|
}
|
|
416
417
|
|
|
@@ -434,6 +435,7 @@ class ApiClient {
|
|
|
434
435
|
{ grant_type: 'authorization_code' },
|
|
435
436
|
{ code: authCode },
|
|
436
437
|
{ redirect_uri: redirectUri });
|
|
438
|
+
request.proxy = this.proxy;
|
|
437
439
|
var bodyParam = {
|
|
438
440
|
grant_type: 'authorization_code',
|
|
439
441
|
code: authCode,
|
|
@@ -459,6 +461,7 @@ class ApiClient {
|
|
|
459
461
|
}
|
|
460
462
|
var encodedData = Buffer.from(clientId + ':' + clientSecret).toString('base64');
|
|
461
463
|
var request = this._formAuthRequest(encodedData, { grant_type: 'refresh_token' }, { refresh_token: refreshToken });
|
|
464
|
+
request.proxy = this.proxy;
|
|
462
465
|
var bodyParam = {
|
|
463
466
|
grant_type: 'refresh_token',
|
|
464
467
|
refresh_token: refreshToken,
|
|
@@ -476,57 +479,59 @@ class ApiClient {
|
|
|
476
479
|
* @param {function} reject - Promise reject callback
|
|
477
480
|
*/
|
|
478
481
|
_handleCodeAuthorizationResponse(request, bodyParam, resolve, reject) {
|
|
479
|
-
request
|
|
480
|
-
|
|
481
|
-
// Log error
|
|
482
|
-
this.config.logger.log(
|
|
483
|
-
'error',
|
|
484
|
-
response.statusCode,
|
|
485
|
-
'POST',
|
|
486
|
-
`https://login.${this.config.environment}/oauth/token`,
|
|
487
|
-
request.header,
|
|
488
|
-
response.headers,
|
|
489
|
-
bodyParam,
|
|
490
|
-
response.body
|
|
491
|
-
);
|
|
492
|
-
|
|
493
|
-
reject(error);
|
|
494
|
-
} else {
|
|
482
|
+
request
|
|
483
|
+
.then((response) => {
|
|
495
484
|
// Logging
|
|
496
485
|
this.config.logger.log(
|
|
497
486
|
'trace',
|
|
498
|
-
response.
|
|
487
|
+
response.status,
|
|
499
488
|
'POST',
|
|
500
489
|
`https://login.${this.config.environment}/oauth/token`,
|
|
501
|
-
request.
|
|
490
|
+
request.headers,
|
|
502
491
|
response.headers,
|
|
503
492
|
bodyParam,
|
|
504
493
|
undefined
|
|
505
494
|
);
|
|
506
495
|
this.config.logger.log(
|
|
507
496
|
'debug',
|
|
508
|
-
response.
|
|
497
|
+
response.status,
|
|
509
498
|
'POST',
|
|
510
499
|
`https://login.${this.config.environment}/oauth/token`,
|
|
511
|
-
request.
|
|
500
|
+
request.headers,
|
|
512
501
|
undefined,
|
|
513
502
|
bodyParam,
|
|
514
503
|
undefined
|
|
515
504
|
);
|
|
516
505
|
|
|
517
506
|
// Get access token from response
|
|
518
|
-
var access_token = response.
|
|
519
|
-
var refresh_token = response.
|
|
507
|
+
var access_token = response.data.access_token;
|
|
508
|
+
var refresh_token = response.data.refresh_token;
|
|
520
509
|
|
|
521
510
|
this.setAccessToken(access_token);
|
|
522
511
|
this.authData.refreshToken = refresh_token;
|
|
523
|
-
this.authData.tokenExpiryTime = new Date().getTime() + response.
|
|
512
|
+
this.authData.tokenExpiryTime = new Date().getTime() + response.data['expires_in'] * 1000;
|
|
524
513
|
this.authData.tokenExpiryTimeString = new Date(this.authData.tokenExpiryTime).toUTCString();
|
|
525
514
|
|
|
526
515
|
// Return auth data
|
|
527
516
|
resolve(this.authData);
|
|
528
|
-
}
|
|
529
|
-
|
|
517
|
+
})
|
|
518
|
+
.catch((error) => {
|
|
519
|
+
// Log error
|
|
520
|
+
if (error.response) {
|
|
521
|
+
this.config.logger.log(
|
|
522
|
+
'error',
|
|
523
|
+
error.response.status,
|
|
524
|
+
'POST',
|
|
525
|
+
`https://login.${this.config.environment}/oauth/token`,
|
|
526
|
+
request.headers,
|
|
527
|
+
error.response.headers,
|
|
528
|
+
bodyParam,
|
|
529
|
+
error.response.data
|
|
530
|
+
);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
reject(error);
|
|
534
|
+
});
|
|
530
535
|
}
|
|
531
536
|
|
|
532
537
|
/**
|
|
@@ -534,15 +539,15 @@ class ApiClient {
|
|
|
534
539
|
* @param {string} encodedData - Base64 encoded client and clientSecret pair
|
|
535
540
|
*/
|
|
536
541
|
_formAuthRequest(encodedData) {
|
|
537
|
-
var request =
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
542
|
+
var request = axios({
|
|
543
|
+
method: `POST`,
|
|
544
|
+
url: `https://login.${this.config.environment}/oauth/token`,
|
|
545
|
+
headers: {
|
|
546
|
+
'Authorization': 'Basic ' + encodedData,
|
|
547
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
548
|
+
},
|
|
549
|
+
data: arguments
|
|
550
|
+
});
|
|
546
551
|
|
|
547
552
|
return request;
|
|
548
553
|
}
|
|
@@ -743,6 +748,36 @@ class ApiClient {
|
|
|
743
748
|
return param.toString();
|
|
744
749
|
}
|
|
745
750
|
|
|
751
|
+
/**
|
|
752
|
+
* Returns query parameters serialized in the format needed for an axios request.
|
|
753
|
+
* @param param The unserialized query parameters.
|
|
754
|
+
* @returns {Object} The serialized representation the query parameters.
|
|
755
|
+
*/
|
|
756
|
+
serialize(obj) {
|
|
757
|
+
var result = {};
|
|
758
|
+
for (var p in obj) {
|
|
759
|
+
if (obj.hasOwnProperty(p)) {
|
|
760
|
+
result[encodeURIComponent(p)] = Array.isArray(obj[p]) ? obj[p].join(",") : this.paramToString(obj[p]);
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
return result
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
/**
|
|
767
|
+
* Adds headers onto an existing header object (may be empty)
|
|
768
|
+
* @param existingHeaders The existing header object.
|
|
769
|
+
* @param newHeaders New headers.
|
|
770
|
+
* @returns {Object} The combination of all headers.
|
|
771
|
+
*/
|
|
772
|
+
addHeaders(existingHeaders, ...newHeaders) {
|
|
773
|
+
if (existingHeaders) {
|
|
774
|
+
existingHeaders = Object.assign(existingHeaders, ...newHeaders);
|
|
775
|
+
} else {
|
|
776
|
+
existingHeaders = Object.assign(...newHeaders);
|
|
777
|
+
}
|
|
778
|
+
return existingHeaders;
|
|
779
|
+
}
|
|
780
|
+
|
|
746
781
|
/**
|
|
747
782
|
* Builds full URL by appending the given path to the base URL and replacing path parameter place-holders with parameter values.
|
|
748
783
|
* NOTE: query parameters are not handled here.
|
|
@@ -869,7 +904,7 @@ class ApiClient {
|
|
|
869
904
|
case 'pipes':
|
|
870
905
|
return param.map(this.paramToString).join('|');
|
|
871
906
|
case 'multi':
|
|
872
|
-
// return the array directly as
|
|
907
|
+
// return the array directly as axios will handle it as expected
|
|
873
908
|
return param.map(this.paramToString);
|
|
874
909
|
default:
|
|
875
910
|
throw new Error(`Unknown collection format: ${collectionFormat}`);
|
|
@@ -878,7 +913,7 @@ class ApiClient {
|
|
|
878
913
|
|
|
879
914
|
/**
|
|
880
915
|
* Applies authentication headers to the request.
|
|
881
|
-
* @param {Object} request The request object
|
|
916
|
+
* @param {Object} request The axios request config object.
|
|
882
917
|
* @param {Array.<String>} authNames An array of authentication method names.
|
|
883
918
|
*/
|
|
884
919
|
applyAuthToRequest(request, authNames) {
|
|
@@ -887,7 +922,10 @@ class ApiClient {
|
|
|
887
922
|
switch (auth.type) {
|
|
888
923
|
case 'basic':
|
|
889
924
|
if (auth.username || auth.password) {
|
|
890
|
-
request.auth
|
|
925
|
+
request.auth = {
|
|
926
|
+
username: auth.username || '',
|
|
927
|
+
password: auth.password || ''
|
|
928
|
+
};
|
|
891
929
|
}
|
|
892
930
|
break;
|
|
893
931
|
case 'apiKey':
|
|
@@ -899,15 +937,15 @@ class ApiClient {
|
|
|
899
937
|
data[auth.name] = auth.apiKey;
|
|
900
938
|
}
|
|
901
939
|
if (auth['in'] === 'header') {
|
|
902
|
-
request.
|
|
940
|
+
request.headers = this.addHeaders(request.headers, data);
|
|
903
941
|
} else {
|
|
904
|
-
request.
|
|
942
|
+
request.params = this.serialize(data);
|
|
905
943
|
}
|
|
906
944
|
}
|
|
907
945
|
break;
|
|
908
946
|
case 'oauth2':
|
|
909
947
|
if (auth.accessToken) {
|
|
910
|
-
request.
|
|
948
|
+
request.headers = this.addHeaders(request.headers, {'Authorization': `Bearer ${auth.accessToken}`});
|
|
911
949
|
}
|
|
912
950
|
break;
|
|
913
951
|
default:
|
|
@@ -936,86 +974,71 @@ class ApiClient {
|
|
|
936
974
|
sendRequest(this);
|
|
937
975
|
function sendRequest(that) {
|
|
938
976
|
var url = that.buildUrl(path, pathParams);
|
|
939
|
-
var request =
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
977
|
+
var request = {
|
|
978
|
+
method: httpMethod,
|
|
979
|
+
url: url,
|
|
980
|
+
proxy: that.proxy,
|
|
981
|
+
timeout: that.timeout,
|
|
982
|
+
params: that.serialize(queryParams)
|
|
983
|
+
};
|
|
944
984
|
|
|
945
985
|
// apply authentications
|
|
946
986
|
that.applyAuthToRequest(request, authNames);
|
|
947
987
|
|
|
948
|
-
// set query parameters
|
|
949
|
-
request.query(that.normalizeParams(queryParams));
|
|
950
|
-
|
|
951
988
|
// set header parameters
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
// set request timeout
|
|
956
|
-
request.timeout(that.timeout);
|
|
989
|
+
const defaultHeaders = that.defaultHeaders;
|
|
990
|
+
const normalizedHeaderParams = that.normalizeParams(headerParams);
|
|
991
|
+
request.headers = that.addHeaders(request.headers, defaultHeaders, normalizedHeaderParams);
|
|
957
992
|
|
|
958
993
|
var contentType = that.jsonPreferredMime(contentTypes);
|
|
959
994
|
if (contentType) {
|
|
960
|
-
request.
|
|
961
|
-
} else if (!request.
|
|
962
|
-
request.
|
|
995
|
+
request.headers['Content-Type'] = contentType;
|
|
996
|
+
} else if (!request.headers['Content-Type']) {
|
|
997
|
+
request.headers['Content-Type'] = 'application/json';
|
|
963
998
|
}
|
|
964
999
|
|
|
965
1000
|
if (contentType === 'application/x-www-form-urlencoded') {
|
|
966
|
-
request.
|
|
1001
|
+
request.data = that.normalizeParams(formParams);
|
|
967
1002
|
} else if (contentType == 'multipart/form-data') {
|
|
968
1003
|
var _formParams = that.normalizeParams(formParams);
|
|
969
1004
|
for (var key in _formParams) {
|
|
970
1005
|
if (_formParams.hasOwnProperty(key)) {
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
request.field(key, _formParams[key]);
|
|
976
|
-
}
|
|
1006
|
+
// Looks like axios handles files and forms the same way
|
|
1007
|
+
var formData = new FormData();
|
|
1008
|
+
formData.set(key, _formParams[key]);
|
|
1009
|
+
request.data = formData;
|
|
977
1010
|
}
|
|
978
1011
|
}
|
|
979
1012
|
} else if (bodyParam) {
|
|
980
|
-
request.
|
|
1013
|
+
request.data = bodyParam;
|
|
981
1014
|
}
|
|
982
1015
|
|
|
983
1016
|
var accept = that.jsonPreferredMime(accepts);
|
|
984
1017
|
if (accept) {
|
|
985
|
-
request.accept
|
|
1018
|
+
request.headers['Accept'] = accept;
|
|
986
1019
|
}
|
|
987
|
-
request
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
error: error
|
|
1010
|
-
} : response.body ? response.body : response.text;
|
|
1011
|
-
|
|
1012
|
-
// Debug logging
|
|
1013
|
-
that.config.logger.log('trace', response.statusCode, httpMethod, url, request.header, response.headers, bodyParam, undefined);
|
|
1014
|
-
that.config.logger.log('debug', response.statusCode, httpMethod, url, request.header, undefined, bodyParam, undefined);
|
|
1015
|
-
|
|
1016
|
-
// Resolve promise
|
|
1017
|
-
if (error) {
|
|
1018
|
-
if (data.status == 401 && that.config.refresh_access_token && that.authData.refreshToken !== "") {
|
|
1020
|
+
axios.request(request)
|
|
1021
|
+
.then((response) => {
|
|
1022
|
+
// Build response object
|
|
1023
|
+
var data = (that.returnExtended === true) ? {
|
|
1024
|
+
status: response.status,
|
|
1025
|
+
statusText: response.statusText,
|
|
1026
|
+
headers: response.headers,
|
|
1027
|
+
body: response.data,
|
|
1028
|
+
text: response.text,
|
|
1029
|
+
error: null
|
|
1030
|
+
} : response.data ? response.data : response.text;
|
|
1031
|
+
|
|
1032
|
+
// Debug logging
|
|
1033
|
+
that.config.logger.log('trace', response.status, httpMethod, url, request.headers, response.headers, bodyParam, undefined);
|
|
1034
|
+
that.config.logger.log('debug', response.status, httpMethod, url, request.headers, undefined, bodyParam, undefined);
|
|
1035
|
+
|
|
1036
|
+
// Resolve promise
|
|
1037
|
+
resolve(data);
|
|
1038
|
+
})
|
|
1039
|
+
.catch((error) => {
|
|
1040
|
+
var data = error
|
|
1041
|
+
if (error.response && error.response.status == 401 && that.config.refresh_access_token && that.authData.refreshToken !== "") {
|
|
1019
1042
|
that._handleExpiredAccessToken()
|
|
1020
1043
|
.then(() => {
|
|
1021
1044
|
sendRequest(that);
|
|
@@ -1023,24 +1046,29 @@ class ApiClient {
|
|
|
1023
1046
|
.catch((err) => {
|
|
1024
1047
|
reject(err);
|
|
1025
1048
|
});
|
|
1026
|
-
} else {
|
|
1049
|
+
} else if (error.response) {
|
|
1027
1050
|
// Log error
|
|
1028
1051
|
that.config.logger.log(
|
|
1029
1052
|
'error',
|
|
1030
|
-
response.
|
|
1053
|
+
error.response.status,
|
|
1031
1054
|
httpMethod,
|
|
1032
1055
|
url,
|
|
1033
|
-
request.
|
|
1034
|
-
response.headers,
|
|
1056
|
+
request.headers,
|
|
1057
|
+
error.response.headers,
|
|
1035
1058
|
bodyParam,
|
|
1036
|
-
response.
|
|
1059
|
+
error.response.data
|
|
1037
1060
|
);
|
|
1038
|
-
|
|
1061
|
+
data = (that.returnExtended === true) ? {
|
|
1062
|
+
status: error.response.status,
|
|
1063
|
+
statusText: error.response.statusText,
|
|
1064
|
+
headers: error.response.headers,
|
|
1065
|
+
body: error.response.data,
|
|
1066
|
+
text: error.response.text,
|
|
1067
|
+
error: error
|
|
1068
|
+
} : error.response.data ? error.response.data : error.response.text;
|
|
1039
1069
|
}
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
}
|
|
1043
|
-
});
|
|
1070
|
+
reject(data);
|
|
1071
|
+
});
|
|
1044
1072
|
}
|
|
1045
1073
|
});
|
|
1046
1074
|
}
|