DocumentUpdaterManager.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /* eslint-disable
  2. camelcase,
  3. handle-callback-err,
  4. no-unused-vars,
  5. */
  6. // TODO: This file was created by bulk-decaffeinate.
  7. // Fix any style issues and re-enable lint.
  8. /*
  9. * decaffeinate suggestions:
  10. * DS102: Remove unnecessary code created because of implicit returns
  11. * DS207: Consider shorter variations of null checks
  12. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  13. */
  14. let DocumentUpdaterManager
  15. const request = require('request')
  16. const logger = require('logger-sharelatex')
  17. const Settings = require('settings-sharelatex')
  18. module.exports = DocumentUpdaterManager = {
  19. getDocument(project_id, doc_id, callback) {
  20. if (callback == null) {
  21. callback = function (error, content, version) {}
  22. }
  23. const url = `${Settings.apis.documentupdater.url}/project/${project_id}/doc/${doc_id}`
  24. logger.log({ project_id, doc_id }, 'getting doc from document updater')
  25. return request.get(url, function (error, res, body) {
  26. if (error != null) {
  27. return callback(error)
  28. }
  29. if (res.statusCode >= 200 && res.statusCode < 300) {
  30. try {
  31. body = JSON.parse(body)
  32. } catch (error1) {
  33. error = error1
  34. return callback(error)
  35. }
  36. logger.log(
  37. { project_id, doc_id, version: body.version },
  38. 'got doc from document updater'
  39. )
  40. return callback(null, body.lines.join('\n'), body.version)
  41. } else {
  42. error = new Error(
  43. `doc updater returned a non-success status code: ${res.statusCode}`
  44. )
  45. logger.error(
  46. { err: error, project_id, doc_id, url },
  47. 'error accessing doc updater'
  48. )
  49. return callback(error)
  50. }
  51. })
  52. },
  53. setDocument(project_id, doc_id, content, user_id, callback) {
  54. if (callback == null) {
  55. callback = function (error) {}
  56. }
  57. const url = `${Settings.apis.documentupdater.url}/project/${project_id}/doc/${doc_id}`
  58. logger.log({ project_id, doc_id }, 'setting doc in document updater')
  59. return request.post(
  60. {
  61. url,
  62. json: {
  63. lines: content.split('\n'),
  64. source: 'restore',
  65. user_id,
  66. undoing: true
  67. }
  68. },
  69. function (error, res, body) {
  70. if (error != null) {
  71. return callback(error)
  72. }
  73. if (res.statusCode >= 200 && res.statusCode < 300) {
  74. return callback(null)
  75. } else {
  76. error = new Error(
  77. `doc updater returned a non-success status code: ${res.statusCode}`
  78. )
  79. logger.error(
  80. { err: error, project_id, doc_id, url },
  81. 'error accessing doc updater'
  82. )
  83. return callback(error)
  84. }
  85. }
  86. )
  87. }
  88. }