s3-npm-cache
Version:
Lightweight runtime to cache NPM dependencies in S3
73 lines (62 loc) • 1.74 kB
JavaScript
var AWS = require('aws-sdk'),
s3 = new AWS.S3(),
fs = require('fs'),
q = require('q');
AWS.config.update({
region: 'ap-southeast-2'
});
var setS3BucketName = function (name) {
s3BucketName = name;
};
var checkCredentials = function () {
return process.env.AWS_SECRET_ACCESS_KEY && process.env.AWS_ACCESS_KEY_ID;
};
var uploadFileToS3 = function (fileName) {
var defer = q.defer();
fs.readFile('./' + fileName, function (err, buffer) {
if (err) {
defer.reject(err);
}
s3.putObject({
Bucket: s3BucketName,
Key: fileName,
ACL: 'bucket-owner-full-control',
ContentType: 'application/gzip',
Body: buffer
}, function (err) {
if (err) {
defer.reject(err);
} else {
defer.resolve();
}
});
});
return defer.promise;
};
var getFileFromS3 = function (fileName) {
var defer = q.defer();
s3.getObject({
Bucket: s3BucketName,
Key: fileName
}, function (err, data) {
if (err) {
defer.reject(err);
} else if (data && data.Body) {
fs.writeFile(fileName, data.Body, "binary", function (err) {
if (err) {
defer.reject(err);
}
defer.resolve(fileName);
});
} else {
defer.reject('No errors downloading the file but no buffer. Please try again.');
}
});
return defer.promise;
};
module.exports = {
setS3BucketName: setS3BucketName,
checkCredentials: checkCredentials,
uploadFileToS3: uploadFileToS3,
getFileFromS3: getFileFromS3
};