LinkedFilesController.coffee 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. AuthenticationController = require '../Authentication/AuthenticationController'
  2. EditorController = require '../Editor/EditorController'
  3. Settings = require 'settings-sharelatex'
  4. logger = require 'logger-sharelatex'
  5. module.exports = LinkedFilesController = {
  6. Agents: {
  7. url: require('./UrlAgent')
  8. }
  9. createLinkedFile: (req, res, next) ->
  10. {project_id} = req.params
  11. {name, provider, data, parent_folder_id} = req.body
  12. user_id = AuthenticationController.getLoggedInUserId(req)
  13. logger.log {project_id, name, provider, data, parent_folder_id, user_id}, 'create linked file request'
  14. if !LinkedFilesController.Agents.hasOwnProperty(provider)
  15. return res.send(400)
  16. unless provider in Settings.enabledLinkedFileTypes
  17. return res.send(400)
  18. Agent = LinkedFilesController.Agents[provider]
  19. linkedFileData = Agent.sanitizeData(data)
  20. linkedFileData.provider = provider
  21. Agent.writeIncomingFileToDisk project_id, linkedFileData, user_id, (error, fsPath) ->
  22. if error?
  23. logger.error {err: error, project_id, name, linkedFileData, parent_folder_id, user_id}, 'error writing linked file to disk'
  24. return Agent.handleError(error, req, res, next)
  25. EditorController.upsertFile project_id, parent_folder_id, name, fsPath, linkedFileData, "upload", user_id, (error) ->
  26. return next(error) if error?
  27. res.send(204) # created
  28. }