FileController.coffee 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. PersistorManager = require("./PersistorManager")
  2. settings = require("settings-sharelatex")
  3. logger = require("logger-sharelatex")
  4. FileHandler = require("./FileHandler")
  5. metrics = require("metrics-sharelatex")
  6. oneDayInSeconds = 60 * 60 * 24
  7. module.exports =
  8. getFile: (req, res)->
  9. metrics.inc "getFile"
  10. {key, bucket} = req
  11. {format, style} = req.query
  12. logger.log key:key, bucket:bucket, format:format, style:style, "reciving request to get file"
  13. FileHandler.getFile bucket, key, {format:format,style:style}, (err, fileStream, size)->
  14. if err?
  15. logger.err err:err, key:key, bucket:bucket, format:format, style:style, "problem getting file"
  16. if !res.finished and res?.send?
  17. res.send 500
  18. else if req.query.cacheWarm
  19. logger.log key:key, bucket:bucket, format:format, style:style, "request is only for cache warm so not sending stream"
  20. res.send 200
  21. else
  22. logger.log key:key, bucket:bucket, format:format, style:style, "sending file to response"
  23. res.header("Content-Length", size)
  24. fileStream.pipe res
  25. insertFile: (req, res)->
  26. metrics.inc "insertFile"
  27. {key, bucket} = req
  28. logger.log key:key, bucket:bucket, "reciving request to insert file"
  29. FileHandler.insertFile bucket, key, req, (err)->
  30. res.send 200
  31. copyFile: (req, res)->
  32. metrics.inc "copyFile"
  33. {key, bucket} = req
  34. oldProject_id = req.body.source.project_id
  35. oldFile_id = req.body.source.file_id
  36. logger.log key:key, bucket:bucket, oldProject_id:oldProject_id, oldFile_id:oldFile_id, "reciving request to copy file"
  37. PersistorManager.copyFile bucket, "#{oldProject_id}/#{oldFile_id}", key, (err)->
  38. if err?
  39. logger.log err:err, oldProject_id:oldProject_id, oldFile_id:oldFile_id, "something went wrong copying file"
  40. res.send 500
  41. else
  42. res.send 200
  43. deleteFile: (req, res)->
  44. metrics.inc "deleteFile"
  45. {key, bucket} = req
  46. logger.log key:key, bucket:bucket, "reciving request to delete file"
  47. FileHandler.deleteFile bucket, key, (err)->
  48. if err?
  49. logger.log err:err, key:key, bucket:bucket, "something went wrong deleting file"
  50. res.send 500
  51. else
  52. res.send 204