diff --git a/AUTHORS b/AUTHORS index 52f7d4f7e5c..6799dc6fc58 100644 --- a/AUTHORS +++ b/AUTHORS @@ -11,3 +11,6 @@ Anand Suresh Brett Bergmann Jesse Friedman Zach Bjornson + +Greta.io +Dennis MÃ¥rtensson diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 0e0d01de59d..6fa92bcb7d4 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -16,6 +16,7 @@ Ben Stahl Brett Bergmann Burcu Dogan Cristian Almstrand +Dennis MÃ¥rtensson Gor Martsen Hector Rovira Ido Shamun diff --git a/packages/pubsub/src/topic.js b/packages/pubsub/src/topic.js index e5fe34c40d5..8bf664a0696 100644 --- a/packages/pubsub/src/topic.js +++ b/packages/pubsub/src/topic.js @@ -375,6 +375,8 @@ Topic.prototype.getSubscriptionsStream = function(options) { * @param {object=} options - Configuration object. * @param {boolean} options.raw - Enable if you require setting attributes on * your messages. + * @param {number} options.timeout - Set a maximum amount of time in + * milliseconds before giving up if no response is received. * @param {function=} callback - The callback function. * * @example @@ -435,6 +437,7 @@ Topic.prototype.getSubscriptionsStream = function(options) { * var messageIds = data[0]; * var apiResponse = data[1]; * }); + * */ Topic.prototype.publish = function(messages, options, callback) { messages = arrify(messages); @@ -456,6 +459,10 @@ Topic.prototype.publish = function(messages, options, callback) { method: 'publish', }; + if (is.number(options.timeout)) { + protoOpts.timeout = options.timeout; + } + var reqOpts = { topic: this.name, messages: messages diff --git a/packages/pubsub/test/topic.js b/packages/pubsub/test/topic.js index 2a06c2ec2e7..5e432f3a021 100644 --- a/packages/pubsub/test/topic.js +++ b/packages/pubsub/test/topic.js @@ -254,6 +254,19 @@ describe('Topic', function() { topic.publish(message, assert.ifError); }); + it('should honor the timeout setting', function(done) { + var options = { + timeout: 10 + }; + + topic.request = function(protoOpts) { + assert.strictEqual(protoOpts.timeout, options.timeout); + done(); + }; + + topic.publish(message, options, assert.ifError); + }); + it('should send correct api request for raw message', function(done) { topic.request = function(protoOpts, reqOpts) { assert.deepEqual(reqOpts.messages, [