-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzip-parser.js
44 lines (36 loc) · 1.29 KB
/
zip-parser.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
const NodeZip = require('node-zip');
module.exports = class ZipParser {
constructor() {
this.mortgageParserJsonix = new (require('./index').MortgageParserJsonix)();
};
parseDataUrl(dataUrl) {
const parts = dataUrl.split(',');
// console.log(parts);
return this.parseZip(Buffer.from(parts[1], 'base64'));
}
parseZip(data) {
const zipFile = new NodeZip(data, {base64: false, checkCRC32: true});
const ret = {errors: []};
try {
if (zipFile.files['request.xml']) {
const requestFile = zipFile.files['request.xml'];
const requestData = requestFile._data;
ret.topZip = zipFile;
for (const key in global.responseMap) {
if (requestData.includes(key.slice(1,))) {
ret.request = this.mortgageParserJsonix.parseRequest(requestData);
return ret;
}
}
ret.request = this.mortgageParserJsonix.parsePayloadRequest(requestData);
return ret;
}
else {
return ret.errors.push('Unable to look file request.xml')
}
}
catch (e) {
ret.errors.push(e);
}
}
};