@nutanix-scratch/multidomain-js-client 4.2.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.
Files changed (137) hide show
  1. package/LICENSE.txt +202 -0
  2. package/README.md +224 -0
  3. package/dist/Ntnx-Multidomain-js-client-prod.js +1 -0
  4. package/dist/Ntnx-Multidomain-js-client.js +713 -0
  5. package/dist/es/ApiClient.d.ts +194 -0
  6. package/dist/es/ApiClient.js +1449 -0
  7. package/dist/es/Paginable.d.ts +95 -0
  8. package/dist/es/Paginable.js +248 -0
  9. package/dist/es/apis/externalrepositories-endpoints.d.ts +84 -0
  10. package/dist/es/apis/externalrepositories-endpoints.js +267 -0
  11. package/dist/es/index.d.ts +60 -0
  12. package/dist/es/index.js +236 -0
  13. package/dist/es/models/common/v1/config/FQDN.d.ts +47 -0
  14. package/dist/es/models/common/v1/config/FQDN.js +238 -0
  15. package/dist/es/models/common/v1/config/Flag.d.ts +58 -0
  16. package/dist/es/models/common/v1/config/Flag.js +278 -0
  17. package/dist/es/models/common/v1/config/IPAddressOrFQDN.d.ts +70 -0
  18. package/dist/es/models/common/v1/config/IPAddressOrFQDN.js +313 -0
  19. package/dist/es/models/common/v1/config/IPv4Address.d.ts +70 -0
  20. package/dist/es/models/common/v1/config/IPv4Address.js +288 -0
  21. package/dist/es/models/common/v1/config/IPv6Address.d.ts +70 -0
  22. package/dist/es/models/common/v1/config/IPv6Address.js +288 -0
  23. package/dist/es/models/common/v1/config/KVPair.d.ts +65 -0
  24. package/dist/es/models/common/v1/config/KVPair.js +333 -0
  25. package/dist/es/models/common/v1/config/MapOfStringWrapper.d.ts +53 -0
  26. package/dist/es/models/common/v1/config/MapOfStringWrapper.js +236 -0
  27. package/dist/es/models/common/v1/config/Message.d.ts +79 -0
  28. package/dist/es/models/common/v1/config/Message.js +341 -0
  29. package/dist/es/models/common/v1/config/MessageSeverity.d.ts +19 -0
  30. package/dist/es/models/common/v1/config/MessageSeverity.js +89 -0
  31. package/dist/es/models/common/v1/config/TenantAwareModel.d.ts +47 -0
  32. package/dist/es/models/common/v1/config/TenantAwareModel.js +235 -0
  33. package/dist/es/models/common/v1/response/ApiLink.d.ts +58 -0
  34. package/dist/es/models/common/v1/response/ApiLink.js +271 -0
  35. package/dist/es/models/common/v1/response/ApiResponseMetadata.d.ts +95 -0
  36. package/dist/es/models/common/v1/response/ApiResponseMetadata.js +419 -0
  37. package/dist/es/models/common/v1/response/ExternalizableAbstractModel.d.ts +34 -0
  38. package/dist/es/models/common/v1/response/ExternalizableAbstractModel.js +262 -0
  39. package/dist/es/models/multidomain/v4/config/CreateExternalRepositoryApiResponse.d.ts +58 -0
  40. package/dist/es/models/multidomain/v4/config/CreateExternalRepositoryApiResponse.js +288 -0
  41. package/dist/es/models/multidomain/v4/config/DeleteExternalRepositoryApiResponse.d.ts +58 -0
  42. package/dist/es/models/multidomain/v4/config/DeleteExternalRepositoryApiResponse.js +288 -0
  43. package/dist/es/models/multidomain/v4/config/ExternalRepository.d.ts +59 -0
  44. package/dist/es/models/multidomain/v4/config/ExternalRepository.js +328 -0
  45. package/dist/es/models/multidomain/v4/config/GetExternalRepositoryApiResponse.d.ts +58 -0
  46. package/dist/es/models/multidomain/v4/config/GetExternalRepositoryApiResponse.js +288 -0
  47. package/dist/es/models/multidomain/v4/config/ListExternalRepositoriesApiResponse.d.ts +58 -0
  48. package/dist/es/models/multidomain/v4/config/ListExternalRepositoriesApiResponse.js +310 -0
  49. package/dist/es/models/multidomain/v4/config/NFSServerAddress.d.ts +71 -0
  50. package/dist/es/models/multidomain/v4/config/NFSServerAddress.js +279 -0
  51. package/dist/es/models/multidomain/v4/config/NfsRepository.d.ts +73 -0
  52. package/dist/es/models/multidomain/v4/config/NfsRepository.js +299 -0
  53. package/dist/es/models/multidomain/v4/config/UpdateExternalRepositoryApiResponse.d.ts +58 -0
  54. package/dist/es/models/multidomain/v4/config/UpdateExternalRepositoryApiResponse.js +288 -0
  55. package/dist/es/models/multidomain/v4/error/AppMessage.d.ts +107 -0
  56. package/dist/es/models/multidomain/v4/error/AppMessage.js +415 -0
  57. package/dist/es/models/multidomain/v4/error/ErrorResponse.d.ts +47 -0
  58. package/dist/es/models/multidomain/v4/error/ErrorResponse.js +277 -0
  59. package/dist/es/models/multidomain/v4/error/SchemaValidationError.d.ts +92 -0
  60. package/dist/es/models/multidomain/v4/error/SchemaValidationError.js +389 -0
  61. package/dist/es/models/multidomain/v4/error/SchemaValidationErrorMessage.d.ts +69 -0
  62. package/dist/es/models/multidomain/v4/error/SchemaValidationErrorMessage.js +307 -0
  63. package/dist/es/models/prism/v4/config/TaskReference.d.ts +47 -0
  64. package/dist/es/models/prism/v4/config/TaskReference.js +242 -0
  65. package/dist/es/models/validation/ValidationError.d.ts +13 -0
  66. package/dist/es/models/validation/ValidationError.js +44 -0
  67. package/dist/es/models/validation/ValidationScopes.d.ts +9 -0
  68. package/dist/es/models/validation/ValidationScopes.js +38 -0
  69. package/dist/es/utils/ValidationUtils.d.ts +13 -0
  70. package/dist/es/utils/ValidationUtils.js +55 -0
  71. package/dist/lib/ApiClient.d.ts +194 -0
  72. package/dist/lib/ApiClient.js +1449 -0
  73. package/dist/lib/Paginable.d.ts +95 -0
  74. package/dist/lib/Paginable.js +248 -0
  75. package/dist/lib/apis/externalrepositories-endpoints.d.ts +84 -0
  76. package/dist/lib/apis/externalrepositories-endpoints.js +267 -0
  77. package/dist/lib/index.d.ts +60 -0
  78. package/dist/lib/index.js +236 -0
  79. package/dist/lib/models/common/v1/config/FQDN.d.ts +47 -0
  80. package/dist/lib/models/common/v1/config/FQDN.js +238 -0
  81. package/dist/lib/models/common/v1/config/Flag.d.ts +58 -0
  82. package/dist/lib/models/common/v1/config/Flag.js +278 -0
  83. package/dist/lib/models/common/v1/config/IPAddressOrFQDN.d.ts +70 -0
  84. package/dist/lib/models/common/v1/config/IPAddressOrFQDN.js +313 -0
  85. package/dist/lib/models/common/v1/config/IPv4Address.d.ts +70 -0
  86. package/dist/lib/models/common/v1/config/IPv4Address.js +288 -0
  87. package/dist/lib/models/common/v1/config/IPv6Address.d.ts +70 -0
  88. package/dist/lib/models/common/v1/config/IPv6Address.js +288 -0
  89. package/dist/lib/models/common/v1/config/KVPair.d.ts +65 -0
  90. package/dist/lib/models/common/v1/config/KVPair.js +333 -0
  91. package/dist/lib/models/common/v1/config/MapOfStringWrapper.d.ts +53 -0
  92. package/dist/lib/models/common/v1/config/MapOfStringWrapper.js +236 -0
  93. package/dist/lib/models/common/v1/config/Message.d.ts +79 -0
  94. package/dist/lib/models/common/v1/config/Message.js +341 -0
  95. package/dist/lib/models/common/v1/config/MessageSeverity.d.ts +19 -0
  96. package/dist/lib/models/common/v1/config/MessageSeverity.js +89 -0
  97. package/dist/lib/models/common/v1/config/TenantAwareModel.d.ts +47 -0
  98. package/dist/lib/models/common/v1/config/TenantAwareModel.js +235 -0
  99. package/dist/lib/models/common/v1/response/ApiLink.d.ts +58 -0
  100. package/dist/lib/models/common/v1/response/ApiLink.js +271 -0
  101. package/dist/lib/models/common/v1/response/ApiResponseMetadata.d.ts +95 -0
  102. package/dist/lib/models/common/v1/response/ApiResponseMetadata.js +419 -0
  103. package/dist/lib/models/common/v1/response/ExternalizableAbstractModel.d.ts +34 -0
  104. package/dist/lib/models/common/v1/response/ExternalizableAbstractModel.js +262 -0
  105. package/dist/lib/models/multidomain/v4/config/CreateExternalRepositoryApiResponse.d.ts +58 -0
  106. package/dist/lib/models/multidomain/v4/config/CreateExternalRepositoryApiResponse.js +288 -0
  107. package/dist/lib/models/multidomain/v4/config/DeleteExternalRepositoryApiResponse.d.ts +58 -0
  108. package/dist/lib/models/multidomain/v4/config/DeleteExternalRepositoryApiResponse.js +288 -0
  109. package/dist/lib/models/multidomain/v4/config/ExternalRepository.d.ts +59 -0
  110. package/dist/lib/models/multidomain/v4/config/ExternalRepository.js +328 -0
  111. package/dist/lib/models/multidomain/v4/config/GetExternalRepositoryApiResponse.d.ts +58 -0
  112. package/dist/lib/models/multidomain/v4/config/GetExternalRepositoryApiResponse.js +288 -0
  113. package/dist/lib/models/multidomain/v4/config/ListExternalRepositoriesApiResponse.d.ts +58 -0
  114. package/dist/lib/models/multidomain/v4/config/ListExternalRepositoriesApiResponse.js +310 -0
  115. package/dist/lib/models/multidomain/v4/config/NFSServerAddress.d.ts +71 -0
  116. package/dist/lib/models/multidomain/v4/config/NFSServerAddress.js +279 -0
  117. package/dist/lib/models/multidomain/v4/config/NfsRepository.d.ts +73 -0
  118. package/dist/lib/models/multidomain/v4/config/NfsRepository.js +299 -0
  119. package/dist/lib/models/multidomain/v4/config/UpdateExternalRepositoryApiResponse.d.ts +58 -0
  120. package/dist/lib/models/multidomain/v4/config/UpdateExternalRepositoryApiResponse.js +288 -0
  121. package/dist/lib/models/multidomain/v4/error/AppMessage.d.ts +107 -0
  122. package/dist/lib/models/multidomain/v4/error/AppMessage.js +415 -0
  123. package/dist/lib/models/multidomain/v4/error/ErrorResponse.d.ts +47 -0
  124. package/dist/lib/models/multidomain/v4/error/ErrorResponse.js +277 -0
  125. package/dist/lib/models/multidomain/v4/error/SchemaValidationError.d.ts +92 -0
  126. package/dist/lib/models/multidomain/v4/error/SchemaValidationError.js +389 -0
  127. package/dist/lib/models/multidomain/v4/error/SchemaValidationErrorMessage.d.ts +69 -0
  128. package/dist/lib/models/multidomain/v4/error/SchemaValidationErrorMessage.js +307 -0
  129. package/dist/lib/models/prism/v4/config/TaskReference.d.ts +47 -0
  130. package/dist/lib/models/prism/v4/config/TaskReference.js +242 -0
  131. package/dist/lib/models/validation/ValidationError.d.ts +13 -0
  132. package/dist/lib/models/validation/ValidationError.js +44 -0
  133. package/dist/lib/models/validation/ValidationScopes.d.ts +9 -0
  134. package/dist/lib/models/validation/ValidationScopes.js +38 -0
  135. package/dist/lib/utils/ValidationUtils.d.ts +13 -0
  136. package/dist/lib/utils/ValidationUtils.js +55 -0
  137. package/package.json +53 -0
@@ -0,0 +1,1449 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ApiClient = void 0;
7
+ var _superagent = _interopRequireDefault(require("superagent"));
8
+ var _Paginable = _interopRequireDefault(require("./Paginable"));
9
+ var _uuid = require("uuid");
10
+ var _superagentRetryDelay = _interopRequireDefault(require("superagent-retry-delay"));
11
+ var _https = _interopRequireDefault(require("https"));
12
+ var _fs = _interopRequireDefault(require("fs"));
13
+ var _path = _interopRequireDefault(require("path"));
14
+ var _buffer = require("buffer");
15
+ var _ApiResponseMetadata = _interopRequireDefault(require("./models/common/v1/response/ApiResponseMetadata"));
16
+ var _Flag = _interopRequireDefault(require("./models/common/v1/config/Flag"));
17
+ var _ApiClient;
18
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
20
+ function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
21
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
22
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
23
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
24
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); } /*
25
+ * Nutanix Multidomain Versioned APIs
26
+ *
27
+ * OpenAPI spec version: 4.2.1
28
+ *
29
+ * NOTE: This class is auto generated by the Open API Dev Platform.
30
+ *
31
+ * Open API Dev Platform Codegen version: 17.5.0.10128-RELEASE
32
+ *
33
+ * Do not edit the class manually.
34
+ *
35
+ */
36
+ (0, _superagentRetryDelay.default)(_superagent.default);
37
+ /**
38
+ * Manages low level client-server communications, parameter marshalling, etc. There should not be any need for an
39
+ * application to use this class directly - the *Api and model classes provide the public API for the service. The
40
+ * contents of this file should be regarded as internal but are documented for completeness.
41
+ * @module ApiClient
42
+ * @version 4.2.1
43
+ */
44
+ var _protocol = /*#__PURE__*/new WeakMap();
45
+ var _cookie = /*#__PURE__*/new WeakMap();
46
+ var _logger = /*#__PURE__*/new WeakMap();
47
+ var _verifySslFlag = /*#__PURE__*/new WeakMap();
48
+ var _defaultConnectTimeout = /*#__PURE__*/new WeakMap();
49
+ var _defaultReadTimeout = /*#__PURE__*/new WeakMap();
50
+ var _defaultMaxTimeout = /*#__PURE__*/new WeakMap();
51
+ var _host = /*#__PURE__*/new WeakMap();
52
+ var _negotiationCompleted = /*#__PURE__*/new WeakMap();
53
+ var _negotiatedVersion = /*#__PURE__*/new WeakMap();
54
+ var _LOG_LEVEL = /*#__PURE__*/new WeakMap();
55
+ var _ApiClient_brand = /*#__PURE__*/new WeakSet();
56
+ class ApiClient {
57
+ /**
58
+ * @alias module:ApiClient
59
+ * @class
60
+ */
61
+ constructor() {
62
+ /*
63
+ * Checks whether the given content type represents JSON.<br>
64
+ * JSON content type examples:<br>
65
+ * <ul>
66
+ * <li>application/json</li>
67
+ * <li>application/json; charset=UTF8</li>
68
+ * <li>APPLICATION/JSON</li>
69
+ * </ul>
70
+ * @param {String} contentType The MIME content type to check.
71
+ * @returns {Boolean} <code>true</code> if <code>contentType</code> represents JSON, otherwise <code>false</code>.
72
+ */
73
+ _classPrivateMethodInitSpec(this, _ApiClient_brand);
74
+ // PRIVATE VARIABLES
75
+ _classPrivateFieldInitSpec(this, _protocol, void 0);
76
+ _classPrivateFieldInitSpec(this, _cookie, void 0);
77
+ _classPrivateFieldInitSpec(this, _logger, void 0);
78
+ _classPrivateFieldInitSpec(this, _verifySslFlag, void 0);
79
+ _classPrivateFieldInitSpec(this, _defaultConnectTimeout, void 0);
80
+ _classPrivateFieldInitSpec(this, _defaultReadTimeout, void 0);
81
+ _classPrivateFieldInitSpec(this, _defaultMaxTimeout, void 0);
82
+ _classPrivateFieldInitSpec(this, _host, void 0);
83
+ _classPrivateFieldInitSpec(this, _negotiationCompleted, void 0);
84
+ _classPrivateFieldInitSpec(this, _negotiatedVersion, void 0);
85
+ _classPrivateFieldInitSpec(this, _LOG_LEVEL, void 0);
86
+ _classPrivateFieldSet(_LOG_LEVEL, this, Object.freeze({
87
+ DEBUG: {
88
+ key: "DEBUG",
89
+ value: Symbol(0)
90
+ },
91
+ INFO: {
92
+ key: "INFO",
93
+ value: Symbol(1)
94
+ },
95
+ WARN: {
96
+ key: "WARN",
97
+ value: Symbol(2)
98
+ },
99
+ ERROR: {
100
+ key: "ERROR",
101
+ value: Symbol(3)
102
+ }
103
+ }));
104
+
105
+ /**
106
+ * URI scheme for connecting to the cluster (HTTP or HTTPS using SSL/TLS)
107
+ * @type {String}
108
+ * @default https
109
+ */
110
+ this.scheme = 'https';
111
+
112
+ /**
113
+ * The hostname of the URL against which to resolve every API call's (relative) path.
114
+ * @type {String}
115
+ * @default localhost
116
+ */
117
+ _classPrivateFieldSet(_host, this, typeof self === 'undefined' ? 'localhost' : self.location.hostname);
118
+
119
+ /**
120
+ * The port of the base URL.
121
+ * @type {String}
122
+ * @default 9440
123
+ */
124
+ this.port = typeof self === 'undefined' ? '9440' : self.location.port;
125
+
126
+ /**
127
+ * The authentication methods to be included for all API calls.
128
+ * @type {Array.<String>}
129
+ */
130
+ this.authentications = {
131
+ 'apiKeyAuthScheme': {
132
+ type: 'apiKey',
133
+ 'in': 'header',
134
+ name: 'X-ntnx-api-key'
135
+ },
136
+ 'basicAuthScheme': {
137
+ type: 'basic'
138
+ }
139
+ };
140
+
141
+ /**
142
+ * The default HTTP headers to be included for all API calls.
143
+ * @type {Array.<String>}
144
+ * @default {}
145
+ */
146
+ this.defaultHeaders = {};
147
+ _classPrivateFieldSet(_defaultConnectTimeout, this, 30000);
148
+ _classPrivateFieldSet(_defaultReadTimeout, this, 30000);
149
+ _classPrivateFieldSet(_defaultMaxTimeout, this, 10800000);
150
+
151
+ /**
152
+ * The default HTTP read timeout in milliseconds for all API calls.
153
+ * @type {Number}
154
+ * @default 30000
155
+ */
156
+ this.readTimeout = _classPrivateFieldGet(_defaultReadTimeout, this);
157
+
158
+ /**
159
+ * The default HTTP connection timeout in milliseconds for all API calls.
160
+ * @type {Number}
161
+ * @default 30000
162
+ */
163
+ this.connectTimeout = _classPrivateFieldGet(_defaultConnectTimeout, this);
164
+
165
+ /**
166
+ * If set to false an additional timestamp parameter is added to all API GET calls to
167
+ * prevent browser caching
168
+ * @type {Boolean}
169
+ * @default true
170
+ */
171
+ this.cache = true;
172
+
173
+ /**
174
+ * Saved Cookies
175
+ * @default null
176
+ */
177
+ _classPrivateFieldSet(_cookie, this, null);
178
+
179
+ /**
180
+ * The maximum number of redirects to be followed for all API calls.
181
+ * @type {Number}
182
+ * @default 1
183
+ */
184
+ this.maxRedirects = 1;
185
+
186
+ /**
187
+ * The maximum number of retry attempts to be made by the client
188
+ * in case of server error.
189
+ * @type {Number}
190
+ * @default 5
191
+ */
192
+ this.maxRetryAttempts = 5;
193
+
194
+ /**
195
+ * The delay period (in milliseconds) between two consecutive retry attempts
196
+ * @type {Number}
197
+ * @default 3000
198
+ */
199
+ this.retryInterval = 3000;
200
+
201
+ /**
202
+ * A boolean value that indicates whether cross-site Access-Control requests should be made using auth credentials.
203
+ * @type {Boolean}
204
+ * @default false
205
+ */
206
+ this.withCredentials = false;
207
+ if (typeof self === 'undefined') {
208
+ this.agent = new _superagent.default.agent();
209
+ }
210
+
211
+ /**
212
+ * Allow user to override superagent agent
213
+ */
214
+ this.requestAgent = null;
215
+ _classPrivateFieldSet(_negotiatedVersion, this, null);
216
+
217
+ /**
218
+ * Allow SDK to fetch version info and negotiate version
219
+ */
220
+ this.allowVersionNegotiation = true;
221
+ _classPrivateFieldSet(_negotiationCompleted, this, false);
222
+
223
+ /**
224
+ * Allow SDK to print debug logs
225
+ */
226
+ this.debug = false;
227
+ _classPrivateFieldSet(_logger, this, null);
228
+
229
+ /**
230
+ * Username for basic auth
231
+ */
232
+ this.username = null;
233
+
234
+ /**
235
+ * Password for basic auth
236
+ */
237
+ this.password = null;
238
+ _classPrivateFieldSet(_verifySslFlag, this, true);
239
+
240
+ /*
241
+ * Non Browser Environment : path to directory where downloaded files will be stored
242
+ * Browser Environment : WritableStream to pipe downloaded file to
243
+ */
244
+ this.downloadDestination = null;
245
+
246
+ /*
247
+ * Log file to write activity logs
248
+ */
249
+ this.loggerFile = null;
250
+ }
251
+
252
+ /**
253
+ * Enable/Disable SSL Verification
254
+ * @param verifySsl (boolean)
255
+ */
256
+ set verifySsl(verifySsl) {
257
+ this.requestAgent = verifySsl ? null : new _https.default.Agent({
258
+ rejectUnauthorized: verifySsl
259
+ });
260
+ _classPrivateFieldSet(_verifySslFlag, this, verifySsl);
261
+ }
262
+ get verifySsl() {
263
+ return _classPrivateFieldGet(_verifySslFlag, this);
264
+ }
265
+
266
+ /**
267
+ * Set the hostname for base URL
268
+ * @param {String} hostname the hostname
269
+ */
270
+ set host(hostname) {
271
+ _classPrivateFieldSet(_host, this, hostname);
272
+ // Reset negotiation flags when host changes
273
+ _classPrivateFieldSet(_negotiationCompleted, this, false);
274
+ _classPrivateFieldSet(_negotiatedVersion, this, null);
275
+ }
276
+
277
+ /**
278
+ * Get the hostname for base URL
279
+ * @returns {String} the hostname
280
+ */
281
+ get host() {
282
+ return _classPrivateFieldGet(_host, this);
283
+ }
284
+
285
+ /**
286
+ * Configure log file to write activity logs
287
+ * @param logfile The destination file (write stream / string)
288
+ */
289
+ set loggerFile(logfile) {
290
+ if (logfile !== null && typeof logfile !== 'undefined') {
291
+ if (typeof logfile === 'string' || logfile instanceof String) {
292
+ logfile = _fs.default.createWriteStream(logfile, {
293
+ flags: 'a'
294
+ });
295
+ }
296
+ _classPrivateFieldSet(_logger, this, new console.Console({
297
+ stdout: logfile,
298
+ stderr: logfile
299
+ }));
300
+ }
301
+ }
302
+
303
+ /**
304
+ * Adds key value pair to default headers map, (to be added to every API call request)
305
+ * @param {String} key The key
306
+ * @param {String} value The corresponding value
307
+ */
308
+ addDefaultHeader(key, value) {
309
+ if (key === "Authorization") {
310
+ _classPrivateFieldSet(_cookie, this, null);
311
+ }
312
+ this.defaultHeaders[key] = value;
313
+ }
314
+
315
+ /*
316
+ * Returns a string representation for an actual parameter.
317
+ * @param param The actual parameter.
318
+ * @returns {String} The string representation of <code>param</code>.
319
+ */
320
+ paramToString(param) {
321
+ if (param == undefined || param == null) {
322
+ return '';
323
+ }
324
+ if (param instanceof Date) {
325
+ return param.toJSON();
326
+ }
327
+ return param.toString();
328
+ }
329
+ buildUrl(path, pathParams) {
330
+ if (!path.match(/^\//)) {
331
+ path = '/' + path;
332
+ }
333
+ if (typeof _classPrivateFieldGet(_negotiatedVersion, this) !== 'undefined' && _classPrivateFieldGet(_negotiatedVersion, this) !== null && _classPrivateFieldGet(_negotiatedVersion, this).match(/v\d+\.\d+(\.[a|b]\d+)?/) !== null && _classPrivateFieldGet(_negotiatedVersion, this) !== "v4.2") {
334
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Changing uri", path, "to negotiated version", _classPrivateFieldGet(_negotiatedVersion, this));
335
+ var uriRegExp = new RegExp("(?<=/[-\\w]+/)v\\d+\\.\\d+(\\.[a|b]\\d+)?(?=/.*)", "i");
336
+ path = path.replace(uriRegExp, _classPrivateFieldGet(_negotiatedVersion, this));
337
+ }
338
+
339
+ // The protocol of the base URL, including the colon (:).
340
+ _classPrivateFieldSet(_protocol, this, typeof self === 'undefined' ? this.scheme + ':' : self.location.protocol);
341
+ let basePath = ''; //default
342
+ if (_classPrivateFieldGet(_protocol, this) !== '' && this.host !== '' && this.port !== '') {
343
+ basePath = _classPrivateFieldGet(_protocol, this) + '\/\/' + this.host + ':' + this.port;
344
+ } else if (typeof self !== "undefined") {
345
+ basePath = self.origin;
346
+ }
347
+ var url = basePath + path;
348
+ url = url.replace(/\{([\w-]+)\}/g, (fullMatch, key) => {
349
+ var value;
350
+ if (pathParams.hasOwnProperty(key)) {
351
+ value = this.paramToString(pathParams[key]);
352
+ } else {
353
+ value = fullMatch;
354
+ }
355
+ return encodeURIComponent(value);
356
+ });
357
+ return url;
358
+ }
359
+ /*
360
+ * Builds a string representation of an array-type actual parameter, according to the given collection format.
361
+ * @param {Array} param An array parameter.
362
+ * @param {module:ApiClient.CollectionFormatEnum} collectionFormat The array element separator strategy.
363
+ * @returns {String|Array} A string representation of the supplied collection, using the specified delimiter. Returns
364
+ * <code>param</code> as is if <code>collectionFormat</code> is <code>multi</code>.
365
+ */
366
+ buildCollectionParam(param, collectionFormat) {
367
+ if (param == null) {
368
+ return null;
369
+ }
370
+ switch (collectionFormat) {
371
+ case 'csv':
372
+ return param.map(this.paramToString).join(',');
373
+ case 'ssv':
374
+ return param.map(this.paramToString).join(' ');
375
+ case 'tsv':
376
+ return param.map(this.paramToString).join('\t');
377
+ case 'pipes':
378
+ return param.map(this.paramToString).join('|');
379
+ case 'multi':
380
+ //return the array directly as SuperAgent will handle it as expected
381
+ return param.map(this.paramToString);
382
+ default:
383
+ throw new Error('Unknown collection format: ' + collectionFormat);
384
+ }
385
+ }
386
+
387
+ /*
388
+ * Sets API key for authentication
389
+ *
390
+ * @param {String} key The API key for authentication
391
+ */
392
+ setApiKey(key) {
393
+ if (key == undefined || typeof key === 'string' || key instanceof String) {
394
+ this.authentications['apiKeyAuthScheme']['apiKey'] = key;
395
+ } else {
396
+ this.authentications['apiKeyAuthScheme']['apiKey'] = undefined;
397
+ }
398
+ }
399
+
400
+ /*
401
+ * Applies authentication headers to the request.
402
+ * @param {Object} request The request object created by a <code>superagent()</code> call.
403
+ * @param {Array.<String>} authNames An array of authentication method names.
404
+ */
405
+
406
+ addEtagToReservedMap(response, data) {
407
+ if (response.hasOwnProperty("headers") && response.headers.hasOwnProperty("etag")) {
408
+ let etagRef = response.headers.etag;
409
+ if (data.getData() !== undefined) {
410
+ if (Array.isArray(data.getData()) && data.getData().length > 0) {
411
+ for (var item of data.getData()) {
412
+ if (item.hasOwnProperty("$reserved") && item.get$Reserved() !== undefined) {
413
+ item.get$Reserved()["ETag"] = etagRef;
414
+ }
415
+ }
416
+ } else if (data.getData().hasOwnProperty("$reserved") && data.getData().get$Reserved() !== undefined) {
417
+ data.getData().get$Reserved()["ETag"] = etagRef;
418
+ }
419
+ }
420
+ }
421
+ return data;
422
+ }
423
+
424
+ /**
425
+ * Get ETag from an object if exists.
426
+ * The ETag is usually provided in the response of the GET API calls,
427
+ * which can further be used in other HTTP operations.
428
+ *
429
+ * @param object Object from which ETag needs to be retrieved
430
+ * @returns {(String|null)} returns ETag header in the object if it's an API response object, otherwise null
431
+ */
432
+ static getEtag(object) {
433
+ let etag = null;
434
+ if (object !== undefined) {
435
+ if (object.hasOwnProperty('$reserved') && object.get$Reserved() !== undefined) {
436
+ etag = this.getValueForCaseInsensitiveKeyMatch(object.get$Reserved(), 'ETag');
437
+ }
438
+ if (etag == null && object.hasOwnProperty("data") && object.getData().hasOwnProperty('$reserved') && object.getData().get$Reserved() !== undefined) {
439
+ etag = this.getValueForCaseInsensitiveKeyMatch(object.getData().get$Reserved(), 'ETag');
440
+ }
441
+ }
442
+ return etag;
443
+ }
444
+ static getValueForCaseInsensitiveKeyMatch(object, key) {
445
+ if (object && key) {
446
+ const searchKey = key.toLowerCase();
447
+ const matchedKey = Object.keys(object).find(key => key.toLowerCase() === searchKey);
448
+ return matchedKey ? object[matchedKey] : null;
449
+ }
450
+ return null;
451
+ }
452
+
453
+ /**
454
+ * Get SDK's negotiated version.
455
+ * @returns {String} negotiated version.
456
+ */
457
+ getNegotiatedVersion() {
458
+ return _classPrivateFieldGet(_negotiatedVersion, this);
459
+ }
460
+ /**
461
+ * Call relevant options api and negotiate version
462
+ * Negotiated version available via getNegotiatedVersion()
463
+ * @param {ApiClient} selfInstance
464
+ * @param {Array.<String>} authNames An array of allowed authentication type names i.e. basicAuthScheme
465
+ * @returns {Promise<ApiClient>} a {@link https://www.promisejs.org/|Promise}
466
+ */
467
+ negotiateVersion(selfInstance, authNames) {
468
+ return new Promise(resolve => {
469
+ if (this.allowVersionNegotiation === true && _classPrivateFieldGet(_negotiationCompleted, this) === false) {
470
+ this.callApiInternal('/api/multidomain/unversioned/info', 'OPTIONS', {}, {}, {}, {}, null, authNames, [], ['application/json'], Object).then(({
471
+ data,
472
+ response
473
+ }) => {
474
+ if (response.status === 200 && data.hasOwnProperty("data") && data.data !== null) {
475
+ const serverVersion = data.data;
476
+ const minimumSupportedVersion = "v4.2";
477
+
478
+ // Check if server version is below minimum supported version
479
+ if (_assertClassBrand(_ApiClient_brand, this, _isSmallerMinorVersion).call(this, _assertClassBrand(_ApiClient_brand, this, _getVersionDetails).call(this, serverVersion), _assertClassBrand(_ApiClient_brand, this, _getVersionDetails).call(this, minimumSupportedVersion))) {
480
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).WARN, null, "Server version", serverVersion, "is below minimum supported version", minimumSupportedVersion, ". Version negotiation will not be performed.");
481
+ _classPrivateFieldSet(_negotiatedVersion, this, null);
482
+ _classPrivateFieldSet(_negotiationCompleted, this, false);
483
+ resolve(selfInstance);
484
+ return;
485
+ }
486
+ _classPrivateFieldSet(_negotiatedVersion, this, _assertClassBrand(_ApiClient_brand, this, _performNegotiationBetweenVersions).call(this, "v4.2", serverVersion));
487
+ _classPrivateFieldSet(_negotiationCompleted, this, true);
488
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Negotiated Version with server :", _classPrivateFieldGet(_negotiatedVersion, this));
489
+ resolve(selfInstance);
490
+ } else {
491
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, "Could not fetch supported versions from server");
492
+ _classPrivateFieldSet(_negotiatedVersion, this, null);
493
+ _classPrivateFieldSet(_negotiationCompleted, this, false);
494
+ resolve(selfInstance);
495
+ }
496
+ }).catch(error => {
497
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, "Could not fetch supported versions from server");
498
+ _classPrivateFieldSet(_negotiatedVersion, this, null);
499
+ _classPrivateFieldSet(_negotiationCompleted, this, false);
500
+ resolve(selfInstance);
501
+ });
502
+ } else {
503
+ resolve(selfInstance);
504
+ }
505
+ });
506
+ }
507
+
508
+ // Gets a valid timeout
509
+ // 1. Sets to provided default timeout in case invalid value is passed
510
+ // 2. Sets to default max value of 30 minutes in case a value of more than 30 minutes is passed
511
+
512
+ /**
513
+ * Invokes the REST service using the supplied settings and parameters.
514
+ * @param {String} path The base URL to invoke.
515
+ * @param {String} httpMethod The HTTP method to use.
516
+ * @param {Object.<String, String>} pathParams A map of path parameters and their values.
517
+ * @param {Object.<String, Object>} queryParams A map of query parameters and their values.
518
+ * @param {Object.<String, Object>} headerParams A map of header parameters and their values.
519
+ * @param {Object.<String, Object>} formParams A map of form parameters and their values.
520
+ * @param {Object} bodyParam The value to pass as the request body.
521
+ * @param {Array.<String>} authNames An array of authentication type names.
522
+ * @param {Array.<String>} contentTypes An array of request MIME types.
523
+ * @param {Array.<String>} accepts An array of acceptable response MIME types.
524
+ * @param {(String|Array|Object|Function)} returnType The required type to return; can be a string for simple types or the
525
+ * constructor for a complex type.
526
+ * @returns {Promise} A {@link https://www.promisejs.org/|Promise} object.
527
+ */
528
+ callApi(path, httpMethod, pathParams, queryParams, headerParams, formParams, bodyParam, authNames, contentTypes, accepts, returnType) {
529
+ return this.negotiateVersion(this, authNames).then(function (selfInstance) {
530
+ return selfInstance.callApiInternal(path, httpMethod, pathParams, queryParams, headerParams, formParams, bodyParam, authNames, contentTypes, accepts, returnType);
531
+ });
532
+ }
533
+ callApiInternal(path, httpMethod, pathParams, queryParams, headerParams, formParams, bodyParam, authNames, contentTypes, accepts, returnType) {
534
+ var url = this.buildUrl(path, pathParams);
535
+ const isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined";
536
+ let binaryMediaTypes = ['application/octet-stream', 'application/pdf', 'application/zip'];
537
+ if (accepts && accepts.length > 0 && accepts.some(accept => binaryMediaTypes.includes(accept)) && isBrowser && this.downloadDestination) {
538
+ return new Promise((resolve, reject) => {
539
+ // Prepare request for browser download
540
+ const fetchParams = _assertClassBrand(_ApiClient_brand, this, _prepareDownloadBrowserParams).call(this, url, httpMethod, queryParams, headerParams, bodyParam, authNames, contentTypes, accepts);
541
+ fetch(fetchParams.url, fetchParams.options).then(response => {
542
+ if (!response.ok) {
543
+ const err = new Error(`HTTP error ${response.status}`);
544
+ err.status = response.status;
545
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, "Error downloading file:", err);
546
+ reject(err);
547
+ }
548
+ if (!(this.downloadDestination instanceof WritableStream)) {
549
+ let errMsg = "Incompatible downloadDestination for Browser Environment, must be WritableStream";
550
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, errMsg);
551
+ reject(errMsg);
552
+ }
553
+ const reader = response.body.getReader();
554
+ const writer = this.downloadDestination.getWriter();
555
+ const pump = () => {
556
+ return reader.read().then(({
557
+ done,
558
+ value
559
+ }) => {
560
+ if (done) {
561
+ writer.close();
562
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Finished streaming response");
563
+ resolve({
564
+ data: {},
565
+ response
566
+ });
567
+ }
568
+ return writer.write(value).then(pump);
569
+ });
570
+ };
571
+ return pump();
572
+ }).catch(error => {
573
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, "Caught the following error :", error);
574
+ reject(error);
575
+ });
576
+ });
577
+ }
578
+ var request = (0, _superagent.default)(httpMethod, url);
579
+
580
+ // override request callback to retry only required status codes
581
+ request.oldCallback = request.callback;
582
+ request.callback = function (err, res) {
583
+ if (res && res.status) {
584
+ const status = res.status;
585
+ if (status >= 400 && !(status === 408 || status === 429 || status === 503 || status === 504)) {
586
+ this._maxRetries = 0;
587
+ }
588
+ if (res.status === 401 && this.header["Cookie"]) {
589
+ this.unset("Cookie");
590
+ this._maxRetries = 1;
591
+ }
592
+ if (status === 429) {
593
+ let retryAfter = res.headers['retry-after'];
594
+ if (retryAfter) {
595
+ let delay = parseInt(retryAfter, 10) * 1000;
596
+ this._retryDelays[this._retries] = delay;
597
+ }
598
+ }
599
+ }
600
+ this.oldCallback(err, res);
601
+ };
602
+
603
+ // apply authentications
604
+ _assertClassBrand(_ApiClient_brand, this, _applyAuthToRequest).call(this, request, authNames);
605
+
606
+ // set query parameters
607
+ if (httpMethod.toUpperCase() === 'GET' && this.cache === false) {
608
+ queryParams['_'] = new Date().getTime();
609
+ }
610
+ request.query(_assertClassBrand(_ApiClient_brand, this, _normalizeParams).call(this, queryParams));
611
+
612
+ // set header parameters
613
+ request.set(this.defaultHeaders).set(_assertClassBrand(_ApiClient_brand, this, _normalizeParams).call(this, headerParams));
614
+ if ((this.defaultHeaders['NTNX-Request-Id'] === null || this.defaultHeaders['NTNX-Request-Id'] === undefined) && (headerParams['NTNX-Request-Id'] === null || headerParams['NTNX-Request-Id'] === undefined)) {
615
+ let requestId = (0, _uuid.v4)();
616
+ request.set(_assertClassBrand(_ApiClient_brand, this, _normalizeParams).call(this, {
617
+ 'NTNX-Request-Id': requestId
618
+ }));
619
+ }
620
+
621
+ // Set User-Agent header only if it is not a browser environment
622
+ if (!isBrowser) {
623
+ this.downloadDestination = '.';
624
+ request.set(_assertClassBrand(_ApiClient_brand, this, _normalizeParams).call(this, {
625
+ 'User-Agent': 'Nutanix-multidomain-js-client/4.2.1'
626
+ }));
627
+ }
628
+
629
+ // set requestAgent if it is set by user
630
+ if (this.requestAgent) {
631
+ request.agent(this.requestAgent);
632
+ }
633
+
634
+ // set request timeouts
635
+ var timeoutOptions = {};
636
+ timeoutOptions["response"] = _assertClassBrand(_ApiClient_brand, this, _getValidTimeout).call(this, this.connectTimeout, _classPrivateFieldGet(_defaultConnectTimeout, this));
637
+ timeoutOptions["deadline"] = _assertClassBrand(_ApiClient_brand, this, _getValidTimeout).call(this, this.readTimeout, _classPrivateFieldGet(_defaultReadTimeout, this));
638
+ request.timeout(timeoutOptions);
639
+ var contentType = headerParams.hasOwnProperty("Content-Type") ? headerParams["Content-Type"] : _assertClassBrand(_ApiClient_brand, this, _jsonPreferredMime).call(this, contentTypes);
640
+ if (contentType) {
641
+ // Issue with superagent and multipart/form-data (https://github.com/visionmedia/superagent/issues/746)
642
+ if (contentType != 'multipart/form-data') {
643
+ request.type(contentType);
644
+ }
645
+ } else if (!request.header['Content-Type']) {
646
+ request.type('application/json');
647
+ }
648
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Request URL :", httpMethod, url);
649
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, _assertClassBrand(_ApiClient_brand, this, _flatten), "Request Headers :", typeof request.header === "undefined" ? "" : request.header);
650
+ if (contentType === 'application/x-www-form-urlencoded') {
651
+ request.send(_assertClassBrand(_ApiClient_brand, this, _normalizeParams).call(this, formParams));
652
+ } else if (contentType == 'multipart/form-data') {
653
+ var _formParams = _assertClassBrand(_ApiClient_brand, this, _normalizeParams).call(this, formParams);
654
+ for (var key in _formParams) {
655
+ if (_formParams.hasOwnProperty(key)) {
656
+ if (_assertClassBrand(_ApiClient_brand, this, _isFileParam).call(this, _formParams[key])) {
657
+ // file field
658
+ request.attach(key, _formParams[key]);
659
+ } else {
660
+ request.field(key, _formParams[key]);
661
+ }
662
+ }
663
+ }
664
+ } else if (contentType === 'application/octet-stream' && bodyParam !== null && typeof bodyParam !== 'undefined' && typeof bodyParam.pipe === 'function') {
665
+ // FILE UPLOAD SUPPORT
666
+
667
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Piping octet-stream request");
668
+ if (typeof bodyParam.pipe === 'function') {
669
+ bodyParam.pipe(request);
670
+ } else if (typeof require === 'function') {
671
+ let webstream;
672
+ try {
673
+ webstream = require('stream/web');
674
+ } catch (err) {
675
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, "Error fetching steam/web");
676
+ }
677
+ if (bodyParam instanceof webstream.ReadableStream) {
678
+ bodyParam.pipeTo(new webstream.WritableStream({
679
+ write(chunk) {
680
+ request.write(chunk);
681
+ },
682
+ close() {
683
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "READABLE STREAM CLOSED");
684
+ },
685
+ abort(err) {
686
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, "READABLE STREAM ABORTED");
687
+ }
688
+ }));
689
+ } else {
690
+ request.send(bodyParam);
691
+ }
692
+ } else {
693
+ request.send(bodyParam);
694
+ }
695
+ return new Promise((resolve, reject) => {
696
+ request.on('error', err => {
697
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "Caught the following error :", err);
698
+ reject(err);
699
+ }).on('response', response => {
700
+ _assertClassBrand(_ApiClient_brand, this, _handleApiResponseForPromise).call(this, response, path, queryParams, returnType, resolve, reject);
701
+ });
702
+ });
703
+ } else if (['POST', 'PUT', 'PATCH'].includes(httpMethod.toUpperCase()) && bodyParam) {
704
+ request.send(bodyParam);
705
+ }
706
+ if (typeof returnType === 'Blob') {
707
+ request.responseType('blob');
708
+ } else if (returnType === 'String') {
709
+ request.responseType('string');
710
+ }
711
+ _assertClassBrand(_ApiClient_brand, this, _attachCookies).call(this, request);
712
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "Request Body :", typeof request._data === "undefined" ? "" : request._data);
713
+ var accept = headerParams.hasOwnProperty("Accept") && headerParams["Accept"] != undefined ? headerParams["Accept"] : accepts.join(', ');
714
+ if (accept) {
715
+ request.accept(accept);
716
+ }
717
+ return new Promise((resolve, reject) => {
718
+ request.buffer(false).redirects(0).retry(this.maxRetryAttempts, this.retryInterval, []).withCredentials(this.withCredentials).on('error', err => {
719
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "Caught the following error :", err);
720
+ }).end((error, response) => {
721
+ if (error) {
722
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "Caught error during the request!");
723
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, error);
724
+ // Reset negotiation flags on 404 to allow future negotiation attempts
725
+ if (error.status === 404) {
726
+ _classPrivateFieldSet(_negotiationCompleted, this, false);
727
+ _classPrivateFieldSet(_negotiatedVersion, this, null);
728
+ }
729
+ if (error.response !== null && typeof error.response !== 'undefined') {
730
+ error.data = _assertClassBrand(_ApiClient_brand, this, _deserialize).call(this, error.response, returnType);
731
+ } else {
732
+ error.data = _assertClassBrand(_ApiClient_brand, this, _wrapErrorInResponse).call(this, error);
733
+ }
734
+ reject(error);
735
+ } else {
736
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Response Status :", response.status);
737
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, _assertClassBrand(_ApiClient_brand, this, _flatten), "Response Headers :", response.headers);
738
+ let contentType = '';
739
+ if (response.headers.hasOwnProperty('content-type')) {
740
+ contentType = response.headers["content-type"];
741
+ }
742
+ let fetchStream = binaryMediaTypes.includes(contentType);
743
+ if (fetchStream) {
744
+ /*
745
+ * Browser environment :
746
+ * Already handled
747
+ * Node.js environment :
748
+ * uses File System, downloadDestination expected to be a directory path, file is downloaded to this directory
749
+ */
750
+ if (!isBrowser) {
751
+ /*
752
+ * Non Browser environment :
753
+ * - stream data to file
754
+ * - fetch response headers and body (if exists)
755
+ * - return in case of error or after stream finish
756
+ *
757
+ * NOTE :
758
+ * superagent does not provide access to headers before pipe, therefore response is piped to
759
+ * file with temporary name, which is renamed to proper filename after Content-Disposition header is available
760
+ */
761
+
762
+ let tempFilename = this.downloadDestination + '/downloaded_file_' + Date.now() + '.txt'; // temporary filename
763
+ let stream = _fs.default.createWriteStream(tempFilename);
764
+ _assertClassBrand(_ApiClient_brand, this, _processDownloadedFile).call(this, response, stream, tempFilename, resolve, reject, returnType);
765
+ }
766
+ } else if (response.status == 302) {
767
+ /*
768
+ * Handling 302 Redirects
769
+ * - Reads X-Redirect-Token header from response and writes into Cookie header for redirected request
770
+ */
771
+ let tempFilename = this.downloadDestination + '/downloaded_file_' + Date.now() + '.txt'; // temporary filename
772
+ let context = this;
773
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Redirecting to :", response.headers.location);
774
+ var redirectRequest = (0, _superagent.default)(httpMethod, response.headers.location);
775
+ redirectRequest.set(request.header);
776
+ if (response.headers.hasOwnProperty("x-redirect-token")) {
777
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Writing X-Redirect-Token into Cookie");
778
+ redirectRequest.set("Cookie", response.headers["x-redirect-token"]);
779
+ }
780
+ if (this.requestAgent) {
781
+ redirectRequest.agent(this.requestAgent);
782
+ }
783
+ redirectRequest.redirects(0);
784
+ redirectRequest.withCredentials(this.withCredentials);
785
+ redirectRequest.buffer(false);
786
+ let redirectedStream = _fs.default.createWriteStream(tempFilename);
787
+ redirectRequest.pipe(redirectedStream);
788
+ redirectRequest.on('response', function (redirectResponse) {
789
+ _assertClassBrand(_ApiClient_brand, context, _log).call(context, _classPrivateFieldGet(_LOG_LEVEL, context).INFO, null, "Received response after redirection :", redirectResponse.status);
790
+ _assertClassBrand(_ApiClient_brand, context, _processDownloadedFile).call(context, redirectResponse, redirectedStream, tempFilename, resolve, reject, returnType);
791
+ });
792
+ } else {
793
+ _assertClassBrand(_ApiClient_brand, this, _handleApiResponseForPromise).call(this, response, path, queryParams, returnType, resolve, reject);
794
+ }
795
+ }
796
+ });
797
+ });
798
+ }
799
+ static addEtagReferenceToHeader(bodyParam, headerParams) {
800
+ // set If-Match header from postBody $reserved map
801
+ if (typeof bodyParam !== 'undefined' && bodyParam !== null) {
802
+ if (bodyParam.hasOwnProperty('$reserved') && bodyParam.$reserved.hasOwnProperty('ETag')) {
803
+ let eTagReference = bodyParam.$reserved['ETag'];
804
+ if (typeof eTagReference !== 'undefined' && eTagReference !== null && eTagReference !== "") {
805
+ headerParams['If-Match'] = eTagReference;
806
+ }
807
+ }
808
+ }
809
+ }
810
+
811
+ /*
812
+ * Parses an ISO-8601 string representation of a date value.
813
+ * @param {String} str The date value as a string.
814
+ * @returns {Date} The parsed date object.
815
+ */
816
+ static parseDate(str) {
817
+ return new Date(str);
818
+ }
819
+
820
+ /*
821
+ * Parses queryParams and path to find a given query param value
822
+ * @param {String} path The path given to callApi method
823
+ * @param {Object.<String, Object>} queryParams The queryParams given to callApi method
824
+ * @param {String} param Parameter name to look for
825
+ * @param {String} defaultValue The default value for the missing param if not present
826
+ * @returns {String} The value of given parameter
827
+ */
828
+ static parseQueryParam(path, queryParams, param, defaultValue) {
829
+ let value = null;
830
+ if (typeof queryParams !== 'undefined' && queryParams.hasOwnProperty(param)) {
831
+ value = queryParams[param];
832
+ }
833
+ if (value === null && (typeof path === 'string' || path instanceof String)) {
834
+ const escapedParam = param.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
835
+ const regexResult = path.match(new RegExp(`${escapedParam}=([0-9]+)`));
836
+ if (regexResult) {
837
+ value = regexResult[1];
838
+ }
839
+ }
840
+ if (value === null) {
841
+ value = defaultValue;
842
+ }
843
+ return value;
844
+ }
845
+
846
+ /**
847
+ * Converts a value to the specified type.
848
+ * @param {(String|Object)} data The data to convert, as a string or object.
849
+ * @param {(String|Array.<String>|Object.<String, Object>|Function)} type The type to return. Pass a string for simple types
850
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
851
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
852
+ * all properties on <code>data<code> will be converted to this type.
853
+ * @returns An instance of the specified type or null or undefined if data is null or undefined.
854
+ */
855
+ static convertToType(data, type) {
856
+ if (data === null || data === undefined) return data;
857
+ switch (type) {
858
+ case 'Boolean':
859
+ return Boolean(data);
860
+ case 'Integer':
861
+ return parseInt(data, 10);
862
+ case 'Number':
863
+ return parseFloat(data);
864
+ case 'String':
865
+ return String(data);
866
+ case 'Date':
867
+ return ApiClient.parseDate(String(data));
868
+ case 'Blob':
869
+ return data;
870
+ default:
871
+ if (type === Object) {
872
+ // generic object, return directly
873
+ return data;
874
+ } else if (typeof type === 'function') {
875
+ // for model type like: User
876
+ return type.constructFromObject(data);
877
+ } else if (Array.isArray(type)) {
878
+ // for array type like: ['String']
879
+ var itemType = type[0];
880
+ return data.map(item => {
881
+ return ApiClient.convertToType(item, itemType);
882
+ });
883
+ } else if (typeof type === 'object') {
884
+ // for plain object type like: {'String': 'Integer'}
885
+ var keyType, valueType;
886
+ for (var k in type) {
887
+ if (type.hasOwnProperty(k)) {
888
+ keyType = k;
889
+ valueType = type[k];
890
+ break;
891
+ }
892
+ }
893
+ var result = {};
894
+ for (var k in data) {
895
+ if (data.hasOwnProperty(k)) {
896
+ var key = ApiClient.convertToType(k, keyType);
897
+ var value = ApiClient.convertToType(data[k], valueType);
898
+ result[key] = value;
899
+ }
900
+ }
901
+ return result;
902
+ } else {
903
+ // for unknown type, return the data directly
904
+ return data;
905
+ }
906
+ }
907
+ }
908
+
909
+ /**
910
+ * Constructs a new map or array model from REST data.
911
+ * @param data {Object|Array} The REST data.
912
+ * @param obj {Object|Array} The target object or array.
913
+ */
914
+ static constructFromObject(data, obj, itemType) {
915
+ if (Array.isArray(data)) {
916
+ for (var i = 0; i < data.length; i++) {
917
+ if (data.hasOwnProperty(i)) obj[i] = ApiClient.convertToType(data[i], itemType);
918
+ }
919
+ } else {
920
+ for (var k in data) {
921
+ if (data.hasOwnProperty(k)) obj[k] = ApiClient.convertToType(data[k], itemType);
922
+ }
923
+ }
924
+ }
925
+ }
926
+
927
+ /**
928
+ * The default API client implementation.
929
+ * @type {ApiClient}
930
+ * @memberOf ApiClient
931
+ */
932
+ exports.ApiClient = ApiClient;
933
+ _ApiClient = ApiClient;
934
+ function _isJsonMime(contentType) {
935
+ return Boolean(contentType != null && contentType.match(/^application\/json(;.*)?$/i));
936
+ }
937
+ /*
938
+ * Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first.
939
+ * @param {Array.<String>} contentTypes
940
+ * @returns {String} The chosen content type, preferring JSON.
941
+ */
942
+ function _jsonPreferredMime(contentTypes) {
943
+ for (var i = 0; i < contentTypes.length; i++) {
944
+ if (_assertClassBrand(_ApiClient_brand, this, _isJsonMime).call(this, contentTypes[i])) {
945
+ return contentTypes[i];
946
+ }
947
+ }
948
+ return contentTypes[0];
949
+ }
950
+ /*
951
+ * Checks whether the given parameter value represents file-like content.
952
+ * @param param The parameter to check.
953
+ * @returns {Boolean} <code>true</code> if <code>param</code> represents a file.
954
+ */
955
+ function _isFileParam(param) {
956
+ // fs.ReadStream in Node.js and Electron (but not in runtime like browserify)
957
+ if (typeof require === 'function') {
958
+ let fs;
959
+ try {
960
+ fs = require('fs');
961
+ } catch (err) {}
962
+ if (fs && fs.ReadStream && param instanceof fs.ReadStream) {
963
+ return true;
964
+ }
965
+ }
966
+
967
+ // Buffer in Node.js
968
+ if (typeof Buffer === 'function' && param instanceof Buffer) {
969
+ return true;
970
+ }
971
+
972
+ // Blob in browser
973
+ if (typeof _buffer.Blob === 'function' && param instanceof _buffer.Blob) {
974
+ return true;
975
+ }
976
+
977
+ // File in browser (it seems File object is also instance of Blob, but keep this for safe)
978
+ if (typeof File === 'function' && param instanceof File) {
979
+ return true;
980
+ }
981
+ return false;
982
+ }
983
+ /*
984
+ * Normalizes parameter values:
985
+ * <ul>
986
+ * <li>remove nils</li>
987
+ * <li>keep files and arrays</li>
988
+ * <li>format to string with `paramToString` for other cases</li>
989
+ * </ul>
990
+ * @param {Object.<String, Object>} params The parameters as object properties.
991
+ * @returns {Object.<String, Object>} normalized parameters.
992
+ */
993
+ function _normalizeParams(params) {
994
+ var newParams = {};
995
+ for (var key in params) {
996
+ if (params.hasOwnProperty(key) && params[key] != undefined && params[key] != null) {
997
+ var value = params[key];
998
+ if (_assertClassBrand(_ApiClient_brand, this, _isFileParam).call(this, value) || Array.isArray(value)) {
999
+ newParams[key] = value;
1000
+ } else {
1001
+ newParams[key] = this.paramToString(value);
1002
+ }
1003
+ }
1004
+ }
1005
+ return newParams;
1006
+ }
1007
+ function _applyAuthToRequest(request, authNames) {
1008
+ authNames.forEach(authName => {
1009
+ var auth = this.authentications[authName];
1010
+ switch (auth.type) {
1011
+ case 'basic':
1012
+ if (auth.username || auth.password) {
1013
+ request.auth(auth.username || '', auth.password || '');
1014
+ } else if (this.username || this.password) {
1015
+ request.auth(this.username || '', this.password || '');
1016
+ }
1017
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "Basic Auth applied to request");
1018
+ break;
1019
+ case 'apiKey':
1020
+ if (auth.apiKey) {
1021
+ var data = {};
1022
+ if (auth.apiKeyPrefix) {
1023
+ data[auth.name] = auth.apiKeyPrefix + ' ' + auth.apiKey;
1024
+ } else {
1025
+ data[auth.name] = auth.apiKey;
1026
+ }
1027
+ if (auth['in'] === 'header') {
1028
+ request.set(data);
1029
+ } else {
1030
+ request.query(data);
1031
+ }
1032
+ }
1033
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "apiKey applied to request");
1034
+ break;
1035
+ case 'oauth2':
1036
+ if (auth.accessToken) {
1037
+ request.set({
1038
+ 'Authorization': 'Bearer ' + auth.accessToken
1039
+ });
1040
+ }
1041
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "oauth2 applied to request");
1042
+ break;
1043
+ default:
1044
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, "Unknown authentication type:", auth.type);
1045
+ throw new Error('Unknown authentication type: ' + auth.type);
1046
+ }
1047
+ });
1048
+ }
1049
+ /**
1050
+ * Wraps errors in generic response format.
1051
+ * @param {Object} error object encountered during request.
1052
+ * @returns an error object with wrapped response within error.data .
1053
+ */
1054
+ function _wrapErrorInResponse(error) {
1055
+ var response = {
1056
+ data: {},
1057
+ metadata: {}
1058
+ };
1059
+ response.data.status = error.status;
1060
+ response.data.message = error.message;
1061
+ }
1062
+ /**
1063
+ * Deserializes an HTTP response body into a value of the specified type.
1064
+ * @param {Object} response A SuperAgent response object.
1065
+ * @param {(String|Array.<String>|Object.<String, Object>|Function)} returnType The type to return. Pass a string for simple types
1066
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
1067
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
1068
+ * all properties on <code>data<code> will be converted to this type.
1069
+ * @returns A value of the specified type.
1070
+ */
1071
+ function _deserialize(response, returnType) {
1072
+ if (response == null || returnType == null || response.status == 204) {
1073
+ return null;
1074
+ }
1075
+
1076
+ // Handle text response
1077
+ if (response.headers && ['text/event-stream', 'text/html', 'text/xml', 'text/csv', 'text/javascript', 'text/markdown', 'text/vcard'].includes(response.headers['content-type'])) {
1078
+ var data = new returnType();
1079
+ data.data = new _buffer.Blob([response.text], {
1080
+ type: response.headers['content-type']
1081
+ });
1082
+ let flag = new _Flag.default();
1083
+ flag.name = "hasError";
1084
+ flag.value = false;
1085
+ let flags = [flag];
1086
+ let metadata = new _ApiResponseMetadata.default();
1087
+ metadata.flags = flags;
1088
+ data.metadata = metadata;
1089
+ return data;
1090
+ }
1091
+
1092
+ // Rely on SuperAgent for parsing response body.
1093
+ // See http://visionmedia.github.io/superagent/#parsing-response-bodies
1094
+ var data = response.body;
1095
+ if (data == null || typeof data === 'object' && typeof data.length === 'undefined' && !Object.keys(data).length) {
1096
+ // SuperAgent does not always produce a body; use the unparsed response as a fallback
1097
+ data = response.text;
1098
+ }
1099
+ return _ApiClient.convertToType(data, returnType);
1100
+ }
1101
+ /**
1102
+ * Set pagination data if response is a Paginable object
1103
+ * @param {Object} data The response data already passed through deserialize
1104
+ * @param {String} path The path given to callApi method
1105
+ * @param {Object.<String, Object>} queryParams The queryParams given to callApi method
1106
+ */
1107
+ function _paginateIfNeeded(data, path, queryParams) {
1108
+ // If response is not a Paginable instance, nothing to do
1109
+ if (!(data instanceof _Paginable.default)) {
1110
+ return;
1111
+ }
1112
+ // Retrieve current page number, defaults to 0
1113
+ const page = parseInt(this.constructor.parseQueryParam(path, queryParams, '$page', "0"), 10);
1114
+ // Retrieve current limit (results per page) number, defaults to 50
1115
+ const resultsPerPage = parseInt(this.constructor.parseQueryParam(path, queryParams, '$limit', "50"), 10);
1116
+
1117
+ // Populate pagination data
1118
+ data.populatePaginationMetadata(this,
1119
+ // current ApiClient instance
1120
+ page, resultsPerPage);
1121
+ }
1122
+ function _performNegotiationBetweenVersions(sdk, server) {
1123
+ if (!sdk || !server) {
1124
+ return sdk;
1125
+ }
1126
+ let sdkProps = _assertClassBrand(_ApiClient_brand, this, _getVersionDetails).call(this, sdk);
1127
+ let serverProps = _assertClassBrand(_ApiClient_brand, this, _getVersionDetails).call(this, server);
1128
+ // if major version is different, then do not negotiate
1129
+ // maintain sdk version
1130
+ if (!sdkProps["family"] === serverProps["family"]) {
1131
+ return sdk;
1132
+ }
1133
+ // if sdk version is smaller than highest server version, then maintain sdk version
1134
+ if (_assertClassBrand(_ApiClient_brand, this, _isSmallerMinorVersion).call(this, sdkProps, serverProps)) {
1135
+ return sdk;
1136
+ }
1137
+ // since sdk version is higher than highest server version, use server version
1138
+ return server;
1139
+ }
1140
+ function _isSmallerMinorVersion(p1, p2) {
1141
+ // if revision different, then compare revision
1142
+ if (parseInt(p1["revision"]) != parseInt(p2["revision"])) {
1143
+ return parseInt(p1["revision"]) < parseInt(p2["revision"]);
1144
+ }
1145
+ // revision is same, so compare version_type (release_type + release_type_revision)
1146
+ if (p1["versionType"] === "released") {
1147
+ return false;
1148
+ }
1149
+ let p1ReleaseType = p1["versionType"].substring(0, 1);
1150
+ let p2ReleaseType = p2["versionType"].substring(0, 1);
1151
+ let p1ReleaseTypeRevision = parseInt(p1["versionType"].substring(1));
1152
+ let p2ReleaseTypeRevision = p2["versionType"] === "released" ? 0 : parseInt(p2["versionType"].substring(1));
1153
+ if (p1ReleaseType === p2ReleaseType) {
1154
+ // release type is same, so compare release type revision
1155
+ return p1ReleaseTypeRevision < p2ReleaseTypeRevision;
1156
+ }
1157
+ // release type is different, so alpha must be smallest and released must be largest
1158
+ return p1ReleaseType === "a" || p2["versionType"] === "released";
1159
+ }
1160
+ function _getVersionDetails(version) {
1161
+ let ret = {};
1162
+ if ("unversioned" === version) {
1163
+ ret["family"] = "unversioned";
1164
+ ret["versionType"] = "released";
1165
+ } else {
1166
+ let versionParts = version.toString().split('.');
1167
+ if ("unversioned" === versionParts[0]) {
1168
+ ret["family"] = "unversioned";
1169
+ ret["versionType"] = versionParts[1];
1170
+ } else {
1171
+ ret["family"] = versionParts[0].substring(1);
1172
+ ret["revision"] = versionParts[1];
1173
+ if (versionParts.length == 2) {
1174
+ ret["versionType"] = "released";
1175
+ } else {
1176
+ ret["versionType"] = versionParts[2];
1177
+ }
1178
+ }
1179
+ }
1180
+ return ret;
1181
+ }
1182
+ function _getValidTimeout(timeout, defaultTimeout) {
1183
+ if (timeout <= 0) {
1184
+ timeout = defaultTimeout;
1185
+ } else if (timeout > _classPrivateFieldGet(_defaultMaxTimeout, this)) {
1186
+ timeout = _classPrivateFieldGet(_defaultMaxTimeout, this);
1187
+ }
1188
+ return timeout;
1189
+ }
1190
+ // If enabled, update cookie information to reuse in subsequent requests for a valid response
1191
+ function _updateCookies(response) {
1192
+ if (response.hasOwnProperty("headers") && response.headers.hasOwnProperty("set-cookie")) {
1193
+ let finalCookie = "";
1194
+ let cookieList = response.headers["set-cookie"];
1195
+ if (cookieList.length > 0) {
1196
+ // add all cookies separated by ;
1197
+ for (let cookieItem of cookieList) {
1198
+ cookieItem = cookieItem.split(";")[0];
1199
+ if (cookieItem.includes("=")) {
1200
+ cookieItem.trim();
1201
+ finalCookie = finalCookie.concat(cookieItem).concat(";");
1202
+ }
1203
+ }
1204
+ // remove trailing ;
1205
+ if (finalCookie !== "") {
1206
+ finalCookie = finalCookie.substr(0, finalCookie.length - 1);
1207
+ }
1208
+ }
1209
+ _classPrivateFieldSet(_cookie, this, finalCookie);
1210
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "Retained cookie :", finalCookie);
1211
+ } else {
1212
+ _classPrivateFieldSet(_cookie, this, null);
1213
+ }
1214
+ }
1215
+ // If enabled, attach saved cookies to request
1216
+ function _attachCookies(request) {
1217
+ if (_classPrivateFieldGet(_cookie, this) != null) {
1218
+ request.set(_assertClassBrand(_ApiClient_brand, this, _normalizeParams).call(this, {
1219
+ 'Cookie': _classPrivateFieldGet(_cookie, this)
1220
+ }));
1221
+ }
1222
+ }
1223
+ function _log(level, mapper, ...messages) {
1224
+ // Set default log level to INFO
1225
+ if (typeof level !== "object" || !("key" in level) || !("value" in level) || typeof level["value"] !== "symbol") {
1226
+ level = _classPrivateFieldGet(_LOG_LEVEL, this).INFO;
1227
+ }
1228
+ if (!_assertClassBrand(_ApiClient_brand, this, _skipLogging).call(this, level)) {
1229
+ // Preprocess message to prefix with timestamp and log level
1230
+ messages = messages.map(message => {
1231
+ return typeof message === "string" ? message : mapper ? mapper(message) : JSON.stringify(message);
1232
+ });
1233
+ let message = messages.join(' ');
1234
+ message = new Date().toISOString() + ' ' + level.key + ' - ' + message;
1235
+ if (typeof _classPrivateFieldGet(_logger, this) !== "undefined" && _classPrivateFieldGet(_logger, this) !== null && typeof _classPrivateFieldGet(_logger, this).log === 'function') {
1236
+ _classPrivateFieldGet(_logger, this).log(message);
1237
+ } else {
1238
+ console.log(message);
1239
+ }
1240
+ }
1241
+ }
1242
+ function _skipLogging(level) {
1243
+ // Skip logging if log level is DEBUG but debug is not enabled.
1244
+ return !this.debug && level === _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG;
1245
+ }
1246
+ // A mapper function to flatten a simple non-nested (key:value) object to string
1247
+ function _flatten(obj) {
1248
+ if (typeof obj !== "object") {
1249
+ return obj;
1250
+ }
1251
+ let output = '\n';
1252
+ if (obj) {
1253
+ Object.keys(obj).forEach(e => {
1254
+ output += e + '=[' + obj[e] + ']\n';
1255
+ });
1256
+ }
1257
+ return output === '\n' ? obj : output;
1258
+ }
1259
+ // handle and deserialize received response
1260
+ function _handleApiResponseForPromise(response, path, queryParams, returnType, resolve, reject) {
1261
+ try {
1262
+ var data = _assertClassBrand(_ApiClient_brand, this, _deserialize).call(this, response, returnType);
1263
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Response Status :", response.status);
1264
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, _assertClassBrand(_ApiClient_brand, this, _flatten), "Response Headers :", response.headers);
1265
+ _assertClassBrand(_ApiClient_brand, this, _updateCookies).call(this, response || {});
1266
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "Response Body :", data);
1267
+ if (response.status == 204 && data == null) {
1268
+ resolve({
1269
+ data,
1270
+ response
1271
+ });
1272
+ } else if (response.ok && data != null) {
1273
+ this.addEtagToReservedMap(response, data);
1274
+ _assertClassBrand(_ApiClient_brand, this, _paginateIfNeeded).call(this, data, path, queryParams);
1275
+ resolve({
1276
+ data,
1277
+ response
1278
+ });
1279
+ } else {
1280
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, data);
1281
+ reject({
1282
+ ...response.error,
1283
+ data: data
1284
+ });
1285
+ }
1286
+ } catch (err) {
1287
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "Caught error while processing response!");
1288
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, err);
1289
+ err.data = _assertClassBrand(_ApiClient_brand, this, _wrapErrorInResponse).call(this, err);
1290
+ reject(err);
1291
+ }
1292
+ }
1293
+ function _prepareDownloadBrowserParams(url, httpMethod, queryParams, headerParams, bodyParam, authNames, contentTypes, accepts) {
1294
+ let authHeaders = {};
1295
+
1296
+ // Apply authentication logic
1297
+ authNames.forEach(authName => {
1298
+ const auth = this.authentications[authName];
1299
+ switch (auth.type) {
1300
+ case 'basic':
1301
+ let username = '';
1302
+ let password = '';
1303
+ if (auth.username || auth.password) {
1304
+ username = auth.username || '';
1305
+ password = auth.password || '';
1306
+ } else if (this.username || this.password) {
1307
+ username = this.username || '';
1308
+ password = this.password || '';
1309
+ }
1310
+ if (username || password) {
1311
+ const credentials = btoa(`${username}:${password}`);
1312
+ authHeaders['Authorization'] = `Basic ${credentials}`;
1313
+ }
1314
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "Basic Auth applied to request");
1315
+ break;
1316
+ case 'apiKey':
1317
+ if (auth.apiKey) {
1318
+ let apiKeyValue = '';
1319
+ if (auth.apiKeyPrefix) {
1320
+ apiKeyValue = auth.apiKeyPrefix + ' ' + auth.apiKey;
1321
+ } else {
1322
+ apiKeyValue = auth.apiKey;
1323
+ }
1324
+ if (auth['in'] === 'header') {
1325
+ authHeaders[auth.name] = 'Bearer ' + apiKeyValue;
1326
+ } else if (auth['in'] === 'query') {
1327
+ queryParams[auth.name] = apiKeyValue;
1328
+ }
1329
+ }
1330
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "apiKey applied to request");
1331
+ break;
1332
+ case 'oauth2':
1333
+ if (auth.accessToken) {
1334
+ authHeaders['Authorization'] = 'Bearer ' + auth.accessToken;
1335
+ }
1336
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "oauth2 applied to request");
1337
+ break;
1338
+ default:
1339
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, "Unknown authentication type:", auth.type);
1340
+ throw new Error('Unknown authentication type: ' + auth.type);
1341
+ }
1342
+ });
1343
+
1344
+ // set query parameters
1345
+ if (httpMethod.toUpperCase() === 'GET' && this.cache === false) {
1346
+ queryParams['cache'] = 'false';
1347
+ }
1348
+
1349
+ // Build URL with query parameters
1350
+ const normalizedParams = _assertClassBrand(_ApiClient_brand, this, _normalizeParams).call(this, queryParams);
1351
+ const queryString = Object.keys(normalizedParams).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(normalizedParams[key])}`).join('&');
1352
+ let finalUrl = url;
1353
+ if (queryString) {
1354
+ finalUrl += (finalUrl.includes('?') ? '&' : '?') + queryString;
1355
+ }
1356
+ const finalHeaders = {
1357
+ ...this.defaultHeaders,
1358
+ ..._assertClassBrand(_ApiClient_brand, this, _normalizeParams).call(this, headerParams),
1359
+ ...authHeaders
1360
+ };
1361
+
1362
+ // set header parameters
1363
+ if ((this.defaultHeaders['NTNX-Request-Id'] === null || this.defaultHeaders['NTNX-Request-Id'] === undefined) && (headerParams['NTNX-Request-Id'] === null || headerParams['NTNX-Request-Id'] === undefined)) {
1364
+ let requestId = (0, _uuid.v4)();
1365
+ finalHeaders['NTNX-Request-Id'] = requestId;
1366
+ }
1367
+
1368
+ //Add cookies if they exist
1369
+ if (_classPrivateFieldGet(_cookie, this) != null) {
1370
+ finalHeaders['Cookie'] = _assertClassBrand(_ApiClient_brand, this, _normalizeParams).call(this, {
1371
+ 'Cookie': _classPrivateFieldGet(_cookie, this)
1372
+ });
1373
+ }
1374
+
1375
+ // Set content type
1376
+ var contentType = headerParams.hasOwnProperty("Content-Type") ? headerParams["Content-Type"] : _assertClassBrand(_ApiClient_brand, this, _jsonPreferredMime).call(this, contentTypes);
1377
+ finalHeaders['Content-Type'] = contentType;
1378
+
1379
+ // Set Accept Header
1380
+ var accept = headerParams.hasOwnProperty("Accept") && headerParams["Accept"] != undefined ? headerParams["Accept"] : accepts.join(', ');
1381
+ if (accept) {
1382
+ finalHeaders['Accept'] = accept;
1383
+ }
1384
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Request URL :", httpMethod, url);
1385
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, _assertClassBrand(_ApiClient_brand, this, _flatten), "Request Headers :", finalHeaders);
1386
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).DEBUG, null, "Request Body :", bodyParam || "");
1387
+ return {
1388
+ url: finalUrl,
1389
+ options: {
1390
+ method: httpMethod,
1391
+ headers: finalHeaders,
1392
+ body: bodyParam,
1393
+ credentials: this.withCredentials ? 'include' : 'same-origin'
1394
+ }
1395
+ };
1396
+ }
1397
+ function _processDownloadedFile(response, stream, tempFilename, resolve, reject, returnType) {
1398
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Streaming response to : ", tempFilename);
1399
+ try {
1400
+ response.on('data', chunk => {
1401
+ stream.write(chunk);
1402
+ });
1403
+ } catch (err) {
1404
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, "Issue while downloading file", err);
1405
+ }
1406
+ let data = new returnType();
1407
+ // Fetch filename
1408
+ let filename = "";
1409
+ if (typeof response.headers['content-disposition'] !== 'undefined' && response.headers['content-disposition'] !== null) {
1410
+ let match = response.headers['content-disposition'].match(/.*filename=\"(?<filename>.*)\".*/);
1411
+ let filepath = _path.default.parse(match.groups['filename']);
1412
+ filename = this.downloadDestination + '/' + filepath.name + '_' + Date.now() + filepath.ext;
1413
+ data.data = {
1414
+ "path": _path.default.parse(filename),
1415
+ $objectType: "Path"
1416
+ };
1417
+ let flag = new _Flag.default();
1418
+ flag.name = "hasError";
1419
+ flag.value = false;
1420
+ let flags = [flag];
1421
+ let metadata = new _ApiResponseMetadata.default();
1422
+ metadata.flags = flags;
1423
+ data.metadata = metadata;
1424
+ }
1425
+ response.on('end', () => {
1426
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Finished streaming response");
1427
+ if (filename.length !== 0) {
1428
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).INFO, null, "Content-Disposition header found [", filename, "] is final filename");
1429
+ stream.close();
1430
+ _fs.default.renameSync(tempFilename, filename);
1431
+ resolve({
1432
+ data,
1433
+ response
1434
+ });
1435
+ } else {
1436
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, "Content-Disposition header not found [", tempFilename, "] is final filename");
1437
+ resolve({
1438
+ data,
1439
+ response
1440
+ });
1441
+ }
1442
+ });
1443
+ response.on('error', err => {
1444
+ _assertClassBrand(_ApiClient_brand, this, _log).call(this, _classPrivateFieldGet(_LOG_LEVEL, this).ERROR, null, "Caught the following error :", err);
1445
+ error.data = _assertClassBrand(_ApiClient_brand, this, _wrapErrorInResponse).call(this, error);
1446
+ reject(err);
1447
+ });
1448
+ }
1449
+ ApiClient.instance = new ApiClient();