DocumentController.coffee 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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.json {
  29. lines: lines
  30. version: version
  31. ranges: ranges
  32. pathname: path.fileSystem
  33. projectHistoryId: projectHistoryId
  34. }
  35. setDocument: (req, res, next = (error) ->) ->
  36. project_id = req.params.Project_id
  37. doc_id = req.params.doc_id
  38. {lines, version, ranges, lastUpdatedAt, lastUpdatedBy} = req.body
  39. logger.log doc_id:doc_id, project_id:project_id, "receiving set document request from api (docupdater)"
  40. ProjectEntityUpdateHandler.updateDocLines project_id, doc_id, lines, version, ranges, lastUpdatedAt, lastUpdatedBy, (error) ->
  41. if error?
  42. logger.err err:error, doc_id:doc_id, project_id:project_id, "error finding element for getDocument"
  43. return next(error)
  44. logger.log doc_id:doc_id, project_id:project_id, "finished receiving set document request from api (docupdater)"
  45. res.sendStatus 200