FileWriter.coffee 850 B

1234567891011121314151617181920212223
  1. fs = require 'fs'
  2. logger = require 'logger-sharelatex'
  3. uuid = require 'uuid'
  4. _ = require 'underscore'
  5. Settings = require 'settings-sharelatex'
  6. module.exports =
  7. writeStreamToDisk: (identifier, stream, callback = (error, fsPath) ->) ->
  8. callback = _.once(callback)
  9. fsPath = "#{Settings.path.dumpFolder}/#{identifier}_#{uuid.v4()}"
  10. writeStream = fs.createWriteStream(fsPath)
  11. stream.pipe(writeStream)
  12. stream.on 'error', (err)->
  13. logger.err {err, identifier, fsPath}, "[writeStreamToDisk] something went wrong with incoming stream"
  14. callback(err)
  15. writeStream.on 'error', (err)->
  16. logger.err {err, identifier, fsPath}, "[writeStreamToDisk] something went wrong with writing to disk"
  17. callback(err)
  18. writeStream.on "finish", ->
  19. logger.log {identifier, fsPath}, "[writeStreamToDisk] write stream finished"
  20. callback null, fsPath