HttpController.coffee 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. DocManager = require "./DocManager"
  2. logger = require "logger-sharelatex"
  3. module.exports = HttpController =
  4. getDoc: (req, res, next = (error) ->) ->
  5. project_id = req.params.project_id
  6. doc_id = req.params.doc_id
  7. logger.log project_id: project_id, doc_id: doc_id, "getting doc"
  8. DocManager.getDoc project_id, doc_id, (error, doc) ->
  9. return next(error) if error?
  10. if !doc?
  11. res.send 404
  12. else
  13. res.json HttpController._buildDocView(doc)
  14. getAllDocs: (req, res, next = (error) ->) ->
  15. project_id = req.params.project_id
  16. logger.log project_id: project_id, "getting all docs"
  17. DocManager.getAllDocs project_id, (error, docs = []) ->
  18. return next(error) if error?
  19. docViews = []
  20. for doc in docs
  21. if doc? # There can end up being null docs for some reason :( (probably a race condition)
  22. docViews.push HttpController._buildDocView(doc)
  23. else
  24. logger.error err: new Error("null doc"), project_id: project_id, "encountered null doc"
  25. res.json docViews
  26. updateDoc: (req, res, next = (error) ->) ->
  27. project_id = req.params.project_id
  28. doc_id = req.params.doc_id
  29. lines = req.body?.lines
  30. version = req.body?.version
  31. if !lines? or lines not instanceof Array
  32. logger.error project_id: project_id, doc_id: doc_id, "no doc lines provided"
  33. res.send 400 # Bad Request
  34. return
  35. logger.log project_id: project_id, doc_id: doc_id, version: version, "updating doc"
  36. DocManager.updateDoc project_id, doc_id, lines, version, (error, modified, rev) ->
  37. return next(error) if error?
  38. res.json {
  39. modified: modified
  40. rev: rev
  41. }
  42. deleteDoc: (req, res, next = (error) ->) ->
  43. project_id = req.params.project_id
  44. doc_id = req.params.doc_id
  45. logger.log project_id: project_id, doc_id: doc_id, "deleting doc"
  46. DocManager.deleteDoc project_id, doc_id, (error) ->
  47. return next(error) if error?
  48. res.send 204
  49. _buildDocView: (doc) ->
  50. return {
  51. _id: doc._id.toString()
  52. lines: doc.lines
  53. rev: doc.rev
  54. version: doc.version
  55. }