DocumentController.coffee 2.1 KB

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