@tiledesk/tiledesk-server
Version:
The Tiledesk server module
101 lines (70 loc) • 2.56 kB
JavaScript
var express = require('express');
const multer = require('multer');
var passport = require('passport');
require('../middleware/passport')(passport);
var validtoken = require('../middleware/valid-token')
var winston = require('../config/winston');
var pathlib = require('path');
var router = express.Router();
const FileGridFsService = require('../services/fileGridFsService.js');
const { path } = require('../models/tag');
const fileService = new FileGridFsService("files");
let MAX_UPLOAD_FILE_SIZE = process.env.MAX_UPLOAD_FILE_SIZE;
let uploadlimits = undefined;
if (MAX_UPLOAD_FILE_SIZE) {
uploadlimits = {fileSize: parseInt(MAX_UPLOAD_FILE_SIZE)} ;
winston.info("Max upload file size is : " + MAX_UPLOAD_FILE_SIZE);
} else {
winston.info("Max upload file size is infinity");
}
const upload = multer({ storage: fileService.getStorage("files"),limits: uploadlimits});
/*
curl -u andrea.leo@f21.it:123456 \
-F "file=@/Users/andrealeo/dev/chat21/tiledesk-server-dev-org/README.md" \
http://localhost:3000/files/users/
*/
router.post('/users', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken], upload.single('file'), (req, res, next) => {
winston.verbose("files/users")
return res.status(201).json({
message: 'File uploded successfully',
filename: req.file.filename
});
});
/*
curl \
-F "file=@/Users/andrealeo/dev/chat21/tiledesk-server-dev-org/README.md" \
http://localhost:3000/files/public/
*/
router.post('/public', upload.single('file'), (req, res, next) => {
winston.debug("files/public")
return res.status(201).json({
message: 'File uploded successfully',
filename: req.file.filename
});
});
router.get("/", (req, res) => {
winston.debug('path', req.query.path);
// if (path.indexOf("/users/"))
fileService.getFileDataAsStream(req.query.path).pipe(res);
// const file = gfs
// .find({
// filename: req.query.path
// })
// .toArray((err, files) => {
// if (!files || files.length === 0) {
// return res.status(404).json({
// err: "no files exist"
// });
// }
// gfs.openDownloadStreamByName(req.query.path).pipe(res);
// });
});
router.get("/download", (req, res) => {
winston.debug('path', req.query.path);
// if (path.indexOf("/users/"))
let filename = pathlib.basename(req.query.path);
winston.debug("filename:"+filename);
res.attachment(filename);
fileService.getFileDataAsStream(req.query.path).pipe(res);
});
module.exports = router;