purecloud-platform-client-v2 137.0.1 → 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 +277 -253
- package/dist/web-amd/purecloud-platform-client-v2.js +277 -253
- package/dist/web-amd/purecloud-platform-client-v2.min.js +1 -1
- package/dist/web-cjs/bundle.js +277 -253
- package/dist/web-cjs/purecloud-platform-client-v2.js +2067 -4480
- package/dist/web-cjs/purecloud-platform-client-v2.min.js +1 -1
- package/index.d.ts +0 -1
- package/package.json +2 -2
- package/src/purecloud-platform-client-v2/ApiClient.js +195 -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 +1 -1
- 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 +1 -1
- package/src/purecloud-platform-client-v2/index.js +1 -1
- package/src/purecloud-platform-client-v2/logger.js +17 -13
package/index.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ declare module 'purecloud-platform-client-v2' {
|
|
|
7
7
|
declare class ApiClientClass {
|
|
8
8
|
instance: ApiClientClass;
|
|
9
9
|
proxy: ProxyConfig;
|
|
10
|
-
superagent: any;
|
|
11
10
|
config: Configuration;
|
|
12
11
|
|
|
13
12
|
callApi(path: string, httpMethod: string, pathParams: { [key: string]: string; }, queryParams: { [key: string]: object; }, headerParams: { [key: string]: object; }, formParams: { [key: string]: object; }, bodyParam: any, authNames: Array<string>, contentTypes: Array<string>, accepts: Array<string>): Promise<any>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "purecloud-platform-client-v2",
|
|
3
|
-
"version": "137.0
|
|
3
|
+
"version": "137.1.0",
|
|
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 137.0
|
|
6
|
+
* @version 137.1.0
|
|
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)) {
|
|
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.
|
|
@@ -878,7 +904,7 @@ class ApiClient {
|
|
|
878
904
|
case 'pipes':
|
|
879
905
|
return param.map(this.paramToString).join('|');
|
|
880
906
|
case 'multi':
|
|
881
|
-
// return the array directly as
|
|
907
|
+
// return the array directly as axios will handle it as expected
|
|
882
908
|
return param.map(this.paramToString);
|
|
883
909
|
default:
|
|
884
910
|
throw new Error(`Unknown collection format: ${collectionFormat}`);
|
|
@@ -887,7 +913,7 @@ class ApiClient {
|
|
|
887
913
|
|
|
888
914
|
/**
|
|
889
915
|
* Applies authentication headers to the request.
|
|
890
|
-
* @param {Object} request The request object
|
|
916
|
+
* @param {Object} request The axios request config object.
|
|
891
917
|
* @param {Array.<String>} authNames An array of authentication method names.
|
|
892
918
|
*/
|
|
893
919
|
applyAuthToRequest(request, authNames) {
|
|
@@ -896,7 +922,10 @@ class ApiClient {
|
|
|
896
922
|
switch (auth.type) {
|
|
897
923
|
case 'basic':
|
|
898
924
|
if (auth.username || auth.password) {
|
|
899
|
-
request.auth
|
|
925
|
+
request.auth = {
|
|
926
|
+
username: auth.username || '',
|
|
927
|
+
password: auth.password || ''
|
|
928
|
+
};
|
|
900
929
|
}
|
|
901
930
|
break;
|
|
902
931
|
case 'apiKey':
|
|
@@ -908,15 +937,15 @@ class ApiClient {
|
|
|
908
937
|
data[auth.name] = auth.apiKey;
|
|
909
938
|
}
|
|
910
939
|
if (auth['in'] === 'header') {
|
|
911
|
-
request.
|
|
940
|
+
request.headers = this.addHeaders(request.headers, data);
|
|
912
941
|
} else {
|
|
913
|
-
request.
|
|
942
|
+
request.params = this.serialize(data);
|
|
914
943
|
}
|
|
915
944
|
}
|
|
916
945
|
break;
|
|
917
946
|
case 'oauth2':
|
|
918
947
|
if (auth.accessToken) {
|
|
919
|
-
request.
|
|
948
|
+
request.headers = this.addHeaders(request.headers, {'Authorization': `Bearer ${auth.accessToken}`});
|
|
920
949
|
}
|
|
921
950
|
break;
|
|
922
951
|
default:
|
|
@@ -945,86 +974,71 @@ class ApiClient {
|
|
|
945
974
|
sendRequest(this);
|
|
946
975
|
function sendRequest(that) {
|
|
947
976
|
var url = that.buildUrl(path, pathParams);
|
|
948
|
-
var request =
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
977
|
+
var request = {
|
|
978
|
+
method: httpMethod,
|
|
979
|
+
url: url,
|
|
980
|
+
proxy: that.proxy,
|
|
981
|
+
timeout: that.timeout,
|
|
982
|
+
params: that.serialize(queryParams)
|
|
983
|
+
};
|
|
953
984
|
|
|
954
985
|
// apply authentications
|
|
955
986
|
that.applyAuthToRequest(request, authNames);
|
|
956
987
|
|
|
957
|
-
// set query parameters
|
|
958
|
-
request.query(that.normalizeParams(queryParams));
|
|
959
|
-
|
|
960
988
|
// set header parameters
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
// set request timeout
|
|
965
|
-
request.timeout(that.timeout);
|
|
989
|
+
const defaultHeaders = that.defaultHeaders;
|
|
990
|
+
const normalizedHeaderParams = that.normalizeParams(headerParams);
|
|
991
|
+
request.headers = that.addHeaders(request.headers, defaultHeaders, normalizedHeaderParams);
|
|
966
992
|
|
|
967
993
|
var contentType = that.jsonPreferredMime(contentTypes);
|
|
968
994
|
if (contentType) {
|
|
969
|
-
request.
|
|
970
|
-
} else if (!request.
|
|
971
|
-
request.
|
|
995
|
+
request.headers['Content-Type'] = contentType;
|
|
996
|
+
} else if (!request.headers['Content-Type']) {
|
|
997
|
+
request.headers['Content-Type'] = 'application/json';
|
|
972
998
|
}
|
|
973
999
|
|
|
974
1000
|
if (contentType === 'application/x-www-form-urlencoded') {
|
|
975
|
-
request.
|
|
1001
|
+
request.data = that.normalizeParams(formParams);
|
|
976
1002
|
} else if (contentType == 'multipart/form-data') {
|
|
977
1003
|
var _formParams = that.normalizeParams(formParams);
|
|
978
1004
|
for (var key in _formParams) {
|
|
979
1005
|
if (_formParams.hasOwnProperty(key)) {
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
request.field(key, _formParams[key]);
|
|
985
|
-
}
|
|
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;
|
|
986
1010
|
}
|
|
987
1011
|
}
|
|
988
1012
|
} else if (bodyParam) {
|
|
989
|
-
request.
|
|
1013
|
+
request.data = bodyParam;
|
|
990
1014
|
}
|
|
991
1015
|
|
|
992
1016
|
var accept = that.jsonPreferredMime(accepts);
|
|
993
1017
|
if (accept) {
|
|
994
|
-
request.accept
|
|
1018
|
+
request.headers['Accept'] = accept;
|
|
995
1019
|
}
|
|
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 !== "") {
|
|
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 !== "") {
|
|
1028
1042
|
that._handleExpiredAccessToken()
|
|
1029
1043
|
.then(() => {
|
|
1030
1044
|
sendRequest(that);
|
|
@@ -1032,24 +1046,29 @@ class ApiClient {
|
|
|
1032
1046
|
.catch((err) => {
|
|
1033
1047
|
reject(err);
|
|
1034
1048
|
});
|
|
1035
|
-
} else {
|
|
1049
|
+
} else if (error.response) {
|
|
1036
1050
|
// Log error
|
|
1037
1051
|
that.config.logger.log(
|
|
1038
1052
|
'error',
|
|
1039
|
-
response.
|
|
1053
|
+
error.response.status,
|
|
1040
1054
|
httpMethod,
|
|
1041
1055
|
url,
|
|
1042
|
-
request.
|
|
1043
|
-
response.headers,
|
|
1056
|
+
request.headers,
|
|
1057
|
+
error.response.headers,
|
|
1044
1058
|
bodyParam,
|
|
1045
|
-
response.
|
|
1059
|
+
error.response.data
|
|
1046
1060
|
);
|
|
1047
|
-
|
|
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;
|
|
1048
1069
|
}
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
}
|
|
1052
|
-
});
|
|
1070
|
+
reject(data);
|
|
1071
|
+
});
|
|
1053
1072
|
}
|
|
1054
1073
|
});
|
|
1055
1074
|
}
|