LinkedFilesHandler.coffee 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. FileWriter = require '../../infrastructure/FileWriter'
  2. EditorController = require '../Editor/EditorController'
  3. ProjectLocator = require '../Project/ProjectLocator'
  4. Project = require("../../models/Project").Project
  5. ProjectGetter = require("../Project/ProjectGetter")
  6. _ = require 'underscore'
  7. {
  8. ProjectNotFoundError,
  9. V1ProjectNotFoundError,
  10. BadDataError
  11. } = require './LinkedFilesErrors'
  12. module.exports = LinkedFilesHandler =
  13. getFileById: (project_id, file_id, callback=(err, file)->) ->
  14. ProjectLocator.findElement {
  15. project_id,
  16. element_id: file_id,
  17. type: 'file'
  18. }, (err, file, path, parentFolder) ->
  19. return callback(err) if err?
  20. callback(null, file, path, parentFolder)
  21. getSourceProject: (data, callback=(err, project)->) ->
  22. projection = {_id: 1, name: 1}
  23. if data.v1_source_doc_id?
  24. Project.findOne {'overleaf.id': data.v1_source_doc_id}, projection, (err, project) ->
  25. return callback(err) if err?
  26. if !project?
  27. return callback(new V1ProjectNotFoundError())
  28. callback(null, project)
  29. else if data.source_project_id?
  30. ProjectGetter.getProject data.source_project_id, projection, (err, project) ->
  31. return callback(err) if err?
  32. if !project?
  33. return callback(new ProjectNotFoundError())
  34. callback(null, project)
  35. else
  36. callback(new BadDataError('neither v1 nor v2 id present'))
  37. importFromStream: (
  38. project_id,
  39. readStream,
  40. linkedFileData,
  41. name,
  42. parent_folder_id,
  43. user_id,
  44. callback=(err, file)->
  45. ) ->
  46. callback = _.once(callback)
  47. FileWriter.writeStreamToDisk project_id, readStream, (err, fsPath) ->
  48. return callback(err) if err?
  49. EditorController.upsertFile project_id,
  50. parent_folder_id,
  51. name,
  52. fsPath,
  53. linkedFileData,
  54. "upload",
  55. user_id,
  56. (err, file) =>
  57. return callback(err) if err?
  58. callback(null, file)
  59. importContent: (
  60. project_id,
  61. content,
  62. linkedFileData,
  63. name,
  64. parent_folder_id,
  65. user_id,
  66. callback=(err, file)->
  67. ) ->
  68. callback = _.once(callback)
  69. FileWriter.writeContentToDisk project_id, content, (err, fsPath) ->
  70. return callback(err) if err?
  71. EditorController.upsertFile project_id,
  72. parent_folder_id,
  73. name,
  74. fsPath,
  75. linkedFileData,
  76. "upload",
  77. user_id,
  78. (err, file) =>
  79. return callback(err) if err?
  80. callback(null, file)