Skip to content
Snippets Groups Projects
Select Git revision
  • 108819a289ec582cfba9a2aa9c261565b89e0873
  • main default protected
  • 08-collumns
3 results

collumns.rs

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    ProjectOutputFileAgent.coffee 5.23 KiB
    AuthorizationManager = require('../Authorization/AuthorizationManager')
    ProjectGetter = require('../Project/ProjectGetter')
    Settings = require 'settings-sharelatex'
    CompileManager = require '../Compile/CompileManager'
    ClsiManager = require '../Compile/ClsiManager'
    ProjectFileAgent = require './ProjectFileAgent'
    _ = require "underscore"
    {
    	BadDataError,
    	AccessDeniedError,
    	BadEntityTypeError,
    	OutputFileFetchFailedError
    } = require './LinkedFilesErrors'
    LinkedFilesHandler = require './LinkedFilesHandler'
    logger = require 'logger-sharelatex'
    
    
    module.exports = ProjectOutputFileAgent = {
    
    	_prepare: (project_id, linkedFileData, user_id, callback=(err, linkedFileData)->) ->
    		@_checkAuth project_id, linkedFileData, user_id, (err, allowed) =>
    			return callback(err) if err?
    			return callback(new AccessDeniedError()) if !allowed
    			if !@_validate(linkedFileData)
    				return callback(new BadDataError())
    			callback(null, linkedFileData)
    
    	createLinkedFile: (project_id, linkedFileData, name, parent_folder_id, user_id, callback) ->
    		if !@_canCreate(linkedFileData)
    			return callback(new AccessDeniedError())
    		linkedFileData = @_sanitizeData(linkedFileData)
    		@_prepare project_id, linkedFileData, user_id, (err, linkedFileData) =>
    			return callback(err) if err?
    			@_getFileStream linkedFileData, user_id, (err, readStream) =>
    				return callback(err) if err?
    				readStream.on "error", callback
    				readStream.on "response", (response) =>
    					if 200 <= response.statusCode < 300
    						readStream.resume()
    						LinkedFilesHandler.importFromStream project_id,
    							readStream,
    							linkedFileData,
    							name,
    							parent_folder_id,
    							user_id,
    							(err, file) ->
    								return callback(err) if err?
    								callback(null, file._id) # Created
    					else
    						err = new OutputFileFetchFailedError(
    							"Output file fetch failed: #{linkedFileData.build_id}, #{linkedFileData.source_output_file_path}"
    						)
    						err.statusCode = response.statusCode
    						callback(err)
    
    	refreshLinkedFile: (project_id, linkedFileData, name, parent_folder_id, user_id, callback) ->
    		@_prepare project_id, linkedFileData, user_id, (err, linkedFileData) =>
    			return callback(err) if err?
    			@_compileAndGetFileStream linkedFileData, user_id, (err, readStream, new_build_id) =>
    				return callback(err) if err?
    				readStream.on "error", callback
    				readStream.on "response", (response) =>
    					if 200 <= response.statusCode < 300
    						readStream.resume()
    						linkedFileData.build_id = new_build_id
    						LinkedFilesHandler.importFromStream project_id,
    							readStream,
    							linkedFileData,
    							name,
    							parent_folder_id,