HttpController.coffee 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. 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. packDoc: (req, res, next = (error) ->) ->
  23. doc_id = req.params.doc_id
  24. logger.log doc_id: doc_id, "packing doc history"
  25. PackManager.packDocHistory doc_id, (error) ->
  26. return next(error) if error?
  27. res.send 204
  28. getDiff: (req, res, next = (error) ->) ->
  29. doc_id = req.params.doc_id
  30. project_id = req.params.project_id
  31. if req.query.from?
  32. from = parseInt(req.query.from, 10)
  33. else
  34. from = null
  35. if req.query.to?
  36. to = parseInt(req.query.to, 10)
  37. else
  38. to = null
  39. logger.log project_id, doc_id: doc_id, from: from, to: to, "getting diff"
  40. DiffManager.getDiff project_id, doc_id, from, to, (error, diff) ->
  41. return next(error) if error?
  42. res.send JSON.stringify(diff: diff)
  43. getUpdates: (req, res, next = (error) ->) ->
  44. project_id = req.params.project_id
  45. if req.query.before?
  46. before = parseInt(req.query.before, 10)
  47. if req.query.min_count?
  48. min_count = parseInt(req.query.min_count, 10)
  49. UpdatesManager.getSummarizedProjectUpdates project_id, before: before, min_count: min_count, (error, updates, nextBeforeTimestamp) ->
  50. return next(error) if error?
  51. res.send JSON.stringify
  52. updates: updates
  53. nextBeforeTimestamp: nextBeforeTimestamp
  54. restore: (req, res, next = (error) ->) ->
  55. {doc_id, project_id, version} = req.params
  56. user_id = req.headers["x-user-id"]
  57. version = parseInt(version, 10)
  58. RestoreManager.restoreToBeforeVersion project_id, doc_id, version, user_id, (error) ->
  59. return next(error) if error?
  60. res.send 204
  61. archiveProject: (req, res, next = (error) ->) ->
  62. project_id = req.params.project_id
  63. logger.log project_id: project_id, "archiving all track changes to s3"
  64. DocArchiveManager.archiveAllDocsChanges project_id, (error) ->
  65. return next(error) if error?
  66. res.send 204
  67. unArchiveProject: (req, res, next = (error) ->) ->
  68. project_id = req.params.project_id
  69. logger.log project_id: project_id, "unarchiving all track changes from s3"
  70. DocArchiveManager.unArchiveAllDocsChanges project_id, (error) ->
  71. return next(error) if error?
  72. res.send 204
  73. healthCheck: (req, res)->
  74. HealthChecker.check (err)->
  75. if err?
  76. logger.err err:err, "error performing health check"
  77. res.send 500
  78. else
  79. res.send 200