overleaf/services/web/app/coffee/controllers/ProjectController.coffee

43 lines
1.5 KiB
CoffeeScript
Raw Normal View History

2014-02-12 10:23:40 +00:00
User = require('../models/User').User
Project = require('../models/Project').Project
sanitize = require('sanitizer')
2014-02-12 10:23:40 +00:00
path = require "path"
logger = require('logger-sharelatex')
_ = require('underscore')
fs = require('fs')
SecurityManager = require '../managers/SecurityManager'
Settings = require('settings-sharelatex')
projectCreationHandler = require '../Features/Project/ProjectCreationHandler'
projectDuplicator = require('../Features/Project/ProjectDuplicator')
projectDeleter = require("../Features/Project/ProjectDeleter")
2014-02-12 10:23:40 +00:00
ProjectZipStreamManager = require '../Features/Downloads/ProjectZipStreamManager'
metrics = require('../infrastructure/Metrics')
TagsHandler = require('../Features/Tags/TagsHandler')
SubscriptionLocator = require("../Features/Subscription/SubscriptionLocator")
SubscriptionFormatters = require("../Features/Subscription/SubscriptionFormatters")
FileStoreHandler = require("../Features/FileStore/FileStoreHandler")
module.exports = class ProjectController
2014-04-04 16:08:14 +00:00
constructor: ()->
2014-02-12 10:23:40 +00:00
startBufferingRequest: (req, res, next) ->
req.bufferedChunks = []
req.endEmitted = false
bufferChunk = (chunk) -> req.bufferedChunks.push(chunk)
req.on "data", bufferChunk
endCallback = () -> req.endEmitted = true
req.on "end", endCallback
req.emitBufferedData = () ->
logger.log chunks: @bufferedChunks.length, emittedEnd: @endEmitted, "emitting buffer chunks"
@removeListener "data", bufferChunk
while @bufferedChunks.length > 0
@emit "data", @bufferedChunks.shift()
@removeListener "end", endCallback
@emit "end" if @endEmitted
next()