diff --git a/lib/units/storage/amazons3.js b/lib/units/storage/amazons3.js index d801c228..47b891fb 100644 --- a/lib/units/storage/amazons3.js +++ b/lib/units/storage/amazons3.js @@ -1,6 +1,7 @@ var http = require('http') var util = require('util') var path = require('path') +var fs = require('fs') var express = require('express') var validator = require('express-validator') @@ -8,13 +9,12 @@ var bodyParser = require('body-parser') var formidable = require('formidable') var Promise = require('bluebird') var uuid = require('node-uuid') -var fs = require('fs') +var AWS = require('aws-sdk') var lifecycle = require('../../util/lifecycle') var logger = require('../../util/logger') var requtil = require('../../util/requtil') -var AWS = require('aws-sdk') module.exports = function(options) { var log = logger.createLogger('storage:s3') @@ -23,14 +23,9 @@ module.exports = function(options) { , credentials = new AWS.SharedIniFileCredentials({ profile: options.profile }) - , bucket = options.Bucket - , s3 - - // TODO: remove later - log.debug(options) AWS.config.credentials = credentials; - s3 = new AWS.S3(options) + var s3 = new AWS.S3(options) app.set('strict routing', true) app.set('case sensitive routing', true) @@ -49,18 +44,18 @@ module.exports = function(options) { s3.putObject({ Key: key , Body: rs - , Bucket: bucket + , Bucket: options.bucket , Metadata: { plugin: plugin , name: filename } }, function(err, data) { if (err) { - log.error('failed to store "%s" bucket:"%s"', key, bucket) + log.error('failed to store "%s" bucket:"%s"', key, options.bucket) log.error(err); reject(err); } else { - log.info('Stored "%s" to %s/%s', name, bucket, key) + log.info('Stored "%s" to %s/%s', name, options.bucket, key) resolve({ id: id , name: filename @@ -69,6 +64,7 @@ module.exports = function(options) { }) }) } + function getHref(plugin, id, name) { return util.format( '/s/%s/%s%s' @@ -77,44 +73,6 @@ module.exports = function(options) { , name ? '/' + path.basename(name) : '' ) } - app.post('/s/download/:plugin', function(req, res) { - requtil.validate(req, function() { - req.checkBody('url').notEmpty() - }) - .then(function() { - return putObject(req.params.plugin, req.body.url) - }) - .then(function(obj) { - var plugin = req.params.plugin - res.status(201) - .json({ - success: true - , resource: { - date: new Date() - , plugin: plugin - , id: obj.id - , name: obj.name - , href: getHref(plugin, obj.id, obj.name) - } - }) - }) - .catch(requtil.ValidationError, function(err) { - res.status(400) - .json({ - success: false - , error: 'ValidationError' - , validationErrors: err.errors - }) - }) - .catch(function(err) { - log.error('Error storing resource', err.stack) - res.status(500) - .json({ - success: false - , error: 'ServerError' - }) - }) - }) app.post('/s/upload/:plugin', function(req, res, next) { var form = new formidable.IncomingForm() @@ -151,7 +109,7 @@ module.exports = function(options) { , href: getHref(plugin, file.id, file.name) } }) - return mapped; + return mapped })() }) return storedFiles @@ -170,13 +128,13 @@ module.exports = function(options) { error: 'ServerError' }) }) - }); + }) app.get('/s/blob/:id/:name', function(req, res) { var params = { Key: req.params.id, - Bucket: bucket - }; + Bucket: options.bucket + } s3.getObject(params, function(err, data) { if (err) { log.error('failed to retreive[' + path + ']') @@ -185,8 +143,8 @@ module.exports = function(options) { } else { res.set({ 'Content-type': data.ContentType - }); - res.send(data.Body); + }) + res.send(data.Body) } }) })