@infurnia/backend-file-storage
Advanced tools
Comparing version 2.13.0 to 3.0.0
56
index.js
@@ -5,2 +5,3 @@ const utils = require('./utils'); | ||
const multerGoogleStorage = require("@infurnia/multer-cloud-storage"); | ||
const multer = require('multer'); | ||
const OK_RESPONSE_TEXT = "OK"; | ||
@@ -24,4 +25,57 @@ const crypto = require('crypto'); | ||
filterFile = function( | ||
upload_type | ||
) { | ||
try { | ||
let filter_mimetype = []; | ||
let filter_extension = []; | ||
if(upload_type == 'image') { | ||
filter_mimetype = ["image/apng", "image/avif", "image/gif", "image/jpeg", "image/png", "image/svg+xml", "image/webp"]; | ||
filter_extension = [".png", ".jpeg", ".jpg", ".avif", ".svg", ".gif", ".webp"]; | ||
} else if(upload_type == 'model') { | ||
filter_mimetype = ["model/3mf", "model/vrml", "application/octet-stream"]; | ||
filter_extension = [".obj", ".mtl", ".blend", ".glb"]; | ||
} | ||
return function(req, file, cb) { | ||
if(filter_extension.includes(path.extname(file.originalname)) && filter_mimetype.includes(file.mimetype)) { | ||
cb(null, true); | ||
} else { | ||
console.error(`Invalid file upload (${upload_type}): ${file.originalname} ${file.mimetype}`); | ||
cb(new Error("file is invalid")) | ||
} | ||
} | ||
} catch (err) { | ||
console.error(`error in file_storage/index.js/filterFile`); | ||
console.error(err); | ||
throw err; | ||
} | ||
} | ||
getMulter = function(storage_engine, upload_type, {multer_type, args}, utils) { | ||
let filterFileFunc = this.filterFile; | ||
return function(req, res, next) { | ||
let multerInstance = multer({ | ||
storage: storage_engine, | ||
fileFilter: filterFileFunc(upload_type) | ||
}); | ||
if(multer_type == "single") { | ||
multerInstance = multerInstance.single(args[0]) | ||
} else if(multer_type == "array") { | ||
multerInstance = multerInstance.array(...args) | ||
} else if(multer_type == "any") { | ||
multerInstance = multerInstance.any() | ||
} else { | ||
throw new Error(`multer_type ${multer_type} not supported`); | ||
} | ||
return multerInstance(req, res, function(err) { | ||
if (err) { | ||
return utils.send_response_bad_request_error(res, new Error("BAD_FILE_UPLOAD")) | ||
} | ||
return next(); | ||
}); | ||
} | ||
} | ||
//returns multer storage engine object for the bucket | ||
getMulter = function( | ||
getMulterStorage = function( | ||
destination, | ||
@@ -28,0 +82,0 @@ filename_fn = function (req, file, cb) { |
{ | ||
"name": "@infurnia/backend-file-storage", | ||
"version": "2.13.0", | ||
"version": "3.0.0", | ||
"description": "Storage engine for google cloud storage", | ||
@@ -26,3 +26,4 @@ "main": "index.js", | ||
"moment": "^2.29.4", | ||
"path": "^0.12.7" | ||
"path": "^0.12.7", | ||
"multer": "^1.3.0" | ||
}, | ||
@@ -29,0 +30,0 @@ "repository": { |
19144
423
6
+ Addedmulter@^1.3.0