diff --git a/lib/read-stream.js b/lib/read-stream.js index f026dcf..0e5cb89 100644 --- a/lib/read-stream.js +++ b/lib/read-stream.js @@ -41,6 +41,7 @@ module.exports = function createReadStream(options) { options = _.assign({ buffer: true, read: true, + meta: true, awsOptions: { }, s3: new AWS.S3() }, options); @@ -72,8 +73,10 @@ module.exports = function createReadStream(options) { }) .on('error', resolve) .read(0); // Trigger initial read for open event - } else { + } else if (options.meta) { options.s3.headObject(request, resolve); + } else { + resolve(null, request); } }); }; diff --git a/test/spec/read-stream.spec.js b/test/spec/read-stream.spec.js index bbd01bb..b379e86 100644 --- a/test/spec/read-stream.spec.js +++ b/test/spec/read-stream.spec.js @@ -130,5 +130,19 @@ describe('#createReadStream', function() { expect(this.s3.headObject).to.be.calledOnce; }); + it('should not make additional S3 calls when meta disabled', function() { + var object = { Key: 'banana', Bucket: 'apple' }, + stream = through2.obj(); + + stream.pipe(createReadStream({ + s3: this.s3, + read: false, + meta: false + })).read(0); + stream.end(object); + + expect(this.s3.headObject).not.to.be.called; + }); + });