| 1234567891011121314151617181920212223242526272829303132 |
- 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
- }
|