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…
	
	Add table
		Add a link
		
	
		Reference in a new issue