ProjectController.coffee 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. User = require('../models/User').User
  2. Project = require('../models/Project').Project
  3. sanitize = require('sanitizer')
  4. path = require "path"
  5. logger = require('logger-sharelatex')
  6. _ = require('underscore')
  7. fs = require('fs')
  8. SecurityManager = require '../managers/SecurityManager'
  9. Settings = require('settings-sharelatex')
  10. projectCreationHandler = require '../Features/Project/ProjectCreationHandler'
  11. projectDuplicator = require('../Features/Project/ProjectDuplicator')
  12. projectDeleter = require("../Features/Project/ProjectDeleter")
  13. ProjectZipStreamManager = require '../Features/Downloads/ProjectZipStreamManager'
  14. metrics = require('../infrastructure/Metrics')
  15. TagsHandler = require('../Features/Tags/TagsHandler')
  16. SubscriptionLocator = require("../Features/Subscription/SubscriptionLocator")
  17. SubscriptionFormatters = require("../Features/Subscription/SubscriptionFormatters")
  18. FileStoreHandler = require("../Features/FileStore/FileStoreHandler")
  19. module.exports = class ProjectController
  20. constructor: ()->
  21. startBufferingRequest: (req, res, next) ->
  22. req.bufferedChunks = []
  23. req.endEmitted = false
  24. bufferChunk = (chunk) -> req.bufferedChunks.push(chunk)
  25. req.on "data", bufferChunk
  26. endCallback = () -> req.endEmitted = true
  27. req.on "end", endCallback
  28. req.emitBufferedData = () ->
  29. logger.log chunks: @bufferedChunks.length, emittedEnd: @endEmitted, "emitting buffer chunks"
  30. @removeListener "data", bufferChunk
  31. while @bufferedChunks.length > 0
  32. @emit "data", @bufferedChunks.shift()
  33. @removeListener "end", endCallback
  34. @emit "end" if @endEmitted
  35. next()