-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathhttp-client.js
59 lines (56 loc) · 1.58 KB
/
http-client.js
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
const got = require('got');
// import got from 'got';
/**
* @typedef {Object} QueryParams
* @property {string} [select]
* @property {string} [sort]
* @property {number} [page]
* @property {number} [count]
* @property {string} filter
*/
/**
* @typedef {Object} Options
* @property {string} url
* @property {string} [method=get]
* @property {*} body
* @property {*} json
* @property {*} formdata
* @property {*} headers
* @property {number} timeout
* @property {boolean} insecure
* @property {boolean} rejectUnauthorized
* @property {QueryParams} qs
*/
/**
*
* @param {Options} options
*/
async function httpRequest(options) {
try {
if (!options) {
options = {};
}
if (!options.method) {
options.method = 'GET';
}
options.responseType = 'json';
// if (!options['headers']) {
// options['headers'] = {};
// }
// if (!options['headers']['TxnId']) {
// options['headers']['TxnId'] = `${sh.unique(crypto.createHash('md5').update(Date.now().toString()).digest('hex'))}`;
// }
// if (!options['headers']['Content-Type']) {
// options['headers']['Content-Type'] = `application/json`;
// }
const resp = await got(options);
return { statusCode: resp.statusCode, body: resp.body };
} catch (err) {
if (err.response) {
throw { statusCode: err.response.statusCode, body: err.response.body };
} else {
throw { statusCode: 500, body: err };
}
}
}
module.exports.httpRequest = httpRequest;