request-to-core.js
1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
const request = require('request');
const logger = require('tektrans-logger');
const coreURLLib = require('../../core-url');
function coreUrl() {
return coreURLLib;
}
function doRequest(corePath, qs, cb) {
const requestOptions = {
url: coreUrl() + corePath,
qs,
};
request(requestOptions, (error, response, body) => {
if (error) {
logger.warn('Error requesting to core', {
requestOptions, error,
});
if (cb) {
cb(error);
}
return;
}
if (response.statusCode !== 200) {
logger.warn(`Core return http status code ${response.statusCode}`, {
requestOptions, httpStatus: response.statusCode,
});
if (cb) {
cb('ER_HTTP_STATUS');
}
return;
}
logger.verbose('Core response on request');
if (cb) {
cb(null, body);
}
});
}
function doRequestAndParse(corePath, qs, cb) {
doRequest(corePath, qs, (error, coreResponseBody) => {
if (error) {
cb(error);
return;
}
let coreResponseObj;
try {
coreResponseObj = JSON.parse(coreResponseBody);
} catch (e) {
logger.warn(
'ER_CORE_RESPONSE_IS_NOT_VALID_JSON',
{
error: e,
core_path: corePath,
qs,
core_response_body: coreResponseBody,
},
);
cb('ER_CORE_RESPONSE_IS_NOT_VALID_JSON');
return;
}
cb(null, coreResponseObj);
});
}
exports.doRequest = doRequest;
exports.doRequestAndParse = doRequestAndParse;