smart-home
Version:
Netbeast dashboard, IoT apps manager
30 lines (25 loc) • 976 B
JavaScript
var path = require('path')
var multer = require('multer')
var App = require('../models/app')
var ApiError = require('../util/api-error')
module.exports.upload = multer({
dest: process.env.TMP_DIR,
rename: function (fieldname, filename) {
return new Date().getTime() + '-' + filename
},
fileFilter: function (req, file, done) {
var ext = [file.originalname.split('.')[1], file.originalname.split('.')[2]].join('.')
if (ext !== 'tar.gz' && ext !== 'tgz.' && file.mimetype !== 'application/x-gzip' && file.mimetype !== 'application/octet-stream')
return done(null, false)
else
return done(null, true)
}
}).any()
module.exports.process = function (req, res, next) {
const module = (req.files && req.files.length > 0) ? req.files[0].path : req.body.url
if (!module) return next(new ApiError(422, 'App must be a tar.gz file.'))
App.install(module, function (err, appJson) {
if (err) return next(err)
res.json(appJson)
})
}