UNPKG

s3-npm-cache

Version:

Lightweight runtime to cache NPM dependencies in S3

73 lines (62 loc) 1.74 kB
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 };