purecloud-platform-client-v2 137.0.1 → 138.0.1
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 +289 -262
- package/dist/web-amd/purecloud-platform-client-v2.js +289 -262
- package/dist/web-amd/purecloud-platform-client-v2.min.js +1 -1
- package/dist/web-cjs/bundle.js +289 -262
- package/dist/web-cjs/purecloud-platform-client-v2.js +2080 -4490
- package/dist/web-cjs/purecloud-platform-client-v2.min.js +1 -1
- package/index.d.ts +419 -394
- package/package.json +2 -2
- package/src/purecloud-platform-client-v2/ApiClient.js +198 -176
- package/src/purecloud-platform-client-v2/api/AlertingApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/AnalyticsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/ArchitectApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/AuditApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/AuthorizationApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/BillingApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/ChatApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/CoachingApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/ContentManagementApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/ConversationsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/DataExtensionsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/ExternalContactsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/FaxApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/FlowsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/GamificationApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/GeneralDataProtectionRegulationApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/GeolocationApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/GreetingsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/GroupsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/IdentityProviderApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/IntegrationsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/JourneyApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/KnowledgeApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/LanguageUnderstandingApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/LanguagesApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/LearningApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/LicenseApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/LocationsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/MessagingApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/MobileDevicesApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/NotificationsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/OAuthApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/ObjectsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/OrganizationApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/OrganizationAuthorizationApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/OutboundApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/PresenceApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/QualityApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/RecordingApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/ResponseManagementApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/RoutingApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/SCIMApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/ScriptsApi.js +4 -4
- package/src/purecloud-platform-client-v2/api/SearchApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/SpeechTextAnalyticsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/StationsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/SuggestApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/TelephonyApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/TelephonyProvidersEdgeApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/TextbotsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/TokensApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/UploadsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/UsageApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/UserRecordingsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/UsersApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/UtilitiesApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/VoicemailApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/WebChatApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/WebDeploymentsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/WebMessagingApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/WidgetsApi.js +1 -1
- package/src/purecloud-platform-client-v2/api/WorkforceManagementApi.js +7 -7
- package/src/purecloud-platform-client-v2/index.js +1 -1
- package/src/purecloud-platform-client-v2/logger.js +17 -13
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "purecloud-platform-client-v2",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "138.0.1",
|
|
4
4
|
"description": "A JavaScript library to interface with the PureCloud Platform API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/node/purecloud-platform-client-v2.js",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"url": "https://developer.mypurecloud.com"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
+
"axios": "^0.27.2",
|
|
33
34
|
"configparser": "^0.3.9",
|
|
34
|
-
"superagent": "^7.1.1",
|
|
35
35
|
"winston": "^3.6.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
import superagent from 'superagent';
|
|
1
|
+
import { default as axios } from 'axios';
|
|
3
2
|
import Configuration from './configuration.js';
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* @module purecloud-platform-client-v2/ApiClient
|
|
7
|
-
* @version
|
|
6
|
+
* @version 138.0.1
|
|
8
7
|
*/
|
|
9
8
|
class ApiClient {
|
|
10
9
|
/**
|
|
@@ -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,9 +354,7 @@ class ApiClient {
|
|
|
356
354
|
{ grant_type: 'urn:ietf:params:oauth:grant-type:saml2-bearer' },
|
|
357
355
|
{ orgName: orgName },
|
|
358
356
|
{ assertion: assertion });
|
|
359
|
-
|
|
360
|
-
request.proxy(this.proxy);
|
|
361
|
-
}
|
|
357
|
+
request.proxy = this.proxy;
|
|
362
358
|
var bodyParam = {
|
|
363
359
|
grant_type: 'urn:ietf:params:oauth:grant-type:saml2-bearer',
|
|
364
360
|
orgName: orgName,
|
|
@@ -366,54 +362,56 @@ class ApiClient {
|
|
|
366
362
|
};
|
|
367
363
|
|
|
368
364
|
// Handle response
|
|
369
|
-
request
|
|
370
|
-
|
|
371
|
-
// Log error
|
|
372
|
-
this.config.logger.log(
|
|
373
|
-
'error',
|
|
374
|
-
response.statusCode,
|
|
375
|
-
'POST',
|
|
376
|
-
`https://login.${this.config.environment}/oauth/token`,
|
|
377
|
-
request.header,
|
|
378
|
-
response.headers,
|
|
379
|
-
bodyParam,
|
|
380
|
-
response.body
|
|
381
|
-
);
|
|
382
|
-
reject(error);
|
|
383
|
-
} else {
|
|
365
|
+
request
|
|
366
|
+
.then((response) => {
|
|
384
367
|
// Logging
|
|
385
368
|
this.config.logger.log(
|
|
386
369
|
'trace',
|
|
387
|
-
response.
|
|
370
|
+
response.status,
|
|
388
371
|
'POST',
|
|
389
372
|
`https://login.${this.config.environment}/oauth/token`,
|
|
390
|
-
request.
|
|
373
|
+
request.headers,
|
|
391
374
|
response.headers,
|
|
392
375
|
bodyParam,
|
|
393
376
|
undefined
|
|
394
377
|
);
|
|
395
378
|
this.config.logger.log(
|
|
396
379
|
'debug',
|
|
397
|
-
response.
|
|
380
|
+
response.status,
|
|
398
381
|
'POST',
|
|
399
382
|
`https://login.${this.config.environment}/oauth/token`,
|
|
400
|
-
request.
|
|
383
|
+
request.headers,
|
|
401
384
|
undefined,
|
|
402
385
|
bodyParam,
|
|
403
386
|
undefined
|
|
404
387
|
);
|
|
405
388
|
|
|
406
389
|
// Get access token from response
|
|
407
|
-
var access_token = response.
|
|
390
|
+
var access_token = response.data.access_token;
|
|
408
391
|
|
|
409
392
|
this.setAccessToken(access_token);
|
|
410
|
-
this.authData.tokenExpiryTime = new Date().getTime() + response.
|
|
393
|
+
this.authData.tokenExpiryTime = new Date().getTime() + response.data['expires_in'] * 1000;
|
|
411
394
|
this.authData.tokenExpiryTimeString = new Date(this.authData.tokenExpiryTime).toUTCString();
|
|
412
395
|
|
|
413
396
|
// Return auth data
|
|
414
397
|
resolve(this.authData);
|
|
415
|
-
}
|
|
416
|
-
|
|
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
|
+
});
|
|
417
415
|
});
|
|
418
416
|
}
|
|
419
417
|
|
|
@@ -437,9 +435,7 @@ class ApiClient {
|
|
|
437
435
|
{ grant_type: 'authorization_code' },
|
|
438
436
|
{ code: authCode },
|
|
439
437
|
{ redirect_uri: redirectUri });
|
|
440
|
-
|
|
441
|
-
request.proxy(this.proxy);
|
|
442
|
-
}
|
|
438
|
+
request.proxy = this.proxy;
|
|
443
439
|
var bodyParam = {
|
|
444
440
|
grant_type: 'authorization_code',
|
|
445
441
|
code: authCode,
|
|
@@ -465,9 +461,7 @@ class ApiClient {
|
|
|
465
461
|
}
|
|
466
462
|
var encodedData = Buffer.from(clientId + ':' + clientSecret).toString('base64');
|
|
467
463
|
var request = this._formAuthRequest(encodedData, { grant_type: 'refresh_token' }, { refresh_token: refreshToken });
|
|
468
|
-
|
|
469
|
-
request.proxy(this.proxy);
|
|
470
|
-
}
|
|
464
|
+
request.proxy = this.proxy;
|
|
471
465
|
var bodyParam = {
|
|
472
466
|
grant_type: 'refresh_token',
|
|
473
467
|
refresh_token: refreshToken,
|
|
@@ -485,57 +479,59 @@ class ApiClient {
|
|
|
485
479
|
* @param {function} reject - Promise reject callback
|
|
486
480
|
*/
|
|
487
481
|
_handleCodeAuthorizationResponse(request, bodyParam, resolve, reject) {
|
|
488
|
-
request
|
|
489
|
-
|
|
490
|
-
// Log error
|
|
491
|
-
this.config.logger.log(
|
|
492
|
-
'error',
|
|
493
|
-
response.statusCode,
|
|
494
|
-
'POST',
|
|
495
|
-
`https://login.${this.config.environment}/oauth/token`,
|
|
496
|
-
request.header,
|
|
497
|
-
response.headers,
|
|
498
|
-
bodyParam,
|
|
499
|
-
response.body
|
|
500
|
-
);
|
|
501
|
-
|
|
502
|
-
reject(error);
|
|
503
|
-
} else {
|
|
482
|
+
request
|
|
483
|
+
.then((response) => {
|
|
504
484
|
// Logging
|
|
505
485
|
this.config.logger.log(
|
|
506
486
|
'trace',
|
|
507
|
-
response.
|
|
487
|
+
response.status,
|
|
508
488
|
'POST',
|
|
509
489
|
`https://login.${this.config.environment}/oauth/token`,
|
|
510
|
-
request.
|
|
490
|
+
request.headers,
|
|
511
491
|
response.headers,
|
|
512
492
|
bodyParam,
|
|
513
493
|
undefined
|
|
514
494
|
);
|
|
515
495
|
this.config.logger.log(
|
|
516
496
|
'debug',
|
|
517
|
-
response.
|
|
497
|
+
response.status,
|
|
518
498
|
'POST',
|
|
519
499
|
`https://login.${this.config.environment}/oauth/token`,
|
|
520
|
-
request.
|
|
500
|
+
request.headers,
|
|
521
501
|
undefined,
|
|
522
502
|
bodyParam,
|
|
523
503
|
undefined
|
|
524
504
|
);
|
|
525
505
|
|
|
526
506
|
// Get access token from response
|
|
527
|
-
var access_token = response.
|
|
528
|
-
var refresh_token = response.
|
|
507
|
+
var access_token = response.data.access_token;
|
|
508
|
+
var refresh_token = response.data.refresh_token;
|
|
529
509
|
|
|
530
510
|
this.setAccessToken(access_token);
|
|
531
511
|
this.authData.refreshToken = refresh_token;
|
|
532
|
-
this.authData.tokenExpiryTime = new Date().getTime() + response.
|
|
512
|
+
this.authData.tokenExpiryTime = new Date().getTime() + response.data['expires_in'] * 1000;
|
|
533
513
|
this.authData.tokenExpiryTimeString = new Date(this.authData.tokenExpiryTime).toUTCString();
|
|
534
514
|
|
|
535
515
|
// Return auth data
|
|
536
516
|
resolve(this.authData);
|
|
537
|
-
}
|
|
538
|
-
|
|
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
|
+
});
|
|
539
535
|
}
|
|
540
536
|
|
|
541
537
|
/**
|
|
@@ -543,15 +539,15 @@ class ApiClient {
|
|
|
543
539
|
* @param {string} encodedData - Base64 encoded client and clientSecret pair
|
|
544
540
|
*/
|
|
545
541
|
_formAuthRequest(encodedData) {
|
|
546
|
-
var request =
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
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
|
+
});
|
|
555
551
|
|
|
556
552
|
return request;
|
|
557
553
|
}
|
|
@@ -752,6 +748,36 @@ class ApiClient {
|
|
|
752
748
|
return param.toString();
|
|
753
749
|
}
|
|
754
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) && obj[p] !== undefined) {
|
|
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
|
+
|
|
755
781
|
/**
|
|
756
782
|
* Builds full URL by appending the given path to the base URL and replacing path parameter place-holders with parameter values.
|
|
757
783
|
* NOTE: query parameters are not handled here.
|
|
@@ -867,6 +893,9 @@ class ApiClient {
|
|
|
867
893
|
*/
|
|
868
894
|
buildCollectionParam(param, collectionFormat) {
|
|
869
895
|
if (!param) return;
|
|
896
|
+
if (!Array.isArray(param)) {
|
|
897
|
+
param = [param]
|
|
898
|
+
}
|
|
870
899
|
|
|
871
900
|
switch (collectionFormat) {
|
|
872
901
|
case 'csv':
|
|
@@ -878,7 +907,7 @@ class ApiClient {
|
|
|
878
907
|
case 'pipes':
|
|
879
908
|
return param.map(this.paramToString).join('|');
|
|
880
909
|
case 'multi':
|
|
881
|
-
// return the array directly as
|
|
910
|
+
// return the array directly as axios will handle it as expected
|
|
882
911
|
return param.map(this.paramToString);
|
|
883
912
|
default:
|
|
884
913
|
throw new Error(`Unknown collection format: ${collectionFormat}`);
|
|
@@ -887,7 +916,7 @@ class ApiClient {
|
|
|
887
916
|
|
|
888
917
|
/**
|
|
889
918
|
* Applies authentication headers to the request.
|
|
890
|
-
* @param {Object} request The request object
|
|
919
|
+
* @param {Object} request The axios request config object.
|
|
891
920
|
* @param {Array.<String>} authNames An array of authentication method names.
|
|
892
921
|
*/
|
|
893
922
|
applyAuthToRequest(request, authNames) {
|
|
@@ -896,7 +925,10 @@ class ApiClient {
|
|
|
896
925
|
switch (auth.type) {
|
|
897
926
|
case 'basic':
|
|
898
927
|
if (auth.username || auth.password) {
|
|
899
|
-
request.auth
|
|
928
|
+
request.auth = {
|
|
929
|
+
username: auth.username || '',
|
|
930
|
+
password: auth.password || ''
|
|
931
|
+
};
|
|
900
932
|
}
|
|
901
933
|
break;
|
|
902
934
|
case 'apiKey':
|
|
@@ -908,15 +940,15 @@ class ApiClient {
|
|
|
908
940
|
data[auth.name] = auth.apiKey;
|
|
909
941
|
}
|
|
910
942
|
if (auth['in'] === 'header') {
|
|
911
|
-
request.
|
|
943
|
+
request.headers = this.addHeaders(request.headers, data);
|
|
912
944
|
} else {
|
|
913
|
-
request.
|
|
945
|
+
request.params = this.serialize(data);
|
|
914
946
|
}
|
|
915
947
|
}
|
|
916
948
|
break;
|
|
917
949
|
case 'oauth2':
|
|
918
950
|
if (auth.accessToken) {
|
|
919
|
-
request.
|
|
951
|
+
request.headers = this.addHeaders(request.headers, {'Authorization': `Bearer ${auth.accessToken}`});
|
|
920
952
|
}
|
|
921
953
|
break;
|
|
922
954
|
default:
|
|
@@ -945,86 +977,71 @@ class ApiClient {
|
|
|
945
977
|
sendRequest(this);
|
|
946
978
|
function sendRequest(that) {
|
|
947
979
|
var url = that.buildUrl(path, pathParams);
|
|
948
|
-
var request =
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
980
|
+
var request = {
|
|
981
|
+
method: httpMethod,
|
|
982
|
+
url: url,
|
|
983
|
+
proxy: that.proxy,
|
|
984
|
+
timeout: that.timeout,
|
|
985
|
+
params: that.serialize(queryParams)
|
|
986
|
+
};
|
|
953
987
|
|
|
954
988
|
// apply authentications
|
|
955
989
|
that.applyAuthToRequest(request, authNames);
|
|
956
990
|
|
|
957
|
-
// set query parameters
|
|
958
|
-
request.query(that.normalizeParams(queryParams));
|
|
959
|
-
|
|
960
991
|
// set header parameters
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
// set request timeout
|
|
965
|
-
request.timeout(that.timeout);
|
|
992
|
+
const defaultHeaders = that.defaultHeaders;
|
|
993
|
+
const normalizedHeaderParams = that.normalizeParams(headerParams);
|
|
994
|
+
request.headers = that.addHeaders(request.headers, defaultHeaders, normalizedHeaderParams);
|
|
966
995
|
|
|
967
996
|
var contentType = that.jsonPreferredMime(contentTypes);
|
|
968
997
|
if (contentType) {
|
|
969
|
-
request.
|
|
970
|
-
} else if (!request.
|
|
971
|
-
request.
|
|
998
|
+
request.headers['Content-Type'] = contentType;
|
|
999
|
+
} else if (!request.headers['Content-Type']) {
|
|
1000
|
+
request.headers['Content-Type'] = 'application/json';
|
|
972
1001
|
}
|
|
973
1002
|
|
|
974
1003
|
if (contentType === 'application/x-www-form-urlencoded') {
|
|
975
|
-
request.
|
|
1004
|
+
request.data = that.normalizeParams(formParams);
|
|
976
1005
|
} else if (contentType == 'multipart/form-data') {
|
|
977
1006
|
var _formParams = that.normalizeParams(formParams);
|
|
978
1007
|
for (var key in _formParams) {
|
|
979
1008
|
if (_formParams.hasOwnProperty(key)) {
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
request.field(key, _formParams[key]);
|
|
985
|
-
}
|
|
1009
|
+
// Looks like axios handles files and forms the same way
|
|
1010
|
+
var formData = new FormData();
|
|
1011
|
+
formData.set(key, _formParams[key]);
|
|
1012
|
+
request.data = formData;
|
|
986
1013
|
}
|
|
987
1014
|
}
|
|
988
1015
|
} else if (bodyParam) {
|
|
989
|
-
request.
|
|
1016
|
+
request.data = bodyParam;
|
|
990
1017
|
}
|
|
991
1018
|
|
|
992
1019
|
var accept = that.jsonPreferredMime(accepts);
|
|
993
1020
|
if (accept) {
|
|
994
|
-
request.accept
|
|
1021
|
+
request.headers['Accept'] = accept;
|
|
995
1022
|
}
|
|
996
|
-
request
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
error: error
|
|
1019
|
-
} : response.body ? response.body : response.text;
|
|
1020
|
-
|
|
1021
|
-
// Debug logging
|
|
1022
|
-
that.config.logger.log('trace', response.statusCode, httpMethod, url, request.header, response.headers, bodyParam, undefined);
|
|
1023
|
-
that.config.logger.log('debug', response.statusCode, httpMethod, url, request.header, undefined, bodyParam, undefined);
|
|
1024
|
-
|
|
1025
|
-
// Resolve promise
|
|
1026
|
-
if (error) {
|
|
1027
|
-
if (data.status == 401 && that.config.refresh_access_token && that.authData.refreshToken !== "") {
|
|
1023
|
+
axios.request(request)
|
|
1024
|
+
.then((response) => {
|
|
1025
|
+
// Build response object
|
|
1026
|
+
var data = (that.returnExtended === true) ? {
|
|
1027
|
+
status: response.status,
|
|
1028
|
+
statusText: response.statusText,
|
|
1029
|
+
headers: response.headers,
|
|
1030
|
+
body: response.data,
|
|
1031
|
+
text: response.text,
|
|
1032
|
+
error: null
|
|
1033
|
+
} : response.data ? response.data : response.text;
|
|
1034
|
+
|
|
1035
|
+
// Debug logging
|
|
1036
|
+
that.config.logger.log('trace', response.status, httpMethod, url, request.headers, response.headers, bodyParam, undefined);
|
|
1037
|
+
that.config.logger.log('debug', response.status, httpMethod, url, request.headers, undefined, bodyParam, undefined);
|
|
1038
|
+
|
|
1039
|
+
// Resolve promise
|
|
1040
|
+
resolve(data);
|
|
1041
|
+
})
|
|
1042
|
+
.catch((error) => {
|
|
1043
|
+
var data = error
|
|
1044
|
+
if (error.response && error.response.status == 401 && that.config.refresh_access_token && that.authData.refreshToken !== "") {
|
|
1028
1045
|
that._handleExpiredAccessToken()
|
|
1029
1046
|
.then(() => {
|
|
1030
1047
|
sendRequest(that);
|
|
@@ -1032,24 +1049,29 @@ class ApiClient {
|
|
|
1032
1049
|
.catch((err) => {
|
|
1033
1050
|
reject(err);
|
|
1034
1051
|
});
|
|
1035
|
-
} else {
|
|
1052
|
+
} else if (error.response) {
|
|
1036
1053
|
// Log error
|
|
1037
1054
|
that.config.logger.log(
|
|
1038
1055
|
'error',
|
|
1039
|
-
response.
|
|
1056
|
+
error.response.status,
|
|
1040
1057
|
httpMethod,
|
|
1041
1058
|
url,
|
|
1042
|
-
request.
|
|
1043
|
-
response.headers,
|
|
1059
|
+
request.headers,
|
|
1060
|
+
error.response.headers,
|
|
1044
1061
|
bodyParam,
|
|
1045
|
-
response.
|
|
1062
|
+
error.response.data
|
|
1046
1063
|
);
|
|
1047
|
-
|
|
1064
|
+
data = (that.returnExtended === true) ? {
|
|
1065
|
+
status: error.response.status,
|
|
1066
|
+
statusText: error.response.statusText,
|
|
1067
|
+
headers: error.response.headers,
|
|
1068
|
+
body: error.response.data,
|
|
1069
|
+
text: error.response.text,
|
|
1070
|
+
error: error
|
|
1071
|
+
} : error.response.data ? error.response.data : error.response.text;
|
|
1048
1072
|
}
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
}
|
|
1052
|
-
});
|
|
1073
|
+
reject(data);
|
|
1074
|
+
});
|
|
1053
1075
|
}
|
|
1054
1076
|
});
|
|
1055
1077
|
}
|