From 5656197c233d33ef2f05d2228c423111b8d13b8c Mon Sep 17 00:00:00 2001 From: RRK1000 Date: Fri, 11 Oct 2019 13:53:02 +0530 Subject: [PATCH 1/2] Add createFile middleware --- server/middleware/fileStorage.js | 97 +++++++++++++++++--------------- 1 file changed, 53 insertions(+), 44 deletions(-) diff --git a/server/middleware/fileStorage.js b/server/middleware/fileStorage.js index 3f8668d..03fca26 100644 --- a/server/middleware/fileStorage.js +++ b/server/middleware/fileStorage.js @@ -61,18 +61,18 @@ var fileUpload = function (req, res, next) { User.findOneAndUpdate({ _id: req.user_id }, { - $push: { files: file._id } - }, { new: true }, function (err, user) { - if (err) { - return res.status(500).send({ - success: false, - message: 'Error: Server error' - }); - } - else { - console.log("File added to user " + user._id); - } - }); + $push: { files: file._id } + }, { new: true }, function (err, user) { + if (err) { + return res.status(500).send({ + success: false, + message: 'Error: Server error' + }); + } + else { + console.log("File added to user " + user._id); + } + }); }); } }) @@ -98,14 +98,14 @@ var downloadFile = function (dir) { } User.findOne({ _id: req.params.userID - }, function(err, user){ - if(err){ + }, function (err, user) { + if (err) { return res.status(500).send({ success: false, message: "Error: server error" }); } - if(!user){ + if (!user) { return res.status(404).send({ success: false, message: "Error: No such user found" @@ -114,51 +114,51 @@ var downloadFile = function (dir) { var usn = user.usn var file = files[0]; var filePath = path.join(dir, file.originalname) - var fileName = usn+'_'+file.originalname; + var fileName = usn + '_' + file.originalname; return res.download(filePath, fileName, function (err) { if (err) { - return res.status(404).send({ - success: false, - message: "Error: File not found." - }); + return res.status(404).send({ + success: false, + message: "Error: File not found." + }); } - }); + }); }) }); } } -var addFilesForZip = function(){ - return function(req,res,next){ +var addFilesForZip = function () { + return function (req, res, next) { console.log("hello"); Assignment.findOne({ _id: req.params.assignmentID - }, function(err, assignment){ - if(err){ + }, function (err, assignment) { + if (err) { return res.status(500).send({ success: false, message: "Error: server error" }); } - if(!assignment){ + if (!assignment) { return res.status(404).send({ success: false, message: "Error: No such assignment found" }); } - if(assignment.submissions.length>0){ + if (assignment.submissions.length > 0) { var files = []; assignment.submissions.forEach(obj => { User.findOne({ _id: obj.user - }, function(err, user){ - if(err){ + }, function (err, user) { + if (err) { return res.status(500).send({ success: false, message: "Error: server error" }); } - if(!user){ + if (!user) { return res.status(404).send({ success: false, message: "Error: No such user found" @@ -167,22 +167,22 @@ var addFilesForZip = function(){ var usn = user.usn; File.findOne({ _id: obj.file - }, function(err,file){ - if(err){ + }, function (err, file) { + if (err) { return res.status(500).send({ success: false, message: "Error: server error" }); } - if(!file){ + if (!file) { return res.status(404).send({ success: false, message: "Error: No such file found" }); } var filePath = path.join(dir, file.originalname); - var fileName = usn+'_'+file.originalname; - var fileObj = {'path': filePath, 'name':fileName}; + var fileName = usn + '_' + file.originalname; + var fileObj = { 'path': filePath, 'name': fileName }; // fileObj['path'] = filePath; // fileObj['name'] = fileName; files.push(fileObj); @@ -196,27 +196,36 @@ var addFilesForZip = function(){ } } -var zipFile = function(){ - return function(req,res){ +var zipFile = function () { + return function (req, res) { console.log(req) var archive = archiver('zip'); - archive.on('error',function(err) { - res.status(500).send({error: err.message}); + archive.on('error', function (err) { + res.status(500).send({ error: err.message }); }); - res.on('close', function() { + res.on('close', function () { console.log('Archive wrote %d bytes', archive.pointer()); return res.status(200).send('OK').end(); }); - var zipName = req.params.assignmentID+'.zip' + var zipName = req.params.assignmentID + '.zip' res.attachment(zipName); archive.pipe(res); req.files.forEach(file => { - archive.append(fs.createReadStream(file.path), {name: file.name}) + archive.append(fs.createReadStream(file.path), { name: file.name }) }); archive.finalize(); } } - +var createFile = function (req, res, next) { + fs.writeFile(process.cwd() + "/temp/file.txt", req.body.text, function (err) { + if (err) { + res.status(500).send({ error: err }); + } + console.log("File Created"); + res.status(200).send({ success: true, message: "File Created." }); + }); + next(); +} //TODO: Delete file endpoint -module.exports = { diskStorage, fileUpload, downloadFile, zipFile, addFilesForZip }; +module.exports = { diskStorage, fileUpload, downloadFile, zipFile, addFilesForZip, createFile }; From 3142aa0d392aa040a5aa863334f94d5c00b746eb Mon Sep 17 00:00:00 2001 From: RRK1000 Date: Sun, 20 Oct 2019 16:55:12 +0530 Subject: [PATCH 2/2] Update Utils --- server/middleware/fileStorage.js | 10 --- server/utils/storage.js | 107 +++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+), 10 deletions(-) create mode 100644 server/utils/storage.js diff --git a/server/middleware/fileStorage.js b/server/middleware/fileStorage.js index 03fca26..9b1f166 100644 --- a/server/middleware/fileStorage.js +++ b/server/middleware/fileStorage.js @@ -216,16 +216,6 @@ var zipFile = function () { archive.finalize(); } } -var createFile = function (req, res, next) { - fs.writeFile(process.cwd() + "/temp/file.txt", req.body.text, function (err) { - if (err) { - res.status(500).send({ error: err }); - } - console.log("File Created"); - res.status(200).send({ success: true, message: "File Created." }); - }); - next(); -} //TODO: Delete file endpoint module.exports = { diskStorage, fileUpload, downloadFile, zipFile, addFilesForZip, createFile }; diff --git a/server/utils/storage.js b/server/utils/storage.js new file mode 100644 index 0000000..4f7022c --- /dev/null +++ b/server/utils/storage.js @@ -0,0 +1,107 @@ +var fs = require('fs') +const User = require('../models/User') +const File = require('../models/Files') + +var uploadText = function (filename, user_id, text) { + fs.writeFile(process.cwd() + '\\temp\\' + filename, text, function (err) { + if (err) { + throw new Error('Error Creating a file'); + } + }) + var size = fs.statSync(process.cwd() + '\\temp\\' + filename)['size']; + File.find( + { + user_id: user_id, + originalname: filename + }, + function (err) { + if (err) { + throw new Error('Error: Server error') + } else { + var uploadFile = new File(); + + uploadFile.originalname = filename; + uploadFile.encoding = 'UTF-8'; + uploadFile.mimetype = 'text/plain'; + uploadFile.destination = process.cwd() + '\\temp\\' + filename; + uploadFile.size = size; + uploadFile.filename = filename; + uploadFile.user_id = user_id; + + uploadFile.save(function (err, file) { + if (err) { + throw new Error('Error: Server error'); + } + console.log(file._id + ' Added to DB.'); + User.findOneAndUpdate( + { + _id: user_id + }, + { + $push: { files: file._id } + }, + { new: true }, + function (err, user) { + if (err) { + throw new Error('Error: Server error'); + } else { + console.log('File added to user ' + user._id); + return file._id; + } + } + ) + }) + } + } + ) +} + +var uploadFile = function (file, user_id) { + File.find( + { + user_id: user_id, + originalname: file.originalname + }, + function (err) { + if (err) { + throw new Error('Error: Server error') + } else { + var uploadFile = new File(); + + uploadFile.originalname = file.originalname; + uploadFile.encoding = file.encoding; + uploadFile.mimetype = file.mimetype; + uploadFile.destination = file.destination; + uploadFile.filename = file.filename; + uploadFile.size = file.size; + uploadFile.user_id = user_id; + + uploadFile.save(function (err, file) { + if (err) { + throw new Error('Error: Server error'); + } + console.log(file._id + ' Added to DB.'); + User.findOneAndUpdate( + { + _id: user_id + }, + { + $push: { files: file._id } + }, + { new: true }, + function (err, user) { + if (err) { + throw new Error('Error: Server error'); + } else { + console.log('File added to user ' + user._id); + return file._id; + } + } + ) + }) + } + } + ) +} + +module.exports = { uploadText, uploadFile }