-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathlib.js
77 lines (54 loc) · 1.59 KB
/
lib.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
var httpHeaders = require('know-your-http-well/json/headers.json');
var httpMethods = require('know-your-http-well/json/methods.json');
var httpMediaTypes = require('know-your-http-well/json/media-types.json');
var httpStatusCodes = require('know-your-http-well/json/status-codes.json');
var zlib = require('zlib');
var dictArr = [];
httpHeaders.forEach((v) => {
dictArr.push(v.header.toLowerCase());
});
httpMethods.forEach((v) => {
dictArr.push(v.method.toLowerCase());
})
httpMediaTypes.forEach((v) => {
dictArr.push(v.media_type);
});
httpStatusCodes.forEach((v) => {
dictArr.push(v.code);
});
var newDict = dictArr.join('');
var httpDict = Buffer.from(newDict);
function compressReqCfg(reqConfig, cb) {
let reqCfgRaw = JSON.stringify(reqConfig);
reqCfgRaw = Buffer.from(reqCfgRaw)
zlib.deflate(reqCfgRaw, {
dictionary: httpDict,
level: 9
}, (err, buf) => {
if (err) {
cb(err)
} else {
let reqCfgBase64 = buf.toString('base64');
cb(null, reqCfgBase64);
}
});
}
function decompressCfg(base64Str, cb) {
let reqcfgBuffer = Buffer.from(base64Str, 'base64');
zlib.inflate(reqcfgBuffer, {
dictionary: httpDict,
}, (err, buf) => {
if (err) {
cb(err)
} else {
let reqCfgStr = buf.toString()
let reqcfg = JSON.parse(reqCfgStr);
cb(null, reqcfg);
}
});
}
module.exports = {
httpDict,
compressReqCfg,
decompressCfg
}