request.js
2.71 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
const MODULE_NAME = 'DUMPER.REQUEST';
const fs = require('fs');
const fsPromise = fs.promises;
const moment = require('moment');
const config = require('komodo-sdk/config');
const logger = require('komodo-sdk/logger');
const path = require('path');
const mkdirIfNotExists = require('../mkdir-if-not-exists');
require('./init');
const vars = require('./vars');
const { baseDumpDir } = vars;
const baseRequestDumpDir = path.join(baseDumpDir, 'request');
if (!fs.existsSync(baseRequestDumpDir)) {
fs.mkdirSync(baseRequestDumpDir, { recursive: true });
}
const doNotDump = !config.partner.dump_request;
module.exports = async (
xid, task, endpointUrl, payload, axiosConfig, axiosResponse, exceptionOnHit,
) => {
if (doNotDump) return;
const {
trx_id: trxId,
} = task;
logger.verbose(`${MODULE_NAME} 826334AF: Dumping`, {
xid,
trxId,
});
const dumpDir = path.join(
baseRequestDumpDir,
moment().format('YYYY-MM-DD'),
);
await mkdirIfNotExists(xid, dumpDir);
const dumpFileName = path.join(
dumpDir,
`trx_${trxId}_${xid}.txt`,
);
const data = `-------- BEGIN OF REQUEST DUMP --------
${moment().format('YYYY-MM-DD HH:mm:ss')}
XID: ${xid}
TRX ID: ${trxId}
TRX DATE: ${task.created}
DESTINATION: ${task.destination}
LOCAL PRODUCT: ${task.product}
REMOTE PRODUCT: ${task.remote_product}
HTTP METHOD: POST
ENDPOINT URL: ${endpointUrl}
HIT CONFIG: ${(axiosConfig && JSON.stringify(axiosConfig, null, 2)) || '-'}
PAYLOAD:
${payload}
RESPONSE HEADERS:
${axiosResponse && axiosResponse.headers && JSON.stringify(axiosResponse.headers)}
HTTP STATUS: ${axiosResponse && axiosResponse.status} ${(axiosResponse && axiosResponse.statusText) || ''}
HIT EXCEPTION: ${
exceptionOnHit
? JSON.stringify({ code: exceptionOnHit.code, message: exceptionOnHit.message }, null, 2)
: '-'
}
RESPONSE BODY:
${
(
axiosResponse && axiosResponse.data
&& (
(typeof axiosResponse.data === 'string' && axiosResponse.data)
|| JSON.stringify(axiosResponse.data, null, 2)
)
) || ''
}
-------- END OF REQUEST DUMP --------
`;
try {
logger.verbose(`${MODULE_NAME} E915E0D8: Writing file`, {
xid,
dumpFileName,
});
await fsPromise.writeFile(dumpFileName, data);
logger.verbose(`${MODULE_NAME} 7275A26C: Writing last dump file`, { xid });
await fsPromise.writeFile(
path.join(baseDumpDir, 'last-request.txt'),
data,
);
} catch (e) {
logger.warn(`${MODULE_NAME} 29212E93: Exception on writing dump file`, {
xid,
eCode: e.code,
eMessage: e.message,
});
}
};