DocumentController.coffee 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. ProjectLocator = require "../Project/ProjectLocator"
  2. ProjectEntityHandler = require "../Project/ProjectEntityHandler"
  3. ProjectEntityUpdateHandler = require "../Project/ProjectEntityUpdateHandler"
  4. logger = require("logger-sharelatex")
  5. module.exports =
  6. getDocument: (req, res, next = (error) ->) ->
  7. project_id = req.params.Project_id
  8. doc_id = req.params.doc_id
  9. plain = req?.query?.plain == 'true'
  10. logger.log doc_id:doc_id, project_id:project_id, "receiving get document request from api (docupdater)"
  11. ProjectLocator.findElement {project_id: project_id, element_id: doc_id, type: 'doc'}, (error, doc, path) =>
  12. if error?
  13. logger.err err:error, doc_id:doc_id, project_id:project_id, "error finding element for getDocument"
  14. return next(error)
  15. ProjectEntityHandler.getDoc project_id, doc_id, (error, lines, rev, version, ranges) ->
  16. if error?
  17. logger.err err:error, doc_id:doc_id, project_id:project_id, "error finding doc contents for getDocument"
  18. return next(error)
  19. if plain
  20. res.type "text/plain"
  21. res.send lines.join('\n')
  22. else
  23. res.type "json"
  24. res.send JSON.stringify {
  25. lines: lines
  26. version: version
  27. ranges: ranges
  28. pathname: path.fileSystem
  29. }
  30. setDocument: (req, res, next = (error) ->) ->
  31. project_id = req.params.Project_id
  32. doc_id = req.params.doc_id
  33. {lines, version, ranges} = req.body
  34. logger.log doc_id:doc_id, project_id:project_id, "receiving set document request from api (docupdater)"
  35. ProjectEntityUpdateHandler.updateDocLines project_id, doc_id, lines, version, ranges, (error) ->
  36. if error?
  37. logger.err err:error, doc_id:doc_id, project_id:project_id, "error finding element for getDocument"
  38. return next(error)
  39. logger.log doc_id:doc_id, project_id:project_id, "finished receiving set document request from api (docupdater)"
  40. res.sendStatus 200