HttpController.coffee 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. res.json docs.map(HttpController._buildDocView)
  20. updateDoc: (req, res, next = (error) ->) ->
  21. project_id = req.params.project_id
  22. doc_id = req.params.doc_id
  23. lines = req.body?.lines
  24. if !lines? or lines not instanceof Array
  25. logger.error project_id: project_id, doc_id: doc_id, "no doc lines provided"
  26. res.send 400 # Bad Request
  27. return
  28. logger.log project_id: project_id, doc_id: doc_id, "updating doc"
  29. DocManager.updateDoc project_id, doc_id, lines, (error, modified) ->
  30. return next(error) if error?
  31. res.json {
  32. modified: modified
  33. }
  34. deleteDoc: (req, res, next = (error) ->) ->
  35. project_id = req.params.project_id
  36. doc_id = req.params.doc_id
  37. logger.log project_id: project_id, doc_id: doc_id, "deleting doc"
  38. DocManager.deleteDoc project_id, doc_id, (error) ->
  39. return next(error) if error?
  40. res.send 204
  41. _buildDocView: (doc) ->
  42. return {
  43. _id: doc._id.toString()
  44. lines: doc.lines
  45. rev: doc.rev
  46. version: doc.version
  47. }