Skip to content
Snippets Groups Projects
Verified Commit 06d7e8c6 authored by Shane Kilkelly's avatar Shane Kilkelly Committed by David Mehren
Browse files

Handle linked-output-files from v1 imports

parent 9215d957
No related branches found
No related tags found
No related merge requests found
......@@ -60,6 +60,10 @@ SourceFileNotFoundError.prototype.__proto__ = Error.prototype
module.exports = ProjectFileAgent =
V1ProjectNotFoundError: V1ProjectNotFoundError
_v1ProjectNotFoundMessage: "Sorry, the source project is not yet imported to Overleaf v2. Please import it to Overleaf v2 to refresh this file"
sanitizeData: (data) ->
return _.pick(
data,
......@@ -155,7 +159,7 @@ module.exports = ProjectFileAgent =
else if error instanceof ProjectNotFoundError
res.status(404).send("Project not found")
else if error instanceof V1ProjectNotFoundError
res.status(409).send("Sorry, the source project is not yet imported to Overleaf v2. Please import it to Overleaf v2 to refresh this file")
res.status(409).send(ProjectFileAgent._v1ProjectNotFoundMessage)
else
next(error)
next()
......@@ -6,6 +6,7 @@ Settings = require 'settings-sharelatex'
CompileManager = require '../Compile/CompileManager'
CompileController = require '../Compile/CompileController'
ClsiCookieManager = require '../Compile/ClsiCookieManager'
ProjectFileAgent = require './ProjectFileAgent'
_ = require "underscore"
request = require "request"
......@@ -42,31 +43,36 @@ module.exports = ProjectOutputFileAgent = {
source_output_file_path: data.source_output_file_path
}
canCreate: (data) -> true
canCreate: ProjectFileAgent.canCreate
decorateLinkedFileData: (data, callback = (err, newData) ->) ->
callback = _.once(callback)
ProjectGetter.getProject data.source_project_id, {name: 1}, (err, project) ->
return callback(err) if err?
if !project?
return callback(new ProjectNotFoundError())
callback(err, _.extend(data, {source_project_display_name: project.name}))
_getSourceProject: ProjectFileAgent._getSourceProject
decorateLinkedFileData: ProjectFileAgent.decorateLinkedFileData
_validate: (data) ->
return (
(data.source_project_id? || data.v1_source_doc_id?) &&
data.source_output_file_path?
)
checkAuth: (project_id, data, current_user_id, callback = (error, allowed)->) ->
callback = _.once(callback)
{ source_project_id } = data
AuthorizationManager.canUserReadProject current_user_id, source_project_id, null, (err, canRead) ->
if !ProjectOutputFileAgent._validate(data)
return callback(new BadDataError())
@_getSourceProject data, (err, project) ->
return callback(err) if err?
AuthorizationManager.canUserReadProject current_user_id, project._id, null, (err, canRead) ->
return callback(err) if err?
callback(null, canRead)
_validate: (data) ->
data.source_project_id? && data.source_output_file_path?
writeIncomingFileToDisk: (project_id, data, current_user_id, callback = (error, fsPath) ->) ->
callback = _.once(callback)
if !ProjectOutputFileAgent._validate(data)
return callback(new BadDataError())
{ source_project_id, source_output_file_path } = data
{ source_output_file_path } = data
@_getSourceProject data, (err, project) ->
return callback(err) if err?
source_project_id = project._id
CompileManager.compile source_project_id, null, {}, (err) ->
return callback(err) if err?
url = "#{Settings.apis.clsi.url}/project/#{source_project_id}/output/#{source_output_file_path}"
......@@ -92,6 +98,8 @@ module.exports = ProjectOutputFileAgent = {
res.status(404).send("Could not get output file")
else if error instanceof ProjectNotFoundError
res.status(404).send("Project not found")
else if error instanceof ProjectFileAgent.V1ProjectNotFoundError
res.status(404).send(ProjectFileAgent._v1ProjectNotFoundMessage)
else
next(error)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment