Example #1
0
    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();
      });
    });
Example #3
0
  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);
 });
Example #6
0
      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 }));
            });
          }
        });
      });