HttpController.coffee 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. if !lines? or lines not instanceof Array
  31. logger.error project_id: project_id, doc_id: doc_id, "no doc lines provided"
  32. res.send 400 # Bad Request
  33. return
  34. logger.log project_id: project_id, doc_id: doc_id, "updating doc"
  35. DocManager.updateDoc project_id, doc_id, lines, (error, modified) ->
  36. return next(error) if error?
  37. res.json {
  38. modified: modified
  39. }
  40. deleteDoc: (req, res, next = (error) ->) ->
  41. project_id = req.params.project_id
  42. doc_id = req.params.doc_id
  43. logger.log project_id: project_id, doc_id: doc_id, "deleting doc"
  44. DocManager.deleteDoc project_id, doc_id, (error) ->
  45. return next(error) if error?
  46. res.send 204
  47. _buildDocView: (doc) ->
  48. return {
  49. _id: doc._id.toString()
  50. lines: doc.lines
  51. rev: doc.rev
  52. version: doc.version
  53. }