HealthCheckController.coffee 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. fs = require("fs-extra")
  2. path = require("path")
  3. async = require("async")
  4. fileConverter = require("./FileConverter")
  5. keyBuilder = require("./KeyBuilder")
  6. fileController = require("./FileController")
  7. logger = require('logger-sharelatex')
  8. settings = require("settings-sharelatex")
  9. streamBuffers = require("stream-buffers")
  10. checkCanStoreFiles = (callback)->
  11. req = {params:{}, query:{}, headers:{}}
  12. res = {}
  13. req.params.project_id = settings.health_check.project_id
  14. req.params.file_id = settings.health_check.file_id
  15. myWritableStreamBuffer = new streamBuffers.WritableStreamBuffer(initialSize: 100)
  16. keyBuilder.userFileKey req, res, ->
  17. fileController.getFile req, myWritableStreamBuffer
  18. myWritableStreamBuffer.on "close", ->
  19. if myWritableStreamBuffer.size() > 0
  20. callback()
  21. else
  22. logger.err "no data in write stream buffer for health check"
  23. callback()
  24. checkFileConvert = (callback)->
  25. imgPath = path.join(settings.path.uploadFolder, "/tiny.pdf")
  26. console.log imgPath, settings.path.uploadFolder
  27. async.waterfall [
  28. (cb)->
  29. fs.copy("./tiny.pdf", imgPath, cb)
  30. (cb)-> fileConverter.thumbnail "./tiny.pdf", cb
  31. (resultPath, cb)-> fs.unlink resultPath, cb
  32. (resultPath, cb)-> fs.unlink imgPath, cb
  33. ], callback
  34. module.exports =
  35. check: (req, res)->
  36. async.parallel [checkFileConvert, checkCanStoreFiles], (err)->
  37. if err?
  38. logger.err err:err, "Health check: error running"
  39. return res.send 500
  40. else
  41. return res.send 200