| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- const ProjectGetter = require('../Project/ProjectGetter')
- const ProjectLocator = require('../Project/ProjectLocator')
- const ProjectEntityHandler = require('../Project/ProjectEntityHandler')
- const ProjectEntityUpdateHandler = require('../Project/ProjectEntityUpdateHandler')
- const logger = require('@overleaf/logger')
- const _ = require('lodash')
- const { plainTextResponse } = require('../../infrastructure/Response')
- const { expressify } = require('@overleaf/promise-utils')
- async function getDocument(req, res) {
- const { Project_id: projectId, doc_id: docId } = req.params
- const plain = req.query.plain === 'true'
- const peek = req.query.peek === 'true'
- const project = await ProjectGetter.promises.getProject(projectId, {
- rootFolder: true,
- overleaf: true,
- })
- if (!project) {
- return res.sendStatus(404)
- }
- const { path } = await ProjectLocator.promises.findElement({
- project,
- element_id: docId,
- type: 'doc',
- })
- const { lines, version, ranges } = await ProjectEntityHandler.promises.getDoc(
- projectId,
- docId,
- { peek }
- )
- if (plain) {
- plainTextResponse(res, lines.join('\n'))
- } else {
- const projectHistoryId = _.get(project, 'overleaf.history.id')
- const historyRangesSupport = _.get(
- project,
- 'overleaf.history.rangesSupportEnabled',
- false
- )
- // all projects are now migrated to Full Project History, keeping the field
- // for API compatibility
- const projectHistoryType = 'project-history'
- res.json({
- lines,
- version,
- ranges,
- pathname: path.fileSystem,
- projectHistoryId,
- projectHistoryType,
- historyRangesSupport,
- })
- }
- }
- async function setDocument(req, res) {
- const { Project_id: projectId, doc_id: docId } = req.params
- const { lines, version, ranges, lastUpdatedAt, lastUpdatedBy } = req.body
- const result = await ProjectEntityUpdateHandler.promises.updateDocLines(
- projectId,
- docId,
- lines,
- version,
- ranges,
- lastUpdatedAt,
- lastUpdatedBy
- )
- logger.debug(
- { docId, projectId },
- 'finished receiving set document request from api (docupdater)'
- )
- res.json(result)
- }
- module.exports = {
- getDocument: expressify(getDocument),
- setDocument: expressify(setDocument),
- }
|