HttpController.coffee 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. UpdatesManager = require "./UpdatesManager"
  2. DiffManager = require "./DiffManager"
  3. RestoreManager = require "./RestoreManager"
  4. logger = require "logger-sharelatex"
  5. module.exports = HttpController =
  6. flushUpdatesWithLock: (req, res, next = (error) ->) ->
  7. doc_id = req.params.doc_id
  8. logger.log doc_id: doc_id, "compressing doc history"
  9. UpdatesManager.processUncompressedUpdatesWithLock doc_id, (error) ->
  10. return next(error) if error?
  11. res.send 204
  12. getDiff: (req, res, next = (error) ->) ->
  13. doc_id = req.params.doc_id
  14. project_id = req.params.project_id
  15. if req.query.from?
  16. from = parseInt(req.query.from, 10)
  17. else
  18. from = null
  19. if req.query.to?
  20. to = parseInt(req.query.to, 10)
  21. else
  22. to = null
  23. logger.log project_id, doc_id: doc_id, from: from, to: to, "getting diff"
  24. DiffManager.getDiff project_id, doc_id, from, to, (error, diff) ->
  25. return next(error) if error?
  26. res.send JSON.stringify(diff: diff)
  27. getUpdates: (req, res, next = (error) ->) ->
  28. doc_id = req.params.doc_id
  29. project_id = req.params.project_id
  30. if req.query.to?
  31. to = parseInt(req.query.to, 10)
  32. if req.query.limit?
  33. limit = parseInt(req.query.limit, 10)
  34. UpdatesManager.getUpdatesWithUserInfo doc_id, to: to, limit: limit, (error, updates) ->
  35. return next(error) if error?
  36. formattedUpdates = for update in updates
  37. {
  38. meta: update.meta
  39. v: update.v
  40. }
  41. res.send JSON.stringify updates: formattedUpdates
  42. restore: (req, res, next = (error) ->) ->
  43. {doc_id, project_id, version} = req.params
  44. version = parseInt(version, 10)
  45. RestoreManager.restoreToBeforeVersion project_id, doc_id, version, (error) ->
  46. return next(error) if error?
  47. res.send 204