forked from oat/in-the-database-2
changed up the zip package, fixed bad zip issues
This commit is contained in:
parent
564d71c48f
commit
88fc57da82
3 changed files with 20 additions and 28 deletions
19
package-lock.json
generated
19
package-lock.json
generated
|
@ -174,15 +174,6 @@
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/mongoose": {
|
|
||||||
"version": "5.10.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/mongoose/-/mongoose-5.10.3.tgz",
|
|
||||||
"integrity": "sha512-VfdnaFImXEJZZiuL2ID/ysZs4inOIjxwrAnUgkr5eum2O2BLhFkiSI0i87AwignVva1qWTJ3H3DyM0Rf4USJ4A==",
|
|
||||||
"requires": {
|
|
||||||
"@types/mongodb": "*",
|
|
||||||
"@types/node": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "14.14.16",
|
"version": "14.14.16",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.16.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.16.tgz",
|
||||||
|
@ -365,6 +356,11 @@
|
||||||
"integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
|
"integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"adm-zip": {
|
||||||
|
"version": "0.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.1.tgz",
|
||||||
|
"integrity": "sha512-a5ABmIFUJ9OxHV5zrXM9Q41JzpRIflFtdgpL4UQM9DsTHHxQzPRaeyAdnMW7kxL0NRWm/NHafJdj6pO+ty7L2g=="
|
||||||
|
},
|
||||||
"ajv": {
|
"ajv": {
|
||||||
"version": "6.12.6",
|
"version": "6.12.6",
|
||||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
||||||
|
@ -1593,11 +1589,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
||||||
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
|
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
|
||||||
},
|
},
|
||||||
"node-stream-zip": {
|
|
||||||
"version": "1.12.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.12.0.tgz",
|
|
||||||
"integrity": "sha512-HZ3XehqShTFj9gHauRJ3Bri9eiCTOII7/crtXzURtT14NdnOFs9Ia5E82W7z3izVBNx760tqwddxrBJVG52Y1Q=="
|
|
||||||
},
|
|
||||||
"on-finished": {
|
"on-finished": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/express": "github:types/express",
|
"@types/express": "github:types/express",
|
||||||
"@types/mongoose": "^5.10.3",
|
"adm-zip": "^0.5.1",
|
||||||
"axios": "^0.20.0",
|
"axios": "^0.20.0",
|
||||||
"connect-mongo": "^3.2.0",
|
"connect-mongo": "^3.2.0",
|
||||||
"dotenv": "^8.2.0",
|
"dotenv": "^8.2.0",
|
||||||
|
@ -21,7 +21,6 @@
|
||||||
"express-session": "^1.17.1",
|
"express-session": "^1.17.1",
|
||||||
"mongoose": "^5.11.8",
|
"mongoose": "^5.11.8",
|
||||||
"mongoose-int32": "^0.4.1",
|
"mongoose-int32": "^0.4.1",
|
||||||
"node-stream-zip": "^1.12.0",
|
|
||||||
"serve-favicon": "^2.5.0",
|
"serve-favicon": "^2.5.0",
|
||||||
"typescript": "^4.1.3",
|
"typescript": "^4.1.3",
|
||||||
"uuid": "^8.3.2",
|
"uuid": "^8.3.2",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { tmpdir } from 'os';
|
import { tmpdir } from 'os';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
const StreamZip = require('node-stream-zip');
|
import * as AdmZip from 'adm-zip';
|
||||||
|
|
||||||
import { parseSM } from './lib/smparse';
|
import { parseSM } from './lib/smparse';
|
||||||
import { File, User } from './schema';
|
import { File, User } from './schema';
|
||||||
|
@ -21,23 +21,21 @@ export function run(app) {
|
||||||
if (file.mimetype !== 'application/zip' && file.mimetype !== 'application/x-zip-compressed') return res.status(400).send('Invalid filetype');
|
if (file.mimetype !== 'application/zip' && file.mimetype !== 'application/x-zip-compressed') return res.status(400).send('Invalid filetype');
|
||||||
|
|
||||||
const dir = tmpdir() + '/' + file.md5;
|
const dir = tmpdir() + '/' + file.md5;
|
||||||
fs.writeFile(dir, file.data, (err) => {
|
fs.writeFile(dir, file.data, async (err) => {
|
||||||
if (err) throw err;
|
if (err) throw err;
|
||||||
|
|
||||||
const zip = new StreamZip({
|
try {
|
||||||
file: dir,
|
const zip = new AdmZip(dir);
|
||||||
storeEntries: true
|
const zipEntries = zip.getEntries();
|
||||||
});
|
|
||||||
|
|
||||||
zip.on('ready', async () => {
|
const smFile: any = Object.values(zipEntries).find((f: any) =>
|
||||||
const smFile = Object.values(zip.entries()).find((f: any) =>
|
!f.isDirectory && (f.entryName.endsWith('.sm'))
|
||||||
!f.isDirectory && (f.name.endsWith('.sm'))
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!smFile) {
|
if (!smFile) {
|
||||||
res.status(400).send('No .sm found');
|
res.status(400).send('No .sm found');
|
||||||
} else {
|
} else {
|
||||||
const data = zip.entryDataSync((smFile as any).name);
|
const data = smFile.getData().toString('utf8');
|
||||||
const chart = parseSM(data.toString());
|
const chart = parseSM(data.toString());
|
||||||
|
|
||||||
logger.info(`${chart.artist} - ${chart.title} was just uploaded`);
|
logger.info(`${chart.artist} - ${chart.title} was just uploaded`);
|
||||||
|
@ -63,11 +61,15 @@ export function run(app) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
zip.close();
|
|
||||||
fs.unlink(dir, (err) => {
|
fs.unlink(dir, (err) => {
|
||||||
if (err) throw err;
|
if (err) throw err;
|
||||||
});
|
});
|
||||||
});
|
} catch(err) {
|
||||||
|
logger.error(err.toString());
|
||||||
|
console.error(err);
|
||||||
|
res.status(400);
|
||||||
|
res.send(err.toString());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
Loading…
Reference in a new issue