HttpController.coffee 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. UpdatesManager = require "./UpdatesManager"
  2. DiffManager = require "./DiffManager"
  3. PackManager = require "./PackManager"
  4. RestoreManager = require "./RestoreManager"
  5. logger = require "logger-sharelatex"
  6. HealthChecker = require "./HealthChecker"
  7. _ = require "underscore"
  8. module.exports = HttpController =
  9. flushDoc: (req, res, next = (error) ->) ->
  10. doc_id = req.params.doc_id
  11. project_id = req.params.project_id
  12. logger.log project_id: project_id, doc_id: doc_id, "compressing doc history"
  13. UpdatesManager.processUncompressedUpdatesWithLock project_id, doc_id, (error) ->
  14. return next(error) if error?
  15. res.send 204
  16. flushProject: (req, res, next = (error) ->) ->
  17. project_id = req.params.project_id
  18. logger.log project_id: project_id, "compressing project history"
  19. UpdatesManager.processUncompressedUpdatesForProject project_id, (error) ->
  20. return next(error) if error?
  21. res.send 204
  22. checkDoc: (req, res, next = (error) ->) ->
  23. doc_id = req.params.doc_id
  24. project_id = req.params.project_id
  25. logger.log project_id: project_id, doc_id: doc_id, "checking doc history"
  26. DiffManager.getDocumentBeforeVersion project_id, doc_id, 1, (error, document, rewoundUpdates) ->
  27. return next(error) if error?
  28. broken = []
  29. for update in rewoundUpdates
  30. for op in update.op when op.broken is true
  31. broken.push op
  32. if broken.length > 0
  33. res.send broken
  34. else
  35. res.send 204
  36. getDiff: (req, res, next = (error) ->) ->
  37. doc_id = req.params.doc_id
  38. project_id = req.params.project_id
  39. if req.query.from?
  40. from = parseInt(req.query.from, 10)
  41. else
  42. from = null
  43. if req.query.to?
  44. to = parseInt(req.query.to, 10)
  45. else
  46. to = null
  47. logger.log {project_id, doc_id, from, to}, "getting diff"
  48. DiffManager.getDiff project_id, doc_id, from, to, (error, diff) ->
  49. return next(error) if error?
  50. res.send JSON.stringify(diff: diff)
  51. getUpdates: (req, res, next = (error) ->) ->
  52. project_id = req.params.project_id
  53. if req.query.before?
  54. before = parseInt(req.query.before, 10)
  55. if req.query.min_count?
  56. min_count = parseInt(req.query.min_count, 10)
  57. UpdatesManager.getSummarizedProjectUpdates project_id, before: before, min_count: min_count, (error, updates, nextBeforeTimestamp) ->
  58. return next(error) if error?
  59. res.send JSON.stringify
  60. updates: updates
  61. nextBeforeTimestamp: nextBeforeTimestamp
  62. restore: (req, res, next = (error) ->) ->
  63. {doc_id, project_id, version} = req.params
  64. user_id = req.headers["x-user-id"]
  65. version = parseInt(version, 10)
  66. RestoreManager.restoreToBeforeVersion project_id, doc_id, version, user_id, (error) ->
  67. return next(error) if error?
  68. res.send 204
  69. healthCheck: (req, res)->
  70. HealthChecker.check (err)->
  71. if err?
  72. logger.err err:err, "error performing health check"
  73. res.send 500
  74. else
  75. res.send 200
  76. checkLock: (req, res)->
  77. HealthChecker.checkLock (err) ->
  78. if err?
  79. logger.err err:err, "error performing lock check"
  80. res.send 500
  81. else
  82. res.send 200