-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapi_log.js
87 lines (81 loc) · 2.5 KB
/
api_log.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
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
let friendlyHttpStatus = {
'200': 'OK',
'201': 'Created',
'202': 'Accepted',
'203': 'Non-Authoritative Information',
'204': 'No Content',
'205': 'Reset Content',
'206': 'Partial Content',
'300': 'Multiple Choices',
'301': 'Moved Permanently',
'302': 'Found',
'303': 'See Other',
'304': 'Not Modified',
'305': 'Use Proxy',
'306': 'Unused',
'307': 'Temporary Redirect',
'400': 'Bad Request',
'401': 'Unauthorized',
'402': 'Payment Required',
'403': 'Forbidden',
'404': 'Not Found',
'405': 'Method Not Allowed',
'406': 'Not Acceptable',
'407': 'Proxy Authentication Required',
'408': 'Request Timeout',
'409': 'Conflict',
'410': 'Gone',
'411': 'Length Required',
'412': 'Precondition Required',
'413': 'Request Entry Too Large',
'414': 'Request-URI Too Long',
'415': 'Unsupported Media Type',
'416': 'Requested Range Not Satisfiable',
'417': 'Expectation Failed',
'418': 'I\'m a teapot',
'429': 'Too Many Requests',
'500': 'Internal Server Error',
'501': 'Not Implemented',
'502': 'Bad Gateway',
'503': 'Service Unavailable',
'504': 'Gateway Timeout',
'505': 'HTTP Version Not Supported',
};
function to_lower_case(r, data, flags) {
r.sendBuffer(data, flags);
r.done()
let rawTime = r.variables.time_iso8601;
let statusText = friendlyHttpStatus[r.variables.status];
if (statusText == undefined) {
statusText = "OK";
}
let sendData = "";
try {
let tmp = new Uint8Array(data)
const decoder = new TextDecoder('utf-8');
sendData = decoder.decode(tmp);
} catch (err) {
}
try {
let res = {
"path": r.uri + (r.variables.args ? "?" + r.variables.args : ""),
"requestHeaders": JSON.stringify(r.headersIn),
"responseHeaders": JSON.stringify(r.headersOut),
"method": r.method,
"requestPayload": r.requestText || "",
"responsePayload": sendData,
"ip": "0.0.0.0",
"time": "" + (Date.parse(rawTime.split("+")[0]) / 1000),
"statusCode": ("" + r.variables.status),
"type": "HTTP/" + r.httpVersion,
"status": statusText,
"akto_account_id": "1000000",
"akto_vxlan_id": "0",
"is_pending": "false",
"source": "MIRRORING"
}
r.variables.responseBo = JSON.stringify(res);
} catch (err) {
}
}
export default { to_lower_case };