var finalize = function (data) { form.removeListener('error', onError); form.removeListener('part', onPart); form.removeListener('field', onField); form.removeListener('close', onClose); if (arrayFields) { data = Qs.parse(data); } request.payload = data; return next(); };
batch.end(function(err, results) { if(err) { fileUploadStatus.err = err; } form.removeListener('close', onEnd); var userId = results[0], part = results[1], fileName = part.filename; headers['Content-Length'] = part.byteCount; s3Client.putStream(part, fileName, headers, function(err, s3Response) { if (err) { fileUploadStatus.err = err; fileUploadStatus.statusCode = s3Response.statusCode; } else { if(s3Response.statusCode === HTTP_OK) { fileUploadStatus.filePath =s3Response.req.url; fileUploadStatus.fileName = fileName; } } req.body = {user_id : userId}; req.fileUploadStatus = fileUploadStatus; next(); }); });
batch.end(function(err, results) { if(err) { swagger.errors.invalid('request'); } form.removeListener('close', onEnd); var title = results[0], tempo = results[1], fileStream = results[2]; console.log('finished parsing form'); var Song = require('../../../../lib/models/song'); var song = new Song({ title: title, tempo: tempo, uploadedFileName: fileStream.filename, uploadedFileByteCount: fileStream.byteCount }); // TODO: queue to SQS for processing song.save(function (err, song) { if(err) { throw swagger.errors.notFound('should be 500 - mongodb save failure'); } else { var path = '/audio/' + song.songId + '.mp3'; s3Client.sendFile(fileStream, path, function(err) { if(err) { swagger.errors.invalid('should be 500 - s3 failure'); } var s3Url = 'https://s3.amazonaws.com/' + config.aws.s3.bucket + path; res.send(JSON.stringify( {'songId': song.songId, 'originalAudioS3Url': s3Url} )); }); } }); });
batch.end(function(err, results) { if(err) { routeHelper.addError(req, err); return next(); } form.removeListener('close', onEnd); var part = results[1]; var fileName = part.filename; headers['Content-Length'] = part.byteCount; var targetPath = '/challenges' + '/' + req.params.challengeId + '/' + fileName; _.extend(file, { filePath : targetPath, fileName : fileName, size : part.byteCount, // storageLocation configured in config. same as name of storage provider // challenge service is using storageLocation so chaned storageType to storage location storageLocation : config.uploads.storageProvider }); s3Client.putStream(part, targetPath, headers, function(err, s3Response) { if (err) { routeHelper.addError(req, err, s3Response.statusCode); } else { console.log('s3 response code' + s3Response.statusCode); if(s3Response.statusCode === HTTP_OK) { req.body = file; } else { // S3 response code is not HTTP OK error occured during upload routeHelper.addError(req, new Error('upload failed'), s3Response.statusCode); } } next(); }); });
batch.end(function(err, results) { console.log('end'); if(err) { routeHelper.addError(req, err); return next(); } form.removeListener('close', onEnd); var part = results[1]; uploadFile(part); });
batch.end(function(err, results) { if (err) { return self._handleError(401, res, err); } form.removeListener('close', onUnexpectedEnd); var userPrefix = results[0] , part = results[1] , filename = part.filename , actualSize = part.byteCount , destPrefix = (userPrefix) ? '/' + userPrefix + '/' : '/' , destPath = encodeURI(destPrefix + uuid.v1() + '/' + filename) , type = mime.lookup(destPath) ; if (actualSize >= maxsize ) { res.writeHead(413, {'content-type': 'application/json'}); return res.end('file-too-large'); } headers['Content-Length'] = part.byteCount; headers['Content-Type'] = type; self._s3Client.putStream(part, destPath, headers, function (err, s3Response) { if (err) { res.writeHead(500, {'content-type': 'application/json'}); res.end(JSON.stringify({ statusCode: 500, error: err.toString() })); return; } res.writeHead(res.statusCode, {'content-type': contentType}); if (s3Response.statusCode === 200) { res.end(JSON.stringify({ statusCode: 200, uri: prefix + '/raw' + destPath, type: type })); } else { var bufs = []; s3Response.on('data', function (d){ bufs.push(d); }); s3Response.on('end', function () { // just return the ugly xml body for now var body =Buffer.concat(bufs).toString(); res.end(JSON.stringify({ statusCode: s3Response.statusCode, error: body })); }); } }); });