DocumentUpdaterManager.js 2.4 KB

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