DocumentUpdaterManager.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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) { callback = function(error, content, version) {}; }
  21. const url = `${Settings.apis.documentupdater.url}/project/${project_id}/doc/${doc_id}`;
  22. logger.log({project_id, doc_id}, "getting doc from document updater");
  23. return request.get(url, function(error, res, body){
  24. if (error != null) {
  25. return callback(error);
  26. }
  27. if ((res.statusCode >= 200) && (res.statusCode < 300)) {
  28. try {
  29. body = JSON.parse(body);
  30. } catch (error1) {
  31. error = error1;
  32. return callback(error);
  33. }
  34. logger.log({project_id, doc_id, version: body.version}, "got doc from document updater");
  35. return callback(null, body.lines.join("\n"), body.version);
  36. } else {
  37. error = new Error(`doc updater returned a non-success status code: ${res.statusCode}`);
  38. logger.error({err: error, project_id, doc_id, url}, "error accessing doc updater");
  39. return callback(error);
  40. }
  41. });
  42. },
  43. setDocument(project_id, doc_id, content, user_id, callback) {
  44. if (callback == null) { callback = function(error) {}; }
  45. const url = `${Settings.apis.documentupdater.url}/project/${project_id}/doc/${doc_id}`;
  46. logger.log({project_id, doc_id}, "setting doc in document updater");
  47. return request.post({
  48. url,
  49. json: {
  50. lines: content.split("\n"),
  51. source: "restore",
  52. user_id,
  53. undoing: true
  54. }
  55. }, function(error, res, body){
  56. if (error != null) {
  57. return callback(error);
  58. }
  59. if ((res.statusCode >= 200) && (res.statusCode < 300)) {
  60. return callback(null);
  61. } else {
  62. error = new Error(`doc updater returned a non-success status code: ${res.statusCode}`);
  63. logger.error({err: error, project_id, doc_id, url}, "error accessing doc updater");
  64. return callback(error);
  65. }
  66. });
  67. }
  68. });