DocstoreManager.coffee 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. request = require("request").defaults(jar: false)
  2. logger = require "logger-sharelatex"
  3. settings = require "settings-sharelatex"
  4. module.exports = DocstoreManager =
  5. deleteDoc: (project_id, doc_id, callback = (error) ->) ->
  6. logger.log project_id: project_id, doc_id: doc_id, "deleting doc in docstore api"
  7. url = "#{settings.apis.docstore.url}/project/#{project_id}/doc/#{doc_id}"
  8. request.del url, (error, res, body) ->
  9. return callback(error) if error?
  10. if 200 <= res.statusCode < 300
  11. callback(null)
  12. else
  13. error = new Error("docstore api responded with non-success code: #{res.statusCode}")
  14. logger.error err: error, project_id: project_id, doc_id: doc_id, "error deleting doc in docstore"
  15. callback(error)
  16. getAllDocs: (project_id, callback = (error) ->) ->
  17. logger.log project_id: project_id, "getting all docs for project in docstore api"
  18. url = "#{settings.apis.docstore.url}/project/#{project_id}/doc"
  19. request.get {
  20. url: url
  21. json: true
  22. }, (error, res, docs) ->
  23. return callback(error) if error?
  24. if 200 <= res.statusCode < 300
  25. callback(null, docs)
  26. else
  27. error = new Error("docstore api responded with non-success code: #{res.statusCode}")
  28. logger.error err: error, project_id: project_id, "error getting all docs from docstore"
  29. callback(error)
  30. getDoc: (project_id, doc_id, callback = (error, lines, rev) ->) ->
  31. logger.log project_id: project_id, doc_id: doc_id, "getting doc in docstore api"
  32. url = "#{settings.apis.docstore.url}/project/#{project_id}/doc/#{doc_id}"
  33. request.get {
  34. url: url
  35. json: true
  36. }, (error, res, doc) ->
  37. return callback(error) if error?
  38. if 200 <= res.statusCode < 300
  39. logger.log doc_id: doc_id, project_id: project_id, version: doc.version, rev: doc.rev, "got doc from docstore api"
  40. callback(null, doc.lines, doc.rev)
  41. else
  42. error = new Error("docstore api responded with non-success code: #{res.statusCode}")
  43. logger.error err: error, project_id: project_id, doc_id: doc_id, "error getting doc from docstore"
  44. callback(error)
  45. updateDoc: (project_id, doc_id, lines, callback = (error, modified, rev) ->) ->
  46. logger.log project_id: project_id, doc_id: doc_id, "updating doc in docstore api"
  47. url = "#{settings.apis.docstore.url}/project/#{project_id}/doc/#{doc_id}"
  48. request.post {
  49. url: url
  50. json:
  51. lines: lines
  52. }, (error, res, result) ->
  53. return callback(error) if error?
  54. if 200 <= res.statusCode < 300
  55. callback(null, result.modified, result.rev)
  56. else
  57. error = new Error("docstore api responded with non-success code: #{res.statusCode}")
  58. logger.error err: error, project_id: project_id, doc_id: doc_id, "error updating doc in docstore"
  59. callback(error)