UNPKG

@sumor/api-middleware

Version:

API Middleware is a middleware for Node.JS. It can easily expose function to api, and validate parameters

49 lines (45 loc) 1.34 kB
import bodyParser from 'body-parser' import multer from 'multer' import fse from 'fs-extra' const uploadPath = `${process.cwd()}/tmp/uploads` await fse.ensureDir(uploadPath) const upload = multer({ dest: 'tmp/uploads/' }) export default parameters => { parameters = parameters || {} const uploadParameters = [] for (const name in parameters) { if (parameters[name].type === 'file') { uploadParameters.push({ name }) } } return [ bodyParser.urlencoded({ extended: false }), bodyParser.json(), bodyParser.text(), upload.fields(uploadParameters), (req, res, next) => { const files = {} req.files = req.files || {} for (const name in req.files) { if (req.files[name] && req.files[name].length > 0) { const reqFiles = req.files[name].map(file => { return { name: file.originalname, size: file.size, mime: file.mimetype, encoding: file.encoding, path: `${uploadPath}/${file.filename}` } }) if (parameters[name].multiple !== true) { files[name] = reqFiles[0] } else { files[name] = reqFiles } } } req.data = { ...req.params, ...req.query, ...req.body, ...files } next() } ] }