ProjectUploadController.coffee 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. logger = require "logger-sharelatex"
  2. metrics = require "metrics-sharelatex"
  3. fs = require "fs"
  4. Path = require "path"
  5. FileSystemImportManager = require "./FileSystemImportManager"
  6. ProjectUploadManager = require "./ProjectUploadManager"
  7. AuthenticationController = require('../Authentication/AuthenticationController')
  8. module.exports = ProjectUploadController =
  9. uploadProject: (req, res, next) ->
  10. timer = new metrics.Timer("project-upload")
  11. user_id = AuthenticationController.getLoggedInUserId(req)
  12. {originalname, path} = req.files.qqfile
  13. name = Path.basename(originalname, ".zip")
  14. ProjectUploadManager.createProjectFromZipArchive user_id, name, path, (error, project) ->
  15. fs.unlink path, ->
  16. timer.done()
  17. if error?
  18. logger.error
  19. err: error, file_path: path, file_name: name,
  20. "error uploading project"
  21. res.send success: false
  22. else
  23. logger.log
  24. project: project._id, file_path: path, file_name: name,
  25. "uploaded project"
  26. res.send success: true, project_id: project._id
  27. uploadFile: (req, res, next) ->
  28. timer = new metrics.Timer("file-upload")
  29. name = req.files.qqfile?.originalname
  30. path = req.files.qqfile?.path
  31. project_id = req.params.Project_id
  32. folder_id = req.query.folder_id
  33. if !name? or name.length == 0 or name.length > 150
  34. logger.err project_id:project_id, name:name, "bad name when trying to upload file"
  35. return res.send success: false
  36. logger.log folder_id:folder_id, project_id:project_id, "getting upload file request"
  37. user_id = AuthenticationController.getLoggedInUserId(req)
  38. FileSystemImportManager.addEntity user_id, project_id, folder_id, name, path, true, (error, entity) ->
  39. fs.unlink path, ->
  40. timer.done()
  41. if error?
  42. logger.error
  43. err: error, project_id: project_id, file_path: path,
  44. file_name: name, folder_id: folder_id,
  45. "error uploading file"
  46. res.send success: false
  47. else
  48. logger.log
  49. project_id: project_id, file_path: path, file_name: name, folder_id: folder_id
  50. "uploaded file"
  51. res.send success: true, entity_id: entity?._id, entity_type: entity?.type