-
Notifications
You must be signed in to change notification settings - Fork 2
/
http-client.js
57 lines (53 loc) · 1.31 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
const got = require('got');
const sh = require('shorthash');
const crypto = require('crypto');
/**
* @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 {*} formdata
* @property {*} headers
* @property {number} timeout
* @property {boolean} insecure
* @property {boolean} rejectUnauthorized
* @property {QueryParams} qs
*/
/**
*
* @param {Options} options
*/
function httpRequest(options) {
if (!options) {
options = {};
}
if (!options.method) {
options.method = 'GET';
}
options.responseType = 'json';
if (options.body) {
options.json = options.body;
} else {
delete options.json;
}
options.searchParams = options.qs;
delete options.body;
delete options.qs;
if (!options['headers']) {
options['headers'] = {};
}
if (!options['headers']['TxnId']) {
options['headers']['TxnId'] = `${process.env.SERVICE_ID || 'BASE'}_${sh.unique(crypto.createHash('md5').update(Date.now().toString()).digest('hex'))}`;
options['headers']['USER'] = `${process.env.SERVICE_ID || 'BASE'}`;
}
return got(options);
}
module.exports.httpRequest = httpRequest;