AuthenticationController = require '../Authentication/AuthenticationController' EditorController = require '../Editor/EditorController' Settings = require 'settings-sharelatex' logger = require 'logger-sharelatex' module.exports = LinkedFilesController = { Agents: { url: require('./UrlAgent') } createLinkedFile: (req, res, next) -> {project_id} = req.params {name, provider, data, parent_folder_id} = req.body user_id = AuthenticationController.getLoggedInUserId(req) logger.log {project_id, name, provider, data, parent_folder_id, user_id}, 'create linked file request' if !LinkedFilesController.Agents.hasOwnProperty(provider) return res.send(400) unless provider in Settings.enabledLinkedFileTypes return res.send(400) Agent = LinkedFilesController.Agents[provider] linkedFileData = Agent.sanitizeData(data) linkedFileData.provider = provider Agent.writeIncomingFileToDisk project_id, linkedFileData, user_id, (error, fsPath) -> if error? logger.error {err: error, project_id, name, linkedFileData, parent_folder_id, user_id}, 'error writing linked file to disk' return Agent.handleError(error, req, res, next) EditorController.upsertFile project_id, parent_folder_id, name, fsPath, linkedFileData, "upload", user_id, (error) -> return next(error) if error? res.send(204) # created }