kinesis-client-library
Version:
Process Kinesis streams and automatically scale up or down as shards split or merge.
34 lines (33 loc) • 1.06 kB
JavaScript
;
var async_1 = require('async');
exports.listShards = function (client, stream, callback) {
var shards = [];
var foundAllShards = false;
var startShardId;
var next = function (done) {
var params = {
StreamName: stream,
ExclusiveStartShardId: startShardId,
};
client.describeStream(params, function (err, data) {
if (err) {
return done(err);
}
if (!data.StreamDescription.HasMoreShards) {
foundAllShards = true;
}
var lastShard = data.StreamDescription.Shards[data.StreamDescription.Shards.length - 1];
startShardId = lastShard.ShardId;
shards = shards.concat(data.StreamDescription.Shards);
done();
});
};
var test = function () { return !!foundAllShards; };
var finish = function (err) {
if (err) {
return callback(err);
}
callback(null, shards);
};
async_1.doUntil(next, test, finish);
};