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/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": { | ||||
|       "version": "14.14.16", | ||||
|       "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==", | ||||
|       "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": { | ||||
|       "version": "6.12.6", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "2.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ | |||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "@types/express": "github:types/express", | ||||
|     "@types/mongoose": "^5.10.3", | ||||
|     "adm-zip": "^0.5.1", | ||||
|     "axios": "^0.20.0", | ||||
|     "connect-mongo": "^3.2.0", | ||||
|     "dotenv": "^8.2.0", | ||||
|  | @ -21,7 +21,6 @@ | |||
|     "express-session": "^1.17.1", | ||||
|     "mongoose": "^5.11.8", | ||||
|     "mongoose-int32": "^0.4.1", | ||||
|     "node-stream-zip": "^1.12.0", | ||||
|     "serve-favicon": "^2.5.0", | ||||
|     "typescript": "^4.1.3", | ||||
|     "uuid": "^8.3.2", | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { tmpdir } from 'os'; | ||||
| import * as fs from 'fs'; | ||||
| const StreamZip = require('node-stream-zip'); | ||||
| import * as AdmZip from 'adm-zip'; | ||||
| 
 | ||||
| import { parseSM } from './lib/smparse'; | ||||
| 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'); | ||||
| 
 | ||||
| 		const dir = tmpdir() + '/' + file.md5; | ||||
| 		fs.writeFile(dir, file.data, (err) => { | ||||
| 		fs.writeFile(dir, file.data, async (err) => { | ||||
| 			if (err) throw err; | ||||
| 
 | ||||
| 			const zip = new StreamZip({ | ||||
| 				file: dir, | ||||
| 				storeEntries: true | ||||
| 			}); | ||||
| 			try { | ||||
| 				const zip = new AdmZip(dir); | ||||
| 				const zipEntries = zip.getEntries(); | ||||
| 
 | ||||
| 			zip.on('ready', async () => { | ||||
| 				const smFile = Object.values(zip.entries()).find((f: any) => | ||||
| 					!f.isDirectory && (f.name.endsWith('.sm')) | ||||
| 				const smFile: any = Object.values(zipEntries).find((f: any) => | ||||
| 					!f.isDirectory && (f.entryName.endsWith('.sm')) | ||||
| 				); | ||||
| 
 | ||||
| 				if (!smFile) { | ||||
| 					res.status(400).send('No .sm found'); | ||||
| 				} else { | ||||
| 					const data = zip.entryDataSync((smFile as any).name); | ||||
| 					const data = smFile.getData().toString('utf8'); | ||||
| 					const chart = parseSM(data.toString()); | ||||
| 
 | ||||
| 					logger.info(`${chart.artist} - ${chart.title} was just uploaded`); | ||||
|  | @ -63,11 +61,15 @@ export function run(app) { | |||
| 					}); | ||||
| 				} | ||||
| 
 | ||||
| 				zip.close(); | ||||
| 				fs.unlink(dir, (err) => { | ||||
| 					if (err) throw err; | ||||
| 				}); | ||||
| 			}); | ||||
| 			} catch(err) { | ||||
| 				logger.error(err.toString()); | ||||
| 				console.error(err); | ||||
| 				res.status(400); | ||||
| 				res.send(err.toString()); | ||||
| 			} | ||||
| 		}); | ||||
| 	}); | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue