HttpController.coffee 3.8 KB

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