DocumentUpdaterManager.coffee 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. request = require "request"
  2. logger = require "logger-sharelatex"
  3. Settings = require "settings-sharelatex"
  4. module.exports = DocumentUpdaterManager =
  5. getDocument: (project_id, doc_id, callback = (error, content, version) ->) ->
  6. url = "#{Settings.apis.documentupdater.url}/project/#{project_id}/doc/#{doc_id}"
  7. logger.log project_id:project_id, doc_id: doc_id, "getting doc from document updater"
  8. request.get url, (error, res, body)->
  9. if error?
  10. return callback(error)
  11. if res.statusCode >= 200 and res.statusCode < 300
  12. try
  13. body = JSON.parse(body)
  14. catch error
  15. return callback(error)
  16. logger.log {project_id, doc_id, version: body.version}, "got doc from document updater"
  17. callback null, body.lines.join("\n"), body.version
  18. else
  19. error = new Error("doc updater returned a non-success status code: #{res.statusCode}")
  20. logger.error err: error, project_id:project_id, doc_id:doc_id, url: url, "error accessing doc updater"
  21. callback error
  22. setDocument: (project_id, doc_id, content, user_id, callback = (error) ->) ->
  23. url = "#{Settings.apis.documentupdater.url}/project/#{project_id}/doc/#{doc_id}"
  24. logger.log project_id:project_id, doc_id: doc_id, "setting doc in document updater"
  25. request.post {
  26. url: url
  27. json:
  28. lines: content.split("\n")
  29. source: "restore"
  30. user_id: user_id
  31. undoing: true
  32. }, (error, res, body)->
  33. if error?
  34. return callback(error)
  35. if res.statusCode >= 200 and res.statusCode < 300
  36. callback null
  37. else
  38. error = new Error("doc updater returned a non-success status code: #{res.statusCode}")
  39. logger.error err: error, project_id:project_id, doc_id:doc_id, url: url, "error accessing doc updater"
  40. callback error