DocstoreManager.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const request = require('request')
  2. const logger = require('logger-sharelatex')
  3. const Settings = require('@overleaf/settings')
  4. function peekDocument(projectId, docId, callback) {
  5. const url = `${Settings.apis.docstore.url}/project/${projectId}/doc/${docId}/peek`
  6. logger.log(
  7. { project_id: projectId, doc_id: docId },
  8. 'getting doc from docstore'
  9. )
  10. request.get(url, function (error, res, body) {
  11. if (error != null) {
  12. return callback(error)
  13. }
  14. if (res.statusCode >= 200 && res.statusCode < 300) {
  15. try {
  16. body = JSON.parse(body)
  17. } catch (error1) {
  18. error = error1
  19. return callback(error)
  20. }
  21. logger.log(
  22. { project_id: projectId, doc_id: docId, version: body.version },
  23. 'got doc from docstore'
  24. )
  25. return callback(null, body.lines.join('\n'), body.version)
  26. } else {
  27. return callback(
  28. new Error(
  29. `docstore returned a non-success status code: ${res.statusCode}`
  30. )
  31. )
  32. }
  33. })
  34. }
  35. module.exports = {
  36. promises: {
  37. peekDocument: (projectId, docId) => {
  38. return new Promise((resolve, reject) => {
  39. peekDocument(projectId, docId, (err, content, version) => {
  40. if (err) {
  41. reject(err)
  42. } else {
  43. resolve([content, version])
  44. }
  45. })
  46. })
  47. },
  48. },
  49. }