visualvault-api 1.1.0 → 2.0.0-beta.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/LICENSE +21 -0
- package/README.md +23 -138
- package/dist/VVRestApi.cjs +2574 -0
- package/dist/VVRestApi.cjs.map +1 -0
- package/dist/VVRestApi.d.cts +375 -0
- package/dist/VVRestApi.d.ts +375 -0
- package/dist/VVRestApi.js +2544 -0
- package/dist/VVRestApi.js.map +1 -0
- package/{lib/VVRestApi/VVRestApiNodeJs → dist}/config.yml +106 -100
- package/dist/constants.cjs +45 -0
- package/dist/constants.cjs.map +1 -0
- package/dist/constants.d.cts +48 -0
- package/dist/constants.d.ts +48 -0
- package/dist/constants.js +20 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.cjs +2594 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2563 -0
- package/dist/index.js.map +1 -0
- package/package.json +47 -71
- package/lib/VVRestApi/VVRestApiNodeJs/DocApi.js +0 -66
- package/lib/VVRestApi/VVRestApiNodeJs/FormsApi.js +0 -51
- package/lib/VVRestApi/VVRestApiNodeJs/NotificationsApi.js +0 -39
- package/lib/VVRestApi/VVRestApiNodeJs/StudioApi.js +0 -136
- package/lib/VVRestApi/VVRestApiNodeJs/VVRestApi.js +0 -1889
- package/lib/VVRestApi/VVRestApiNodeJs/app.js +0 -128
- package/lib/VVRestApi/VVRestApiNodeJs/common.js +0 -1598
- package/lib/VVRestApi/VVRestApiNodeJs/dts/express.d.ts +0 -125
- package/lib/VVRestApi/VVRestApiNodeJs/dts/node.d.ts +0 -1090
- package/lib/VVRestApi/VVRestApiNodeJs/log.js +0 -20
- package/lib/VVRestApi/VVRestApiNodeJs/public/favicon.ico +0 -0
- package/lib/VVRestApi/VVRestApiNodeJs/routes/scheduledscripts.js +0 -203
- package/lib/VVRestApi/VVRestApiNodeJs/routes/scripts.js +0 -215
- package/lib/VVRestApi/VVRestApiNodeJs/routes/testScheduledScripts.js +0 -131
- package/lib/VVRestApi/VVRestApiNodeJs/samples/SampleScheduledScript.js +0 -90
- package/lib/VVRestApi/VVRestApiNodeJs/samples/SendEmailScript.js +0 -51
- package/lib/VVRestApi/VVRestApiNodeJs/samples/fileTest.js +0 -60
- package/lib/VVRestApi/VVRestApiNodeJs/samples/sampleFormValidationScript.js +0 -126
- package/lib/VVRestApi/VVRestApiNodeJs/views/error.ejs +0 -8
- package/lib/VVRestApi/VVRestApiNodeJs/views/index.ejs +0 -8
|
@@ -1,1598 +0,0 @@
|
|
|
1
|
-
const { time } = require('console');
|
|
2
|
-
var logger = require('./log');
|
|
3
|
-
var common;
|
|
4
|
-
|
|
5
|
-
(function (common) {
|
|
6
|
-
var httpHelper = (function () {
|
|
7
|
-
|
|
8
|
-
function httpHelper(sessionToken, yamlConfig) {
|
|
9
|
-
this.HTTP = require('http');
|
|
10
|
-
this.jsyaml = require('js-yaml');
|
|
11
|
-
this.nodeJsRequest = require('request');
|
|
12
|
-
this.Q = require('q');
|
|
13
|
-
|
|
14
|
-
this._sessionToken = sessionToken;
|
|
15
|
-
this._config = yamlConfig;
|
|
16
|
-
this._maxRetries = 3;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
httpHelper.prototype.doVvClientRequest = function (url, options, params, data, buffer) {
|
|
20
|
-
var self = this;
|
|
21
|
-
|
|
22
|
-
//If the token is within 30 seconds of expiration, refresh it
|
|
23
|
-
if (this._sessionToken.expirationDate < new Date(new Date().getTime() + 30 * 1000)) {
|
|
24
|
-
console.log('In doVvClientRequest - accessToken has expired, calling __acquireRefreshToken');
|
|
25
|
-
|
|
26
|
-
return this.Q
|
|
27
|
-
.when(
|
|
28
|
-
self.__acquireRefreshToken()
|
|
29
|
-
)
|
|
30
|
-
.then(
|
|
31
|
-
function (result) {
|
|
32
|
-
console.log('In doVvClientRequest - return success from __acquireRefreshToken');
|
|
33
|
-
return self.__doVvClientCallRequest(url, options, params, data, buffer);
|
|
34
|
-
}
|
|
35
|
-
)
|
|
36
|
-
.fail(
|
|
37
|
-
function (result) {
|
|
38
|
-
console.log('In doVvClientRequest - return fail from __acquireRefreshToken');
|
|
39
|
-
throw new Error('Unable to optain Authorization, error: ' + result);
|
|
40
|
-
}
|
|
41
|
-
);
|
|
42
|
-
} else {
|
|
43
|
-
return this.__doVvClientCallRequest(url, options, params, data, buffer);
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
httpHelper.prototype.__doVvClientCallRequest = function (url, options, params, data, buffer, retries) {
|
|
48
|
-
var self = this;
|
|
49
|
-
|
|
50
|
-
var deferred = this.Q.defer();
|
|
51
|
-
|
|
52
|
-
var vvClientRequestCallback = function (error, response, responseData) {
|
|
53
|
-
if (error) {
|
|
54
|
-
console.log('In __doVvClientCallRequest - vvClientRequestCallback with error condition');
|
|
55
|
-
deferred.reject(new Error(error));
|
|
56
|
-
} else {
|
|
57
|
-
let parsedData;
|
|
58
|
-
|
|
59
|
-
if (typeof (responseData) === 'string') {
|
|
60
|
-
parsedData = JSON.parse(responseData);
|
|
61
|
-
} else {
|
|
62
|
-
parsedData = responseData;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (response.statusCode === 401 || response.statusCode === 403) {
|
|
66
|
-
self._sessionToken.isAuthenticated = false;
|
|
67
|
-
|
|
68
|
-
deferred.reject(new Error(parsedData.meta));
|
|
69
|
-
} else if (response.status == 429 && parsedData.meta && parsedData.meta.status) {
|
|
70
|
-
var timeout = self.__getRetryDelay(parsedData.meta['retryTime']);
|
|
71
|
-
if (retries && retries > self._maxRetries) {
|
|
72
|
-
deferred.reject(new Error(parsedData.meta));
|
|
73
|
-
} else {
|
|
74
|
-
console.log('Timed Out: Retrying in ' + timeout + ' ms.');
|
|
75
|
-
retries = retries ? retries + 1 : 1;
|
|
76
|
-
console.log(self._maxRetries - retries + ' retries left.');
|
|
77
|
-
|
|
78
|
-
setTimeout(() => {
|
|
79
|
-
self.__doVvClientCallRequest(url, options, params, data, buffer, retries)
|
|
80
|
-
.then(result => deferred.resolve(result))
|
|
81
|
-
.catch(result => deferred.reject(result))
|
|
82
|
-
}, timeout)
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
if (typeof responseData == "object" && responseData != null) {
|
|
87
|
-
//console.log('In vvClientRequestCallback with success: ' + JSON.stringify(responseData));
|
|
88
|
-
} else {
|
|
89
|
-
//console.log('In vvClientRequestCallback with success: ' + responseData);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
deferred.resolve(responseData);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
// stream callback
|
|
98
|
-
var vvClientRequestCallbackStream = function (responseData, code, message) {
|
|
99
|
-
var sd = require('string_decoder');
|
|
100
|
-
var os = require('os');
|
|
101
|
-
var decoder = new sd.StringDecoder();
|
|
102
|
-
if (code == 200) {
|
|
103
|
-
deferred.resolve(responseData);
|
|
104
|
-
} else if (code == 429) {
|
|
105
|
-
var timeout = self.__getRetryDelay(responseData['retryTime']);
|
|
106
|
-
if (retries && retries > self._maxRetries) {
|
|
107
|
-
deferred.reject(new Error(responseData));
|
|
108
|
-
} else {
|
|
109
|
-
console.log('Timed Out: Retrying in ' + timeout + ' ms.');
|
|
110
|
-
retries = retries ? retries + 1 : 1;
|
|
111
|
-
console.log(self._maxRetries - retries + ' retries left.');
|
|
112
|
-
|
|
113
|
-
setTimeout(() => {
|
|
114
|
-
self.__doVvClientCallRequest(url, options, params, responseData, buffer, retries)
|
|
115
|
-
.then(result => deferred.resolve(result))
|
|
116
|
-
.catch(result => deferred.reject(result))
|
|
117
|
-
}, timeout);
|
|
118
|
-
}
|
|
119
|
-
} else {
|
|
120
|
-
deferred.reject(new Error('Response Code: ' + code + os.EOL + 'Response Message: ' + message + os.EOL + decoder.write(data)));
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
if (options.method === 'GET') {
|
|
125
|
-
this.httpGet(url, params, vvClientRequestCallback);
|
|
126
|
-
} else if (options.method === 'GETSTREAM') {
|
|
127
|
-
this.httpGetStream(url, params, vvClientRequestCallbackStream);
|
|
128
|
-
} else if (options.method === 'POST') {
|
|
129
|
-
this.httpPost(url, params, data, vvClientRequestCallback);
|
|
130
|
-
} else if (options.method === 'POSTSTREAM') {
|
|
131
|
-
this.httpPostStream(url, params, data, buffer, vvClientRequestCallback)
|
|
132
|
-
} else if (options.method === 'PUT') {
|
|
133
|
-
this.httpPut(url, params, data, vvClientRequestCallback);
|
|
134
|
-
} else if (options.method === 'PUTSTREAM') {
|
|
135
|
-
this.httpPutStream(url, params, data, buffer, vvClientRequestCallback)
|
|
136
|
-
} else if (options.method === 'DELETE') {
|
|
137
|
-
this.httpDelete(url, params, vvClientRequestCallback);
|
|
138
|
-
} else {
|
|
139
|
-
throw new Error('http request method name error');
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return deferred.promise;
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
httpHelper.prototype.__makeRequest = function (url, options, requestCallback) {
|
|
146
|
-
options.headers["Authorization"] = 'Bearer ' + this._sessionToken.accessToken;
|
|
147
|
-
|
|
148
|
-
console.log("In __makeRequest - Performing request to url:" + url);
|
|
149
|
-
|
|
150
|
-
this.nodeJsRequest(options,
|
|
151
|
-
function (error, response, body) {
|
|
152
|
-
requestCallback(error, response, body);
|
|
153
|
-
}
|
|
154
|
-
);
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
// request for stream
|
|
158
|
-
httpHelper.prototype.__makeStreamRequest = function (url, options, requestCallback) {
|
|
159
|
-
options.headers["Authorization"] = 'Bearer ' + this._sessionToken.accessToken;
|
|
160
|
-
options.headers["Content-Type"] = 'application/json; charset=utf-8';
|
|
161
|
-
|
|
162
|
-
console.log("In __makeStreamRequest - Performing request to url:" + url);
|
|
163
|
-
var fs = require('fs');
|
|
164
|
-
var stream = require('stream');
|
|
165
|
-
var bf = require('buffer');
|
|
166
|
-
|
|
167
|
-
var Duplex = new stream.Duplex;
|
|
168
|
-
var requestDefer = this.Q.defer();
|
|
169
|
-
var request = this.nodeJsRequest(options, (error, response, body) => {
|
|
170
|
-
error ? requestDefer.resolve(error) : requestDefer.resolve(body);
|
|
171
|
-
});
|
|
172
|
-
Duplex.Readable = request;
|
|
173
|
-
var bufs = [];
|
|
174
|
-
|
|
175
|
-
Duplex.Readable.on('data', function (chunk) {
|
|
176
|
-
console.log('got %d bytes of data', chunk.length);
|
|
177
|
-
bufs.push(chunk);
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
Duplex.Readable.on('end', function () {
|
|
181
|
-
console.log('end of stream');
|
|
182
|
-
var buf = new bf.Buffer.concat(bufs);
|
|
183
|
-
|
|
184
|
-
if (Duplex.Readable.response) {
|
|
185
|
-
if (Duplex.Readable.response.headers['content-type'] && Duplex.Readable.response.headers['content-type'].indexOf("application/json") !== -1) {
|
|
186
|
-
requestDefer.promise.then(bodyResponse => {
|
|
187
|
-
var body = JSON.parse(bodyResponse);
|
|
188
|
-
if (body.meta && body.meta.status) {
|
|
189
|
-
requestCallback(body.meta, body.meta.status, body.meta.message);
|
|
190
|
-
} else {
|
|
191
|
-
throw new Error(Duplex.Readable.response.statusMessage);
|
|
192
|
-
}
|
|
193
|
-
})
|
|
194
|
-
.catch(error => {
|
|
195
|
-
var msg = 'Unexpected stream response termination';
|
|
196
|
-
requestCallback(buf, 500, msg);
|
|
197
|
-
});
|
|
198
|
-
} else {
|
|
199
|
-
requestCallback(buf, Duplex.Readable.response.statusCode, Duplex.Readable.response.statusMessage);
|
|
200
|
-
}
|
|
201
|
-
} else {
|
|
202
|
-
var msg = 'Unexpected stream response termination';
|
|
203
|
-
requestCallback(buf, 500, msg);
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
// request for post stream
|
|
209
|
-
httpHelper.prototype.__makePostStreamRequest = function (url, options, buffer, requestCallback) {
|
|
210
|
-
console.log("In __makeRequest - Performing request to url:" + url);
|
|
211
|
-
var streamRequest = require('request');
|
|
212
|
-
|
|
213
|
-
var headers = {
|
|
214
|
-
"Authorization": 'Bearer ' + this._sessionToken.accessToken,
|
|
215
|
-
"Content-Type": "multipart/form-data"
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
var multipart = [];
|
|
219
|
-
for (var key in options.json) {
|
|
220
|
-
if (options.json.hasOwnProperty(key)) {
|
|
221
|
-
var obj = {
|
|
222
|
-
'Content-Disposition': 'form-Data; name="' + key + '"',
|
|
223
|
-
body: options.json[key]
|
|
224
|
-
}
|
|
225
|
-
multipart.push(obj);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
//Add file(s) to multipart data
|
|
230
|
-
if (Buffer.isBuffer(buffer)) {
|
|
231
|
-
//Single file
|
|
232
|
-
var filename = "file";
|
|
233
|
-
if (options && options.json && options.json.fileName) {
|
|
234
|
-
filename = options.json.fileName;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
var filePart = {
|
|
238
|
-
'Content-Disposition': 'form-data; name="fileUpload"; filename="' + filename + '"',
|
|
239
|
-
body: buffer,
|
|
240
|
-
}
|
|
241
|
-
multipart.push(filePart);
|
|
242
|
-
} else if (Array.isArray(buffer)) {
|
|
243
|
-
//Multiple files - Expect an array of objects with a "buffer" and "filename" properties
|
|
244
|
-
for (var i = 0; i < buffer.length; i++) {
|
|
245
|
-
var fileInfoObj = buffer[i];
|
|
246
|
-
if (Buffer.isBuffer(fileInfoObj.buffer)) {
|
|
247
|
-
var fileName = `file${i}`;
|
|
248
|
-
if (fileInfoObj.fileName) {
|
|
249
|
-
fileName = fileInfoObj.fileName;
|
|
250
|
-
}
|
|
251
|
-
var filePart = {
|
|
252
|
-
'Content-Disposition': 'form-data; name="fileUpload"; filename="' + fileName + '"',
|
|
253
|
-
body: fileInfoObj.buffer,
|
|
254
|
-
}
|
|
255
|
-
multipart.push(filePart);
|
|
256
|
-
} else {
|
|
257
|
-
throw new Error(`Invalid 'buffer' property found on fileObj at index ${i}`);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
else {
|
|
262
|
-
throw new Error('Expecting Buffer');
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
//Make request
|
|
266
|
-
streamRequest({
|
|
267
|
-
method: options.method,
|
|
268
|
-
preambleCRLF: true,
|
|
269
|
-
postambleCRLF: true,
|
|
270
|
-
uri: url,
|
|
271
|
-
multipart: multipart,
|
|
272
|
-
headers: headers
|
|
273
|
-
},
|
|
274
|
-
function (error, response, body) {
|
|
275
|
-
return requestCallback(error, response, body);
|
|
276
|
-
}
|
|
277
|
-
);
|
|
278
|
-
};
|
|
279
|
-
|
|
280
|
-
httpHelper.prototype.request = function (httpVerb, url, params, data) {
|
|
281
|
-
var options = { method: 'GET' };
|
|
282
|
-
|
|
283
|
-
console.log("In __makeStreamRequest - Performing request to url:" + url);
|
|
284
|
-
|
|
285
|
-
if (httpVerb.toLowerCase() === 'post') {
|
|
286
|
-
options.method = 'POST';
|
|
287
|
-
} else if (httpVerb.toLowerCase() === 'put') {
|
|
288
|
-
options.method = 'PUT';
|
|
289
|
-
} else if (httpVerb.toLowerCase() === 'delete') {
|
|
290
|
-
options.method = 'DELETE';
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
return this.doVvClientRequest(url, options, params, data);
|
|
294
|
-
};
|
|
295
|
-
|
|
296
|
-
httpHelper.prototype.httpGet = function (url, params, requestCallback) {
|
|
297
|
-
var self = this;
|
|
298
|
-
|
|
299
|
-
var headers = {};
|
|
300
|
-
|
|
301
|
-
var options = { method: 'GET', uri: url, qs: params || {}, headers: headers, json: null };
|
|
302
|
-
|
|
303
|
-
if (this._sessionToken.accessToken == null) {
|
|
304
|
-
this.__acquireNewTokenWithRequest(options, requestCallback);
|
|
305
|
-
} else {
|
|
306
|
-
this.__makeRequest(url, options, requestCallback);
|
|
307
|
-
}
|
|
308
|
-
};
|
|
309
|
-
|
|
310
|
-
httpHelper.prototype.httpGetStream = function (url, params, requestCallback) {
|
|
311
|
-
var self = this;
|
|
312
|
-
|
|
313
|
-
var headers = {};
|
|
314
|
-
|
|
315
|
-
var options = { method: 'GET', uri: url, qs: params || {}, headers: headers, json: null };
|
|
316
|
-
|
|
317
|
-
if (this._sessionToken.accessToken == null) {
|
|
318
|
-
this.__acquireNewTokenWithRequest(options, requestCallback);
|
|
319
|
-
} else {
|
|
320
|
-
this.__makeStreamRequest(url, options, requestCallback);
|
|
321
|
-
}
|
|
322
|
-
};
|
|
323
|
-
|
|
324
|
-
httpHelper.prototype.httpPostStream = function (url, params, data, buffer, requestCallback) {
|
|
325
|
-
var self = this;
|
|
326
|
-
var headers = {};
|
|
327
|
-
var options = { method: 'POST', uri: url, qs: params || {}, json: data, headers: headers };
|
|
328
|
-
|
|
329
|
-
if (this._sessionToken.accessToken == null) {
|
|
330
|
-
this.__acquireNewTokenWithRequest(options, requestCallback);
|
|
331
|
-
} else {
|
|
332
|
-
this.__makePostStreamRequest(url, options, buffer, requestCallback);
|
|
333
|
-
}
|
|
334
|
-
};
|
|
335
|
-
|
|
336
|
-
httpHelper.prototype.httpPutStream = function (url, params, data, buffer, requestCallback) {
|
|
337
|
-
var self = this;
|
|
338
|
-
var headers = {};
|
|
339
|
-
var options = { method: 'PUT', uri: url, qs: params || {}, json: data, headers: headers };
|
|
340
|
-
|
|
341
|
-
if (this._sessionToken.accessToken == null) {
|
|
342
|
-
this.__acquireNewTokenWithRequest(options, requestCallback);
|
|
343
|
-
} else {
|
|
344
|
-
this.__makePostStreamRequest(url, options, buffer, requestCallback);
|
|
345
|
-
}
|
|
346
|
-
};
|
|
347
|
-
|
|
348
|
-
httpHelper.prototype.httpPost = function (url, params, data, requestCallback) {
|
|
349
|
-
var self = this;
|
|
350
|
-
|
|
351
|
-
var headers = {};
|
|
352
|
-
|
|
353
|
-
var options = { method: 'POST', uri: url, qs: params || {}, json: data, headers: headers };
|
|
354
|
-
|
|
355
|
-
if (this._sessionToken.accessToken == null) {
|
|
356
|
-
this.__acquireNewTokenWithRequest(options, requestCallback);
|
|
357
|
-
} else {
|
|
358
|
-
this.__makeRequest(url, options, requestCallback);
|
|
359
|
-
}
|
|
360
|
-
};
|
|
361
|
-
|
|
362
|
-
httpHelper.prototype.httpPut = function (url, params, data, requestCallback) {
|
|
363
|
-
var self = this;
|
|
364
|
-
|
|
365
|
-
var headers = {};
|
|
366
|
-
|
|
367
|
-
var options = { method: 'PUT', uri: url, qs: params || {}, json: data, headers: headers };
|
|
368
|
-
|
|
369
|
-
if (this._sessionToken.accessToken == null) {
|
|
370
|
-
this.__acquireNewTokenWithRequest(options, requestCallback);
|
|
371
|
-
} else {
|
|
372
|
-
this.__makeRequest(url, options, requestCallback);
|
|
373
|
-
}
|
|
374
|
-
};
|
|
375
|
-
|
|
376
|
-
httpHelper.prototype.httpDelete = function (url, params, requestCallback) {
|
|
377
|
-
var self = this;
|
|
378
|
-
|
|
379
|
-
var headers = {};
|
|
380
|
-
|
|
381
|
-
var options = { method: 'DELETE', uri: url, qs: params || {}, json: null, headers: headers };
|
|
382
|
-
|
|
383
|
-
if (this._sessionToken.accessToken == null) {
|
|
384
|
-
this.__acquireNewTokenWithRequest(options, requestCallback);
|
|
385
|
-
} else {
|
|
386
|
-
this.__makeRequest(url, options, requestCallback);
|
|
387
|
-
}
|
|
388
|
-
};
|
|
389
|
-
|
|
390
|
-
httpHelper.prototype.__acquireNewTokenWithRequest = function (options, requestCallback) {
|
|
391
|
-
var attemptCount = 0;
|
|
392
|
-
this._sessionToken.isAuthenticated = false;
|
|
393
|
-
|
|
394
|
-
var vvAuthorize = new common.authorize();
|
|
395
|
-
|
|
396
|
-
this.Q
|
|
397
|
-
.when(
|
|
398
|
-
vvAuthorize.reacquireSecurityToken(this._sessionToken)
|
|
399
|
-
)
|
|
400
|
-
.then(
|
|
401
|
-
function (result) {
|
|
402
|
-
|
|
403
|
-
options.headers["Authorization"] = 'Bearer ' + this._sessionToken.accessToken;
|
|
404
|
-
|
|
405
|
-
this.nodeJsRequest(options, function (error, response, body) {
|
|
406
|
-
requestCallback(error, response, body);
|
|
407
|
-
}
|
|
408
|
-
);
|
|
409
|
-
}
|
|
410
|
-
)
|
|
411
|
-
.fail(
|
|
412
|
-
function (tokenError) {
|
|
413
|
-
vvAuthorize.acquireSecurityToken(this._sessionToken)
|
|
414
|
-
}
|
|
415
|
-
);
|
|
416
|
-
};
|
|
417
|
-
|
|
418
|
-
httpHelper.prototype.__acquireRefreshToken = function () {
|
|
419
|
-
var attemptCount = 0;
|
|
420
|
-
this._sessionToken.isAuthenticated = false;
|
|
421
|
-
|
|
422
|
-
var deferred = this.Q.defer();
|
|
423
|
-
|
|
424
|
-
var vvAuthorize = new common.authorize();
|
|
425
|
-
|
|
426
|
-
this.Q
|
|
427
|
-
.when(
|
|
428
|
-
vvAuthorize.acquireRefreshToken(this._sessionToken)
|
|
429
|
-
)
|
|
430
|
-
.then(
|
|
431
|
-
function (result) {
|
|
432
|
-
deferred.resolve();
|
|
433
|
-
}
|
|
434
|
-
)
|
|
435
|
-
.fail(
|
|
436
|
-
function (result) {
|
|
437
|
-
this.Q
|
|
438
|
-
.when(
|
|
439
|
-
vvAuthorize.reacquireSecurityToken(this._sessionToken)
|
|
440
|
-
)
|
|
441
|
-
.then(
|
|
442
|
-
deferred.resolve(result)
|
|
443
|
-
)
|
|
444
|
-
.fail(
|
|
445
|
-
deferred.reject(result)
|
|
446
|
-
);
|
|
447
|
-
}
|
|
448
|
-
);
|
|
449
|
-
|
|
450
|
-
return deferred.promise;
|
|
451
|
-
};
|
|
452
|
-
|
|
453
|
-
httpHelper.prototype.__recursiveAttemptAcquireToken = function (options, requestCallback, attemptCount) {
|
|
454
|
-
var vvAuthorize = new common.authorize();
|
|
455
|
-
|
|
456
|
-
this.Q
|
|
457
|
-
.when(
|
|
458
|
-
vvAuthorize.reacquireSecurityToken(this._sessionToken))
|
|
459
|
-
.then(function (result) {
|
|
460
|
-
var sessionToken = result;
|
|
461
|
-
|
|
462
|
-
options.headers["Authorization"] = 'Bearer ' + this._sessionToken.accessToken;
|
|
463
|
-
|
|
464
|
-
this.nodeJsRequest(options, function (error, response, body) {
|
|
465
|
-
requestCallback(error, response, body);
|
|
466
|
-
});
|
|
467
|
-
})
|
|
468
|
-
.fail(function (tokenError) {
|
|
469
|
-
if (attemptCount < 6) {
|
|
470
|
-
attemptCount++;
|
|
471
|
-
this.__recursiveAttemptAcquireToken(options, requestCallback, attemptCount);
|
|
472
|
-
}
|
|
473
|
-
});
|
|
474
|
-
};
|
|
475
|
-
|
|
476
|
-
httpHelper.prototype.getUrl = function (resourceUrl) {
|
|
477
|
-
return this._sessionToken.baseUrl + this._sessionToken.apiUrl + resourceUrl;
|
|
478
|
-
};
|
|
479
|
-
|
|
480
|
-
httpHelper.prototype.__getRetryDelay = function (retryTime) {
|
|
481
|
-
var delay = 10;
|
|
482
|
-
if (retryTime && !isNaN(Date.parse(retryTime))) {
|
|
483
|
-
var now = new Date();
|
|
484
|
-
delay = Date.parse(retryTime) - now.getTime();
|
|
485
|
-
if (delay < 0) {
|
|
486
|
-
delay *= -1;
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
return delay;
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
return httpHelper;
|
|
493
|
-
})();
|
|
494
|
-
common.httpHelper = httpHelper;
|
|
495
|
-
|
|
496
|
-
var sessionToken = (function () {
|
|
497
|
-
function sessionToken() {
|
|
498
|
-
this.isAuthenticated = false;
|
|
499
|
-
this.apiUrl = null;
|
|
500
|
-
this.baseUrl = null;
|
|
501
|
-
this.authenticationUrl = null;
|
|
502
|
-
this.customerAlias = null;
|
|
503
|
-
this.databaseAlias = null;
|
|
504
|
-
this.expirationDate = null;
|
|
505
|
-
this.accessToken = null
|
|
506
|
-
this.tokenType = null;
|
|
507
|
-
this.refreshToken = null;
|
|
508
|
-
this.expiresIn = 0;
|
|
509
|
-
this.clientId = null;
|
|
510
|
-
this.clientSecret = null;
|
|
511
|
-
this.userId = null;
|
|
512
|
-
this.password = null;
|
|
513
|
-
this.audience = null;
|
|
514
|
-
|
|
515
|
-
sessionToken.prototype.createCopy = function () {
|
|
516
|
-
var newSession = new sessionToken();
|
|
517
|
-
newSession.isAuthenticated = this.isAuthenticated;
|
|
518
|
-
newSession.apiUrl = this.apiUrl;
|
|
519
|
-
newSession.baseUrl = this.baseUrl;
|
|
520
|
-
newSession.authenticationUrl = this.authenticationUrl;
|
|
521
|
-
newSession.customerAlias = this.customerAlias;
|
|
522
|
-
newSession.databaseAlias = this.databaseAlias;
|
|
523
|
-
newSession.expirationDate = this.expirationDate;
|
|
524
|
-
newSession.accessToken = this.accessToken;
|
|
525
|
-
newSession.tokenType = this.tokenType;
|
|
526
|
-
newSession.refreshToken = this.refreshToken;
|
|
527
|
-
newSession.expiresIn = this.expiresIn;
|
|
528
|
-
newSession.clientId = this.clientId;
|
|
529
|
-
newSession.clientSecret = this.clientSecret;
|
|
530
|
-
newSession.userId = this.userId;
|
|
531
|
-
newSession.password = this.password;
|
|
532
|
-
newSession.audience = this.audience;
|
|
533
|
-
return newSession;
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
sessionToken.prototype.convertToJwt = function (jwt) {
|
|
537
|
-
this.tokenType = 'jwt';
|
|
538
|
-
this.accessToken = jwt["token"];
|
|
539
|
-
this.expirationDate = new Date(jwt["expires"]);
|
|
540
|
-
this.expiresIn = 0;
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
return sessionToken;
|
|
544
|
-
})();
|
|
545
|
-
common.sessionToken = sessionToken;
|
|
546
|
-
|
|
547
|
-
var authorize = (function () {
|
|
548
|
-
function authorize() {
|
|
549
|
-
this.HTTP = require('http');
|
|
550
|
-
this.jsyaml = require('js-yaml');
|
|
551
|
-
this.nodeJsRequest = require('request');
|
|
552
|
-
this.Q = require('q');
|
|
553
|
-
this.fs = require('fs');
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
authorize.prototype.acquireSecurityToken = function (clientId, clientSecret, userId, password, audience, baseUrl, apiUrl, customerAlias, databaseAlias, authenticationUrl) {
|
|
557
|
-
var self = this;
|
|
558
|
-
|
|
559
|
-
var deferred = this.Q.defer();
|
|
560
|
-
|
|
561
|
-
this.Q
|
|
562
|
-
.when(
|
|
563
|
-
this.__getToken(
|
|
564
|
-
clientId,
|
|
565
|
-
clientSecret,
|
|
566
|
-
userId,
|
|
567
|
-
password,
|
|
568
|
-
audience,
|
|
569
|
-
baseUrl,
|
|
570
|
-
customerAlias,
|
|
571
|
-
databaseAlias,
|
|
572
|
-
authenticationUrl,
|
|
573
|
-
true)
|
|
574
|
-
)
|
|
575
|
-
.then(function (sessionToken) {
|
|
576
|
-
|
|
577
|
-
console.log('acquireSecurityToken Success');
|
|
578
|
-
|
|
579
|
-
if (typeof (sessionToken) != 'undefined' && sessionToken != null) {
|
|
580
|
-
sessionToken.baseUrl = baseUrl;
|
|
581
|
-
sessionToken.apiUrl = apiUrl;
|
|
582
|
-
sessionToken.authenticationUrl = authenticationUrl;
|
|
583
|
-
sessionToken.customerAlias = customerAlias;
|
|
584
|
-
sessionToken.databaseAlias = databaseAlias;
|
|
585
|
-
sessionToken.clientId = clientId;
|
|
586
|
-
sessionToken.clientSecret = clientSecret;
|
|
587
|
-
sessionToken.userId = userId;
|
|
588
|
-
sessionToken.password = password;
|
|
589
|
-
sessionToken.audience = audience;
|
|
590
|
-
sessionToken.isAuthenticated = true;
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
deferred.resolve(sessionToken);
|
|
594
|
-
})
|
|
595
|
-
.fail(function (error) {
|
|
596
|
-
console.log('acquireSecurityToken Failed');
|
|
597
|
-
|
|
598
|
-
deferred.reject(new Error(error));
|
|
599
|
-
});
|
|
600
|
-
|
|
601
|
-
return deferred.promise;
|
|
602
|
-
};
|
|
603
|
-
|
|
604
|
-
authorize.prototype.acquireJwt = function (jwt, baseUrl, apiUrl, authenticationUrl, customerAlias, databaseAlias) {
|
|
605
|
-
var self = this;
|
|
606
|
-
|
|
607
|
-
var deferred = this.Q.defer();
|
|
608
|
-
|
|
609
|
-
this.Q
|
|
610
|
-
.when(
|
|
611
|
-
this.__getJwt(
|
|
612
|
-
jwt,
|
|
613
|
-
baseUrl,
|
|
614
|
-
customerAlias,
|
|
615
|
-
databaseAlias,
|
|
616
|
-
authenticationUrl,
|
|
617
|
-
true)
|
|
618
|
-
)
|
|
619
|
-
.then(function (sessionToken) {
|
|
620
|
-
|
|
621
|
-
console.log('acquireJwt Success');
|
|
622
|
-
|
|
623
|
-
if (typeof (sessionToken) != 'undefined' && sessionToken != null) {
|
|
624
|
-
sessionToken.baseUrl = baseUrl;
|
|
625
|
-
sessionToken.apiUrl = apiUrl;
|
|
626
|
-
sessionToken.authenticationUrl = authenticationUrl;
|
|
627
|
-
sessionToken.customerAlias = customerAlias;
|
|
628
|
-
sessionToken.databaseAlias = databaseAlias;
|
|
629
|
-
// sessionToken.clientId = clientId;
|
|
630
|
-
// sessionToken.clientSecret = clientSecret;
|
|
631
|
-
// sessionToken.userId = userId;
|
|
632
|
-
// sessionToken.password = password;
|
|
633
|
-
sessionToken.isAuthenticated = true;
|
|
634
|
-
sessionToken.isJwt = true;
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
deferred.resolve(sessionToken);
|
|
638
|
-
})
|
|
639
|
-
.fail(function (error) {
|
|
640
|
-
console.log('acquireSecurityToken Failed');
|
|
641
|
-
|
|
642
|
-
deferred.reject(new Error(error));
|
|
643
|
-
});
|
|
644
|
-
|
|
645
|
-
return deferred.promise;
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
authorize.prototype.reacquireSecurityToken = function (sessionToken) {
|
|
649
|
-
var self = this;
|
|
650
|
-
|
|
651
|
-
var deferred = this.Q.defer();
|
|
652
|
-
|
|
653
|
-
if (sessionToken.isJwt) {
|
|
654
|
-
this.Q
|
|
655
|
-
.when(
|
|
656
|
-
this.__getJwt(
|
|
657
|
-
sessionToken.accessToken,
|
|
658
|
-
sessionToken.baseUrl,
|
|
659
|
-
sessionToken.customerAlias,
|
|
660
|
-
sessionToken.databaseAlias,
|
|
661
|
-
sessionToken.authenticationUrl,
|
|
662
|
-
true
|
|
663
|
-
)
|
|
664
|
-
)
|
|
665
|
-
.then(function (sessionToken) {
|
|
666
|
-
console.log('reacquireSecurityToken Success');
|
|
667
|
-
|
|
668
|
-
deferred.resolve(sessionToken);
|
|
669
|
-
})
|
|
670
|
-
.fail(function (error) {
|
|
671
|
-
console.log('acquireSecurityToken Failed');
|
|
672
|
-
|
|
673
|
-
deferred.reject(new Error(error));
|
|
674
|
-
});
|
|
675
|
-
} else {
|
|
676
|
-
this.Q
|
|
677
|
-
.when(
|
|
678
|
-
this.__getToken(
|
|
679
|
-
sessionToken.clientId,
|
|
680
|
-
sessionToken.clientSecret,
|
|
681
|
-
sessionToken.userId,
|
|
682
|
-
sessionToken.password,
|
|
683
|
-
sessionToken.audience,
|
|
684
|
-
sessionToken.baseUrl,
|
|
685
|
-
sessionToken.customerAlias,
|
|
686
|
-
sessionToken.databaseAlias,
|
|
687
|
-
sessionToken.authenticationUrl,
|
|
688
|
-
true)
|
|
689
|
-
)
|
|
690
|
-
.then(function (sessionToken) {
|
|
691
|
-
console.log('reacquireSecurityToken Success');
|
|
692
|
-
|
|
693
|
-
deferred.resolve(sessionToken);
|
|
694
|
-
})
|
|
695
|
-
.fail(function (error) {
|
|
696
|
-
console.log('acquireSecurityToken Failed');
|
|
697
|
-
|
|
698
|
-
deferred.reject(new Error(error));
|
|
699
|
-
});
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
return deferred.promise;
|
|
704
|
-
};
|
|
705
|
-
|
|
706
|
-
authorize.prototype.acquireRefreshToken = function (sessionToken) {
|
|
707
|
-
var self = this;
|
|
708
|
-
|
|
709
|
-
if (sessionToken.isJwt) {
|
|
710
|
-
return this.reacquireSecurityToken(sessionToken);
|
|
711
|
-
} else {
|
|
712
|
-
var claim = {
|
|
713
|
-
grant_type: 'refresh_token',
|
|
714
|
-
refresh_token: sessionToken.refreshToken,
|
|
715
|
-
client_id: sessionToken.clientId,
|
|
716
|
-
client_secret: sessionToken.clientSecret
|
|
717
|
-
};
|
|
718
|
-
|
|
719
|
-
if (sessionToken['audience']) {
|
|
720
|
-
claim['audience'] = sessionToken['audience'];
|
|
721
|
-
}
|
|
722
|
-
|
|
723
|
-
console.log('In authorize.acquireRefreshToken');
|
|
724
|
-
|
|
725
|
-
var getTokenCallback = function (error, response, body) {
|
|
726
|
-
|
|
727
|
-
if (error) {
|
|
728
|
-
sessionToken.isAuthenticated = false;
|
|
729
|
-
|
|
730
|
-
console.log('In authorize.acquireRefreshToken - getTokenCallback, Error from acquiring refreshToken: ' + error);
|
|
731
|
-
logger.error('In authorize.acquireRefreshToken - getTokenCallback, Error from acquiring refreshToken: ' + error);
|
|
732
|
-
|
|
733
|
-
deferred.reject(new Error(error));
|
|
734
|
-
} else {
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
if (response.statusCode == 200) {
|
|
738
|
-
console.log('In authorize.acquireRefreshToken - getTokenCallback, Success');
|
|
739
|
-
|
|
740
|
-
var responseObject = JSON.parse(body);
|
|
741
|
-
sessionToken.accessToken = responseObject.access_token;
|
|
742
|
-
sessionToken.expiresIn = responseObject.expires_in;
|
|
743
|
-
sessionToken.refreshToken = responseObject.refresh_token;
|
|
744
|
-
sessionToken.tokenType = responseObject.token_type;
|
|
745
|
-
|
|
746
|
-
var expireDate = new Date();
|
|
747
|
-
expireDate.setSeconds(expireDate.getSeconds() + sessionToken.expiresIn);
|
|
748
|
-
//var expireSeconds = parseInt((expireDate.getTime() / 1000).toString());
|
|
749
|
-
|
|
750
|
-
sessionToken.expirationDate = expireDate;
|
|
751
|
-
sessionToken.isAuthenticated = true;
|
|
752
|
-
|
|
753
|
-
deferred.resolve(sessionToken);
|
|
754
|
-
} else if (response.statusCode == 401 || response.statusCode == 403 || response.statusCode == 400) {
|
|
755
|
-
sessionToken.isAuthenticated = false;
|
|
756
|
-
logger.info("In authorize.acquireRefreshToken - getTokenCallback, Authorization has been refused for current credentials. " + response.body);
|
|
757
|
-
deferred.reject(new Error("Authorization has been refused for current credentials"));
|
|
758
|
-
} else {
|
|
759
|
-
sessionToken.isAuthenticated = false;
|
|
760
|
-
console.log("In authorize.acquireRefreshToken - getTokenCallback, Unknown response for access token");
|
|
761
|
-
logger.info("In authorize.acquireRefreshToken - getTokenCallback, Unknown response for access token");
|
|
762
|
-
deferred.reject(new Error("Unknown response for access token"));
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
};
|
|
766
|
-
|
|
767
|
-
var urlSecurity = sessionToken.baseUrl + sessionToken.authenticationUrl;
|
|
768
|
-
|
|
769
|
-
console.log('In acquireRefreshToken - authenticationUrl ' + urlSecurity);
|
|
770
|
-
|
|
771
|
-
var options = { method: 'POST', uri: urlSecurity, qs: null, headers: null, form: claim };
|
|
772
|
-
|
|
773
|
-
this.nodeJsRequest(options, function (error, response, body) {
|
|
774
|
-
getTokenCallback(error, response, body);
|
|
775
|
-
});
|
|
776
|
-
|
|
777
|
-
var deferred = this.Q.defer();
|
|
778
|
-
|
|
779
|
-
return deferred.promise;
|
|
780
|
-
}
|
|
781
|
-
|
|
782
|
-
};
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
authorize.prototype.__getToken = function (clientId, clientSecret, userId, password, audience, baseUrl, customerAlias, databaseAlias, authenticationUrl, isDebugMode) {
|
|
786
|
-
console.log('authorize.__getToken is being called');
|
|
787
|
-
|
|
788
|
-
var self = this;
|
|
789
|
-
|
|
790
|
-
var deferred = this.Q.defer();
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
var claim = {
|
|
794
|
-
grant_type: 'password',
|
|
795
|
-
client_id: clientId,
|
|
796
|
-
client_secret: clientSecret,
|
|
797
|
-
username: userId,
|
|
798
|
-
password: password,
|
|
799
|
-
scope: 'vault'
|
|
800
|
-
};
|
|
801
|
-
|
|
802
|
-
var getTokenCallback = function (error, response, body) {
|
|
803
|
-
var sessionToken = new common.sessionToken();
|
|
804
|
-
|
|
805
|
-
if (error) {
|
|
806
|
-
sessionToken.isAuthenticated = false;
|
|
807
|
-
console.log('Error from acquiring token: ' + error);
|
|
808
|
-
deferred.reject(new Error(error));
|
|
809
|
-
} else {
|
|
810
|
-
if (response.statusCode == 200) {
|
|
811
|
-
var responseObject = JSON.parse(body);
|
|
812
|
-
sessionToken.accessToken = responseObject.access_token;
|
|
813
|
-
sessionToken.expiresIn = responseObject.expires_in;
|
|
814
|
-
sessionToken.refreshToken = responseObject.refresh_token;
|
|
815
|
-
sessionToken.tokenType = responseObject.token_type;
|
|
816
|
-
|
|
817
|
-
var expireDate = new Date();
|
|
818
|
-
expireDate.setSeconds(expireDate.getSeconds() + sessionToken.expiresIn);
|
|
819
|
-
//var expireSeconds = parseInt((expireDate.getTime() / 1000).toString());
|
|
820
|
-
|
|
821
|
-
sessionToken.expirationDate = expireDate;
|
|
822
|
-
sessionToken.isAuthenticated = true;
|
|
823
|
-
|
|
824
|
-
deferred.resolve(sessionToken);
|
|
825
|
-
} else if (response.statusCode == 401 || response.statusCode == 403 || response.statusCode == 400) {
|
|
826
|
-
sessionToken.isAuthenticated = false;
|
|
827
|
-
logger.info("Authorization has been refused for current credentials." + response.body);
|
|
828
|
-
deferred.reject(new Error("Authorization has been refused for current credentials"));
|
|
829
|
-
} else {
|
|
830
|
-
sessionToken.isAuthenticated = false;
|
|
831
|
-
console.log("Unknown response for access token");
|
|
832
|
-
deferred.reject(new Error("Unknown response for access token"));
|
|
833
|
-
}
|
|
834
|
-
}
|
|
835
|
-
};
|
|
836
|
-
|
|
837
|
-
var urlSecurity = baseUrl + authenticationUrl;
|
|
838
|
-
|
|
839
|
-
console.log('authenticationUrl ' + urlSecurity);
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
var options = { method: 'POST', uri: urlSecurity, qs: null, headers: null, form: claim };
|
|
843
|
-
|
|
844
|
-
this.nodeJsRequest(options, function (error, response, body) {
|
|
845
|
-
getTokenCallback(error, response, body);
|
|
846
|
-
});
|
|
847
|
-
|
|
848
|
-
return deferred.promise;
|
|
849
|
-
};
|
|
850
|
-
|
|
851
|
-
authorize.prototype.__getJwt = function (jwt, baseUrl, customerAlias, databaseAlias, authenticationUrl, isDebugMode) {
|
|
852
|
-
console.log('authorize.__getJwt is being called');
|
|
853
|
-
|
|
854
|
-
var self = this;
|
|
855
|
-
|
|
856
|
-
var deferred = this.Q.defer();
|
|
857
|
-
|
|
858
|
-
var headers = {
|
|
859
|
-
Authorization: 'Bearer ' + jwt,
|
|
860
|
-
};
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
var getTokenCallback = function (error, response, body) {
|
|
864
|
-
var sessionToken = new common.sessionToken();
|
|
865
|
-
|
|
866
|
-
if (error) {
|
|
867
|
-
sessionToken.isAuthenticated = false;
|
|
868
|
-
console.log('Error from acquiring jwt: ' + error);
|
|
869
|
-
deferred.reject(new Error(error));
|
|
870
|
-
} else {
|
|
871
|
-
if (response.statusCode == 200) {
|
|
872
|
-
var responseObject = JSON.parse(body);
|
|
873
|
-
|
|
874
|
-
sessionToken.accessToken = responseObject.data.token;
|
|
875
|
-
sessionToken.expirationDate = new Date(responseObject.data.expires);
|
|
876
|
-
sessionToken.isAuthenticated = true;
|
|
877
|
-
sessionToken.isJwt = true;
|
|
878
|
-
|
|
879
|
-
deferred.resolve(sessionToken);
|
|
880
|
-
} else if (response.statusCode == 401 || response.statusCode == 403 || response.statusCode == 400) {
|
|
881
|
-
sessionToken.isAuthenticated = false;
|
|
882
|
-
logger.info("Authorization has been refused for current credentials." + response.body);
|
|
883
|
-
deferred.reject(new Error("Authorization has been refused for current credentials"));
|
|
884
|
-
} else {
|
|
885
|
-
sessionToken.isAuthenticated = false;
|
|
886
|
-
console.log("Unknown response for jwt");
|
|
887
|
-
deferred.reject(new Error("Unknown response for jwt"));
|
|
888
|
-
}
|
|
889
|
-
}
|
|
890
|
-
};
|
|
891
|
-
|
|
892
|
-
var urlSecurity = baseUrl + authenticationUrl;
|
|
893
|
-
|
|
894
|
-
console.log('authenticationUrl ' + urlSecurity);
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
var options = { method: 'GET', uri: urlSecurity, qs: null, headers: headers };
|
|
898
|
-
|
|
899
|
-
this.nodeJsRequest(options, function (error, response, body) {
|
|
900
|
-
getTokenCallback(error, response, body);
|
|
901
|
-
});
|
|
902
|
-
|
|
903
|
-
return deferred.promise;
|
|
904
|
-
};
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
return authorize;
|
|
911
|
-
})();
|
|
912
|
-
common.authorize = authorize;
|
|
913
|
-
|
|
914
|
-
(function (services) {
|
|
915
|
-
var apiServiceCoreSettings = (function () {
|
|
916
|
-
function apiServiceCoreSettings() {
|
|
917
|
-
this.VERSION = 'v1.0.0';
|
|
918
|
-
this.ServiceInterface = {};
|
|
919
|
-
this.Signers = {};
|
|
920
|
-
this.XML = {};
|
|
921
|
-
|
|
922
|
-
this.util = new this.services.serviceCoreUtility(this);
|
|
923
|
-
}
|
|
924
|
-
return apiServiceCoreSettings;
|
|
925
|
-
})();
|
|
926
|
-
services.apiServiceCoreSettings = apiServiceCoreSettings;
|
|
927
|
-
|
|
928
|
-
var base64Helper = (function () {
|
|
929
|
-
function base64Helper(serviceCoreUtil) {
|
|
930
|
-
this._serviceCoreUtil = serviceCoreUtil;
|
|
931
|
-
}
|
|
932
|
-
base64Helper.prototype.encode = function (string) {
|
|
933
|
-
return new Buffer(string).toString('base64', null, null);
|
|
934
|
-
};
|
|
935
|
-
|
|
936
|
-
base64Helper.prototype.decode = function (string) {
|
|
937
|
-
return new Buffer(string, 'base64').toString(null, null, null);
|
|
938
|
-
};
|
|
939
|
-
return base64Helper;
|
|
940
|
-
})();
|
|
941
|
-
services.base64Helper = base64Helper;
|
|
942
|
-
|
|
943
|
-
var bufferHelper = (function () {
|
|
944
|
-
function bufferHelper(serviceCoreUtil) {
|
|
945
|
-
this._serviceCoreUtil = serviceCoreUtil;
|
|
946
|
-
}
|
|
947
|
-
bufferHelper.prototype.concat = function (buffers) {
|
|
948
|
-
var length = 0, offset = 0, buffer = null, i;
|
|
949
|
-
|
|
950
|
-
for (i = 0; i < buffers.length; i++) {
|
|
951
|
-
length += buffers[i].length;
|
|
952
|
-
}
|
|
953
|
-
|
|
954
|
-
buffer = new Buffer(length);
|
|
955
|
-
|
|
956
|
-
for (i = 0; i < buffers.length; i++) {
|
|
957
|
-
buffers[i].copy(buffer, offset);
|
|
958
|
-
offset += buffers[i].length;
|
|
959
|
-
}
|
|
960
|
-
|
|
961
|
-
return buffer;
|
|
962
|
-
};
|
|
963
|
-
return bufferHelper;
|
|
964
|
-
})();
|
|
965
|
-
services.bufferHelper = bufferHelper;
|
|
966
|
-
|
|
967
|
-
var cryptoHelper = (function () {
|
|
968
|
-
function cryptoHelper(serviceCoreUtil) {
|
|
969
|
-
this.crc32Table = [
|
|
970
|
-
0x00000000,
|
|
971
|
-
0x77073096,
|
|
972
|
-
0xEE0E612C,
|
|
973
|
-
0x990951BA,
|
|
974
|
-
0x076DC419,
|
|
975
|
-
0x706AF48F,
|
|
976
|
-
0xE963A535,
|
|
977
|
-
0x9E6495A3,
|
|
978
|
-
0x0EDB8832,
|
|
979
|
-
0x79DCB8A4,
|
|
980
|
-
0xE0D5E91E,
|
|
981
|
-
0x97D2D988,
|
|
982
|
-
0x09B64C2B,
|
|
983
|
-
0x7EB17CBD,
|
|
984
|
-
0xE7B82D07,
|
|
985
|
-
0x90BF1D91,
|
|
986
|
-
0x1DB71064,
|
|
987
|
-
0x6AB020F2,
|
|
988
|
-
0xF3B97148,
|
|
989
|
-
0x84BE41DE,
|
|
990
|
-
0x1ADAD47D,
|
|
991
|
-
0x6DDDE4EB,
|
|
992
|
-
0xF4D4B551,
|
|
993
|
-
0x83D385C7,
|
|
994
|
-
0x136C9856,
|
|
995
|
-
0x646BA8C0,
|
|
996
|
-
0xFD62F97A,
|
|
997
|
-
0x8A65C9EC,
|
|
998
|
-
0x14015C4F,
|
|
999
|
-
0x63066CD9,
|
|
1000
|
-
0xFA0F3D63,
|
|
1001
|
-
0x8D080DF5,
|
|
1002
|
-
0x3B6E20C8,
|
|
1003
|
-
0x4C69105E,
|
|
1004
|
-
0xD56041E4,
|
|
1005
|
-
0xA2677172,
|
|
1006
|
-
0x3C03E4D1,
|
|
1007
|
-
0x4B04D447,
|
|
1008
|
-
0xD20D85FD,
|
|
1009
|
-
0xA50AB56B,
|
|
1010
|
-
0x35B5A8FA,
|
|
1011
|
-
0x42B2986C,
|
|
1012
|
-
0xDBBBC9D6,
|
|
1013
|
-
0xACBCF940,
|
|
1014
|
-
0x32D86CE3,
|
|
1015
|
-
0x45DF5C75,
|
|
1016
|
-
0xDCD60DCF,
|
|
1017
|
-
0xABD13D59,
|
|
1018
|
-
0x26D930AC,
|
|
1019
|
-
0x51DE003A,
|
|
1020
|
-
0xC8D75180,
|
|
1021
|
-
0xBFD06116,
|
|
1022
|
-
0x21B4F4B5,
|
|
1023
|
-
0x56B3C423,
|
|
1024
|
-
0xCFBA9599,
|
|
1025
|
-
0xB8BDA50F,
|
|
1026
|
-
0x2802B89E,
|
|
1027
|
-
0x5F058808,
|
|
1028
|
-
0xC60CD9B2,
|
|
1029
|
-
0xB10BE924,
|
|
1030
|
-
0x2F6F7C87,
|
|
1031
|
-
0x58684C11,
|
|
1032
|
-
0xC1611DAB,
|
|
1033
|
-
0xB6662D3D,
|
|
1034
|
-
0x76DC4190,
|
|
1035
|
-
0x01DB7106,
|
|
1036
|
-
0x98D220BC,
|
|
1037
|
-
0xEFD5102A,
|
|
1038
|
-
0x71B18589,
|
|
1039
|
-
0x06B6B51F,
|
|
1040
|
-
0x9FBFE4A5,
|
|
1041
|
-
0xE8B8D433,
|
|
1042
|
-
0x7807C9A2,
|
|
1043
|
-
0x0F00F934,
|
|
1044
|
-
0x9609A88E,
|
|
1045
|
-
0xE10E9818,
|
|
1046
|
-
0x7F6A0DBB,
|
|
1047
|
-
0x086D3D2D,
|
|
1048
|
-
0x91646C97,
|
|
1049
|
-
0xE6635C01,
|
|
1050
|
-
0x6B6B51F4,
|
|
1051
|
-
0x1C6C6162,
|
|
1052
|
-
0x856530D8,
|
|
1053
|
-
0xF262004E,
|
|
1054
|
-
0x6C0695ED,
|
|
1055
|
-
0x1B01A57B,
|
|
1056
|
-
0x8208F4C1,
|
|
1057
|
-
0xF50FC457,
|
|
1058
|
-
0x65B0D9C6,
|
|
1059
|
-
0x12B7E950,
|
|
1060
|
-
0x8BBEB8EA,
|
|
1061
|
-
0xFCB9887C,
|
|
1062
|
-
0x62DD1DDF,
|
|
1063
|
-
0x15DA2D49,
|
|
1064
|
-
0x8CD37CF3,
|
|
1065
|
-
0xFBD44C65,
|
|
1066
|
-
0x4DB26158,
|
|
1067
|
-
0x3AB551CE,
|
|
1068
|
-
0xA3BC0074,
|
|
1069
|
-
0xD4BB30E2,
|
|
1070
|
-
0x4ADFA541,
|
|
1071
|
-
0x3DD895D7,
|
|
1072
|
-
0xA4D1C46D,
|
|
1073
|
-
0xD3D6F4FB,
|
|
1074
|
-
0x4369E96A,
|
|
1075
|
-
0x346ED9FC,
|
|
1076
|
-
0xAD678846,
|
|
1077
|
-
0xDA60B8D0,
|
|
1078
|
-
0x44042D73,
|
|
1079
|
-
0x33031DE5,
|
|
1080
|
-
0xAA0A4C5F,
|
|
1081
|
-
0xDD0D7CC9,
|
|
1082
|
-
0x5005713C,
|
|
1083
|
-
0x270241AA,
|
|
1084
|
-
0xBE0B1010,
|
|
1085
|
-
0xC90C2086,
|
|
1086
|
-
0x5768B525,
|
|
1087
|
-
0x206F85B3,
|
|
1088
|
-
0xB966D409,
|
|
1089
|
-
0xCE61E49F,
|
|
1090
|
-
0x5EDEF90E,
|
|
1091
|
-
0x29D9C998,
|
|
1092
|
-
0xB0D09822,
|
|
1093
|
-
0xC7D7A8B4,
|
|
1094
|
-
0x59B33D17,
|
|
1095
|
-
0x2EB40D81,
|
|
1096
|
-
0xB7BD5C3B,
|
|
1097
|
-
0xC0BA6CAD,
|
|
1098
|
-
0xEDB88320,
|
|
1099
|
-
0x9ABFB3B6,
|
|
1100
|
-
0x03B6E20C,
|
|
1101
|
-
0x74B1D29A,
|
|
1102
|
-
0xEAD54739,
|
|
1103
|
-
0x9DD277AF,
|
|
1104
|
-
0x04DB2615,
|
|
1105
|
-
0x73DC1683,
|
|
1106
|
-
0xE3630B12,
|
|
1107
|
-
0x94643B84,
|
|
1108
|
-
0x0D6D6A3E,
|
|
1109
|
-
0x7A6A5AA8,
|
|
1110
|
-
0xE40ECF0B,
|
|
1111
|
-
0x9309FF9D,
|
|
1112
|
-
0x0A00AE27,
|
|
1113
|
-
0x7D079EB1,
|
|
1114
|
-
0xF00F9344,
|
|
1115
|
-
0x8708A3D2,
|
|
1116
|
-
0x1E01F268,
|
|
1117
|
-
0x6906C2FE,
|
|
1118
|
-
0xF762575D,
|
|
1119
|
-
0x806567CB,
|
|
1120
|
-
0x196C3671,
|
|
1121
|
-
0x6E6B06E7,
|
|
1122
|
-
0xFED41B76,
|
|
1123
|
-
0x89D32BE0,
|
|
1124
|
-
0x10DA7A5A,
|
|
1125
|
-
0x67DD4ACC,
|
|
1126
|
-
0xF9B9DF6F,
|
|
1127
|
-
0x8EBEEFF9,
|
|
1128
|
-
0x17B7BE43,
|
|
1129
|
-
0x60B08ED5,
|
|
1130
|
-
0xD6D6A3E8,
|
|
1131
|
-
0xA1D1937E,
|
|
1132
|
-
0x38D8C2C4,
|
|
1133
|
-
0x4FDFF252,
|
|
1134
|
-
0xD1BB67F1,
|
|
1135
|
-
0xA6BC5767,
|
|
1136
|
-
0x3FB506DD,
|
|
1137
|
-
0x48B2364B,
|
|
1138
|
-
0xD80D2BDA,
|
|
1139
|
-
0xAF0A1B4C,
|
|
1140
|
-
0x36034AF6,
|
|
1141
|
-
0x41047A60,
|
|
1142
|
-
0xDF60EFC3,
|
|
1143
|
-
0xA867DF55,
|
|
1144
|
-
0x316E8EEF,
|
|
1145
|
-
0x4669BE79,
|
|
1146
|
-
0xCB61B38C,
|
|
1147
|
-
0xBC66831A,
|
|
1148
|
-
0x256FD2A0,
|
|
1149
|
-
0x5268E236,
|
|
1150
|
-
0xCC0C7795,
|
|
1151
|
-
0xBB0B4703,
|
|
1152
|
-
0x220216B9,
|
|
1153
|
-
0x5505262F,
|
|
1154
|
-
0xC5BA3BBE,
|
|
1155
|
-
0xB2BD0B28,
|
|
1156
|
-
0x2BB45A92,
|
|
1157
|
-
0x5CB36A04,
|
|
1158
|
-
0xC2D7FFA7,
|
|
1159
|
-
0xB5D0CF31,
|
|
1160
|
-
0x2CD99E8B,
|
|
1161
|
-
0x5BDEAE1D,
|
|
1162
|
-
0x9B64C2B0,
|
|
1163
|
-
0xEC63F226,
|
|
1164
|
-
0x756AA39C,
|
|
1165
|
-
0x026D930A,
|
|
1166
|
-
0x9C0906A9,
|
|
1167
|
-
0xEB0E363F,
|
|
1168
|
-
0x72076785,
|
|
1169
|
-
0x05005713,
|
|
1170
|
-
0x95BF4A82,
|
|
1171
|
-
0xE2B87A14,
|
|
1172
|
-
0x7BB12BAE,
|
|
1173
|
-
0x0CB61B38,
|
|
1174
|
-
0x92D28E9B,
|
|
1175
|
-
0xE5D5BE0D,
|
|
1176
|
-
0x7CDCEFB7,
|
|
1177
|
-
0x0BDBDF21,
|
|
1178
|
-
0x86D3D2D4,
|
|
1179
|
-
0xF1D4E242,
|
|
1180
|
-
0x68DDB3F8,
|
|
1181
|
-
0x1FDA836E,
|
|
1182
|
-
0x81BE16CD,
|
|
1183
|
-
0xF6B9265B,
|
|
1184
|
-
0x6FB077E1,
|
|
1185
|
-
0x18B74777,
|
|
1186
|
-
0x88085AE6,
|
|
1187
|
-
0xFF0F6A70,
|
|
1188
|
-
0x66063BCA,
|
|
1189
|
-
0x11010B5C,
|
|
1190
|
-
0x8F659EFF,
|
|
1191
|
-
0xF862AE69,
|
|
1192
|
-
0x616BFFD3,
|
|
1193
|
-
0x166CCF45,
|
|
1194
|
-
0xA00AE278,
|
|
1195
|
-
0xD70DD2EE,
|
|
1196
|
-
0x4E048354,
|
|
1197
|
-
0x3903B3C2,
|
|
1198
|
-
0xA7672661,
|
|
1199
|
-
0xD06016F7,
|
|
1200
|
-
0x4969474D,
|
|
1201
|
-
0x3E6E77DB,
|
|
1202
|
-
0xAED16A4A,
|
|
1203
|
-
0xD9D65ADC,
|
|
1204
|
-
0x40DF0B66,
|
|
1205
|
-
0x37D83BF0,
|
|
1206
|
-
0xA9BCAE53,
|
|
1207
|
-
0xDEBB9EC5,
|
|
1208
|
-
0x47B2CF7F,
|
|
1209
|
-
0x30B5FFE9,
|
|
1210
|
-
0xBDBDF21C,
|
|
1211
|
-
0xCABAC28A,
|
|
1212
|
-
0x53B39330,
|
|
1213
|
-
0x24B4A3A6,
|
|
1214
|
-
0xBAD03605,
|
|
1215
|
-
0xCDD70693,
|
|
1216
|
-
0x54DE5729,
|
|
1217
|
-
0x23D967BF,
|
|
1218
|
-
0xB3667A2E,
|
|
1219
|
-
0xC4614AB8,
|
|
1220
|
-
0x5D681B02,
|
|
1221
|
-
0x2A6F2B94,
|
|
1222
|
-
0xB40BBE37,
|
|
1223
|
-
0xC30C8EA1,
|
|
1224
|
-
0x5A05DF1B,
|
|
1225
|
-
0x2D02EF8D
|
|
1226
|
-
];
|
|
1227
|
-
this._serviceCoreUtil = serviceCoreUtil;
|
|
1228
|
-
this.cryptoLib = require('crypto');
|
|
1229
|
-
}
|
|
1230
|
-
cryptoHelper.prototype.crc32 = function (data) {
|
|
1231
|
-
var tbl = this.crc32Table;
|
|
1232
|
-
var crc = 0 ^ -1;
|
|
1233
|
-
|
|
1234
|
-
if (typeof data === 'string') {
|
|
1235
|
-
data = new Buffer(data);
|
|
1236
|
-
}
|
|
1237
|
-
|
|
1238
|
-
for (var i = 0; i < data.length; i++) {
|
|
1239
|
-
crc = (crc >>> 8) ^ tbl[(crc ^ data[i]) & 0xFF];
|
|
1240
|
-
}
|
|
1241
|
-
return (crc ^ -1) >>> 0;
|
|
1242
|
-
};
|
|
1243
|
-
|
|
1244
|
-
cryptoHelper.prototype.hmac = function (key, string, digest, fn) {
|
|
1245
|
-
if (!digest)
|
|
1246
|
-
digest = 'binary';
|
|
1247
|
-
if (!fn)
|
|
1248
|
-
fn = 'sha256';
|
|
1249
|
-
return this.cryptoLib.createHmac(fn, key).update(string).digest(digest);
|
|
1250
|
-
};
|
|
1251
|
-
|
|
1252
|
-
cryptoHelper.prototype.md5 = function (data, digest) {
|
|
1253
|
-
if (!digest) {
|
|
1254
|
-
digest = 'binary';
|
|
1255
|
-
}
|
|
1256
|
-
if (typeof data === 'string')
|
|
1257
|
-
data = new Buffer(data);
|
|
1258
|
-
return this.createHash('md5').update(data).digest(digest);
|
|
1259
|
-
};
|
|
1260
|
-
|
|
1261
|
-
cryptoHelper.prototype.sha256 = function (string, digest) {
|
|
1262
|
-
if (!digest) {
|
|
1263
|
-
digest = 'binary';
|
|
1264
|
-
}
|
|
1265
|
-
if (typeof string === 'string')
|
|
1266
|
-
string = new Buffer(string);
|
|
1267
|
-
return this.createHash('sha256').update(string).digest(digest);
|
|
1268
|
-
};
|
|
1269
|
-
|
|
1270
|
-
cryptoHelper.prototype.toHex = function (data) {
|
|
1271
|
-
var out = [];
|
|
1272
|
-
for (var i = 0; i < data.length; i++) {
|
|
1273
|
-
out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2));
|
|
1274
|
-
}
|
|
1275
|
-
return out.join('');
|
|
1276
|
-
};
|
|
1277
|
-
|
|
1278
|
-
cryptoHelper.prototype.createHash = function (algorithm) {
|
|
1279
|
-
return this.cryptoLib.createHash(algorithm);
|
|
1280
|
-
};
|
|
1281
|
-
return cryptoHelper;
|
|
1282
|
-
})();
|
|
1283
|
-
services.cryptoHelper = cryptoHelper;
|
|
1284
|
-
|
|
1285
|
-
var dateHelper = (function () {
|
|
1286
|
-
function dateHelper(serviceCoreUtil) {
|
|
1287
|
-
this._serviceCoreUtil = serviceCoreUtil;
|
|
1288
|
-
}
|
|
1289
|
-
dateHelper.prototype.getDate = function () {
|
|
1290
|
-
return new Date();
|
|
1291
|
-
};
|
|
1292
|
-
|
|
1293
|
-
dateHelper.prototype.iso8601 = function (date) {
|
|
1294
|
-
if (date === undefined) {
|
|
1295
|
-
date = this.getDate();
|
|
1296
|
-
}
|
|
1297
|
-
return date.toISOString();
|
|
1298
|
-
};
|
|
1299
|
-
|
|
1300
|
-
dateHelper.prototype.rfc822 = function (date) {
|
|
1301
|
-
if (date === undefined) {
|
|
1302
|
-
date = this.getDate();
|
|
1303
|
-
}
|
|
1304
|
-
return date.toUTCString();
|
|
1305
|
-
};
|
|
1306
|
-
|
|
1307
|
-
dateHelper.prototype.unixTimestamp = function (date) {
|
|
1308
|
-
if (date === undefined) {
|
|
1309
|
-
date = this.getDate();
|
|
1310
|
-
}
|
|
1311
|
-
return date.getTime() / 1000;
|
|
1312
|
-
};
|
|
1313
|
-
|
|
1314
|
-
dateHelper.prototype.from = function (date) {
|
|
1315
|
-
if (typeof date === 'number') {
|
|
1316
|
-
return new Date(date * 1000);
|
|
1317
|
-
} else {
|
|
1318
|
-
return new Date(date);
|
|
1319
|
-
}
|
|
1320
|
-
};
|
|
1321
|
-
|
|
1322
|
-
dateHelper.prototype.format = function (date, formatter) {
|
|
1323
|
-
if (!formatter)
|
|
1324
|
-
formatter = 'iso8601';
|
|
1325
|
-
return this[formatter](this.from(date));
|
|
1326
|
-
};
|
|
1327
|
-
return dateHelper;
|
|
1328
|
-
})();
|
|
1329
|
-
services.dateHelper = dateHelper;
|
|
1330
|
-
|
|
1331
|
-
var endpoint = (function () {
|
|
1332
|
-
function endpoint(endpoint, util) {
|
|
1333
|
-
if (typeof endpoint === 'undefined' || endpoint === null) {
|
|
1334
|
-
throw new Error('Invalid endpoint: ' + endpoint);
|
|
1335
|
-
} else if (typeof endpoint !== 'string') {
|
|
1336
|
-
return util.copy(endpoint);
|
|
1337
|
-
}
|
|
1338
|
-
|
|
1339
|
-
util.update(this, util.urlParse(endpoint));
|
|
1340
|
-
|
|
1341
|
-
if (this.port) {
|
|
1342
|
-
this.port = parseInt(this.port.toString(), 10);
|
|
1343
|
-
} else {
|
|
1344
|
-
this.port = this.protocol === 'https:' ? 443 : 80;
|
|
1345
|
-
}
|
|
1346
|
-
}
|
|
1347
|
-
return endpoint;
|
|
1348
|
-
})();
|
|
1349
|
-
services.endpoint = endpoint;
|
|
1350
|
-
|
|
1351
|
-
var httpRequest = (function () {
|
|
1352
|
-
function httpRequest(currentEndpoint, region, method, currentHeaders, data, util) {
|
|
1353
|
-
currentEndpoint = new this.services.endpoint(currentEndpoint, util);
|
|
1354
|
-
this.method = method.toUpperCase();
|
|
1355
|
-
this.path = currentEndpoint.path || '/';
|
|
1356
|
-
this.headers = {};
|
|
1357
|
-
for (var headerName in currentHeaders) {
|
|
1358
|
-
this.headers[headerName] = currentHeaders[headerName];
|
|
1359
|
-
}
|
|
1360
|
-
|
|
1361
|
-
var jsonData = '';
|
|
1362
|
-
|
|
1363
|
-
if (typeof data == "object" && data != null) {
|
|
1364
|
-
jsonData = JSON.stringify(data);
|
|
1365
|
-
|
|
1366
|
-
this.body = jsonData || '';
|
|
1367
|
-
} else {
|
|
1368
|
-
this.body = data || '';
|
|
1369
|
-
}
|
|
1370
|
-
|
|
1371
|
-
this.endpoint = currentEndpoint;
|
|
1372
|
-
this.region = region;
|
|
1373
|
-
}
|
|
1374
|
-
httpRequest.prototype.pathname = function () {
|
|
1375
|
-
return this.path.split('?', 1)[0];
|
|
1376
|
-
};
|
|
1377
|
-
|
|
1378
|
-
httpRequest.prototype.search = function () {
|
|
1379
|
-
return this.path.split('?', 2)[1] || '';
|
|
1380
|
-
};
|
|
1381
|
-
return httpRequest;
|
|
1382
|
-
})();
|
|
1383
|
-
services.httpRequest = httpRequest;
|
|
1384
|
-
|
|
1385
|
-
var serviceCoreUtility = (function () {
|
|
1386
|
-
function serviceCoreUtility(apiServiceCoreSettings) {
|
|
1387
|
-
this.abort = {};
|
|
1388
|
-
this.serviceCoreSettings = apiServiceCoreSettings;
|
|
1389
|
-
this.base64 = new base64Helper(this);
|
|
1390
|
-
this.buffer = new bufferHelper(this);
|
|
1391
|
-
this.string = new stringHelper(this);
|
|
1392
|
-
this.date = new dateHelper(this);
|
|
1393
|
-
this.crypto = new cryptoHelper(this);
|
|
1394
|
-
}
|
|
1395
|
-
serviceCoreUtility.prototype.engine = function () {
|
|
1396
|
-
return process.platform + '/' + process.version;
|
|
1397
|
-
};
|
|
1398
|
-
|
|
1399
|
-
serviceCoreUtility.prototype.userAgent = function () {
|
|
1400
|
-
return 'vvclient-nodejs/' + this.serviceCoreSettings.VERSION + ' ' + this.engine();
|
|
1401
|
-
};
|
|
1402
|
-
|
|
1403
|
-
serviceCoreUtility.prototype.uriEscape = function (inputString) {
|
|
1404
|
-
var output = encodeURIComponent(inputString);
|
|
1405
|
-
output = output.replace(/[^A-Za-z0-9_.~\-%]+/g, escape);
|
|
1406
|
-
|
|
1407
|
-
output = output.replace(/[*]/g, function (ch) {
|
|
1408
|
-
return '%' + ch.charCodeAt(0).toString(16).toUpperCase();
|
|
1409
|
-
});
|
|
1410
|
-
|
|
1411
|
-
return output;
|
|
1412
|
-
};
|
|
1413
|
-
|
|
1414
|
-
serviceCoreUtility.prototype.uriEscapePath = function (inputString) {
|
|
1415
|
-
var parts = [];
|
|
1416
|
-
this.arrayEach(inputString.split('/'), function (part) {
|
|
1417
|
-
parts.push(this.uriEscape(part));
|
|
1418
|
-
});
|
|
1419
|
-
return parts.join('/');
|
|
1420
|
-
};
|
|
1421
|
-
|
|
1422
|
-
serviceCoreUtility.prototype.urlParse = function (url) {
|
|
1423
|
-
return require('url').parse(url);
|
|
1424
|
-
};
|
|
1425
|
-
|
|
1426
|
-
serviceCoreUtility.prototype.queryParamsToString = function (params) {
|
|
1427
|
-
var items = [];
|
|
1428
|
-
var escape = this.serviceCoreSettings.util.uriEscape;
|
|
1429
|
-
var sortedKeys = Object.keys(params).sort();
|
|
1430
|
-
|
|
1431
|
-
this.serviceCoreSettings.util.arrayEach(sortedKeys, function (name) {
|
|
1432
|
-
var value = params[name];
|
|
1433
|
-
var ename = escape(name);
|
|
1434
|
-
var result = ename;
|
|
1435
|
-
if (Array.isArray(value)) {
|
|
1436
|
-
var vals = [];
|
|
1437
|
-
this.serviceCoreSettings.util.arrayEach(value, function (item) {
|
|
1438
|
-
vals.push(escape(item));
|
|
1439
|
-
});
|
|
1440
|
-
result = ename + '=' + vals.sort().join('&' + ename + '=');
|
|
1441
|
-
} else if (value !== undefined && value !== null) {
|
|
1442
|
-
result = ename + '=' + escape(value);
|
|
1443
|
-
}
|
|
1444
|
-
items.push(result);
|
|
1445
|
-
});
|
|
1446
|
-
|
|
1447
|
-
return items.join('&');
|
|
1448
|
-
};
|
|
1449
|
-
|
|
1450
|
-
serviceCoreUtility.prototype.readFileSync = function (path) {
|
|
1451
|
-
return require('fs').readFileSync(path, 'utf-8');
|
|
1452
|
-
};
|
|
1453
|
-
|
|
1454
|
-
serviceCoreUtility.prototype.each = function (object, iterFunction) {
|
|
1455
|
-
for (var key in object) {
|
|
1456
|
-
if (object.hasOwnProperty(key)) {
|
|
1457
|
-
var ret = iterFunction.call(this, key, object[key]);
|
|
1458
|
-
if (ret === this.abort)
|
|
1459
|
-
break;
|
|
1460
|
-
}
|
|
1461
|
-
}
|
|
1462
|
-
};
|
|
1463
|
-
|
|
1464
|
-
serviceCoreUtility.prototype.arrayEach = function (array, iterFunction) {
|
|
1465
|
-
for (var idx in array) {
|
|
1466
|
-
if (array.hasOwnProperty(idx)) {
|
|
1467
|
-
var ret = iterFunction.call(this, array[idx], parseInt(idx, 10));
|
|
1468
|
-
if (ret === this.abort)
|
|
1469
|
-
break;
|
|
1470
|
-
}
|
|
1471
|
-
}
|
|
1472
|
-
};
|
|
1473
|
-
|
|
1474
|
-
serviceCoreUtility.prototype.update = function (obj1, obj2) {
|
|
1475
|
-
this.serviceCoreSettings.util.each(obj2, function iterator(key, item) {
|
|
1476
|
-
obj1[key] = item;
|
|
1477
|
-
});
|
|
1478
|
-
return obj1;
|
|
1479
|
-
};
|
|
1480
|
-
|
|
1481
|
-
serviceCoreUtility.prototype.merge = function (obj1, obj2) {
|
|
1482
|
-
return this.update(this.copy(obj1), obj2);
|
|
1483
|
-
};
|
|
1484
|
-
|
|
1485
|
-
serviceCoreUtility.prototype.copy = function (object) {
|
|
1486
|
-
if (object === null || object === undefined)
|
|
1487
|
-
return object;
|
|
1488
|
-
var dupe = {};
|
|
1489
|
-
|
|
1490
|
-
for (var key in object) {
|
|
1491
|
-
dupe[key] = object[key];
|
|
1492
|
-
}
|
|
1493
|
-
return dupe;
|
|
1494
|
-
};
|
|
1495
|
-
|
|
1496
|
-
serviceCoreUtility.prototype.isEmpty = function (obj) {
|
|
1497
|
-
for (var prop in obj) {
|
|
1498
|
-
if (obj.hasOwnProperty(prop)) {
|
|
1499
|
-
return false;
|
|
1500
|
-
}
|
|
1501
|
-
}
|
|
1502
|
-
return true;
|
|
1503
|
-
};
|
|
1504
|
-
|
|
1505
|
-
serviceCoreUtility.prototype.isType = function (obj, type) {
|
|
1506
|
-
if (typeof type === 'function')
|
|
1507
|
-
type = type.name;
|
|
1508
|
-
return Object.prototype.toString.call(obj) === '[object ' + type + ']';
|
|
1509
|
-
};
|
|
1510
|
-
|
|
1511
|
-
serviceCoreUtility.prototype.error = function (err, options) {
|
|
1512
|
-
err.message = err.message || null;
|
|
1513
|
-
|
|
1514
|
-
if (typeof options === 'string') {
|
|
1515
|
-
err.message = options;
|
|
1516
|
-
} else {
|
|
1517
|
-
this.update(err, options);
|
|
1518
|
-
}
|
|
1519
|
-
|
|
1520
|
-
err.name = err.code || 'Error';
|
|
1521
|
-
return err;
|
|
1522
|
-
};
|
|
1523
|
-
|
|
1524
|
-
serviceCoreUtility.prototype.inherit = function (klass, features) {
|
|
1525
|
-
var newObject = null;
|
|
1526
|
-
if (features === undefined) {
|
|
1527
|
-
features = klass;
|
|
1528
|
-
klass = Object;
|
|
1529
|
-
newObject = {};
|
|
1530
|
-
} else {
|
|
1531
|
-
var ctor = function __ctor_wrapper__() {
|
|
1532
|
-
};
|
|
1533
|
-
ctor.prototype = klass.prototype;
|
|
1534
|
-
newObject = new ctor();
|
|
1535
|
-
}
|
|
1536
|
-
|
|
1537
|
-
if (features.constructor === Object) {
|
|
1538
|
-
features.constructor = function () {
|
|
1539
|
-
if (klass !== Object) {
|
|
1540
|
-
return klass.apply(this, arguments);
|
|
1541
|
-
}
|
|
1542
|
-
};
|
|
1543
|
-
}
|
|
1544
|
-
|
|
1545
|
-
features.constructor.prototype = newObject;
|
|
1546
|
-
this.serviceCoreSettings.util.update(features.constructor.prototype, features);
|
|
1547
|
-
features.constructor.__super__ = klass;
|
|
1548
|
-
return features.constructor;
|
|
1549
|
-
};
|
|
1550
|
-
|
|
1551
|
-
serviceCoreUtility.prototype.mixin = function () {
|
|
1552
|
-
var klass = arguments[0];
|
|
1553
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1554
|
-
for (var prop in arguments[i].prototype) {
|
|
1555
|
-
var fn = arguments[i].prototype[prop];
|
|
1556
|
-
if (prop != 'constructor') {
|
|
1557
|
-
klass.prototype[prop] = fn;
|
|
1558
|
-
}
|
|
1559
|
-
}
|
|
1560
|
-
}
|
|
1561
|
-
return klass;
|
|
1562
|
-
};
|
|
1563
|
-
return serviceCoreUtility;
|
|
1564
|
-
})();
|
|
1565
|
-
services.serviceCoreUtility = serviceCoreUtility;
|
|
1566
|
-
|
|
1567
|
-
var stringHelper = (function () {
|
|
1568
|
-
function stringHelper(serviceCoreUtil) {
|
|
1569
|
-
this._serviceCoreUtil = serviceCoreUtil;
|
|
1570
|
-
}
|
|
1571
|
-
stringHelper.prototype.byteLength = function (str) {
|
|
1572
|
-
if (str === null || str === undefined)
|
|
1573
|
-
return 0;
|
|
1574
|
-
if (typeof str === 'string')
|
|
1575
|
-
str = new Buffer(str);
|
|
1576
|
-
|
|
1577
|
-
if (str.length !== undefined) {
|
|
1578
|
-
return str.length;
|
|
1579
|
-
} else if (typeof (str.path) === 'string') {
|
|
1580
|
-
return require('fs').lstatSync(str.path).size;
|
|
1581
|
-
} else {
|
|
1582
|
-
throw this._serviceCoreUtil.error(new Error(), {
|
|
1583
|
-
message: 'Cannot determine length of ' + str,
|
|
1584
|
-
object: str
|
|
1585
|
-
});
|
|
1586
|
-
}
|
|
1587
|
-
};
|
|
1588
|
-
return stringHelper;
|
|
1589
|
-
})();
|
|
1590
|
-
services.stringHelper = stringHelper;
|
|
1591
|
-
|
|
1592
|
-
})(this.services || (this.services = {}));
|
|
1593
|
-
var services = this.services;
|
|
1594
|
-
|
|
1595
|
-
}) (common || (common = {}));
|
|
1596
|
-
|
|
1597
|
-
module.exports = common;
|
|
1598
|
-
|