From 0972c5b9ed0878f04603be1acfa5cf56a9b28eea Mon Sep 17 00:00:00 2001 From: Dan Mohl Date: Fri, 8 Nov 2013 10:51:01 -0600 Subject: [PATCH] Added a promise and alt syntax version of listQueues. --- dist/fogjs.js | 42 +++++++++++++++++++++++++- dist/fogjs.min.js | 2 +- src/fogServiceBus.js | 37 +++++++++++++++++++++++ test/fogServiceBus.integrationtests.js | 33 +++++++++++--------- 4 files changed, 97 insertions(+), 17 deletions(-) diff --git a/dist/fogjs.js b/dist/fogjs.js index e41f03c..cd06fa5 100644 --- a/dist/fogjs.js +++ b/dist/fogjs.js @@ -809,7 +809,10 @@ exports.getQueue = function (serviceBusOrAllParams, queuePath, options) { if (serviceBusOrAllParams && serviceBusOrAllParams.queuePath) { queuePath = serviceBusOrAllParams.queuePath; options = serviceBusOrAllParams.options; - getTheQueue(defaultServiceBus); + exports.createQueueIfNotExists(serviceBusOrAllParams) + .then(function() { + getTheQueue(defaultServiceBus); + }); } else { getTheQueue(serviceBusOrAllParams); } @@ -817,6 +820,43 @@ exports.getQueue = function (serviceBusOrAllParams, queuePath, options) { return deferred.promise; }; +// This is similar to the same as the Azure API function with the same name; however, it uses promises instead of callbacks. +// If there is an error, then a new Error is created with the original error text and included as the argument to the reject call. +// If no error message is returned, then a listQueuesResult and a response is returned. +exports.listQueues = function (serviceBusOrAllParams, options) { + var deferred = q.defer(); + var callback = function(error, listQueuesResult, response) { + if (error) { + deferred.reject(new Error(error)); + } else { + var result = { + "listQueuesResult" : listQueuesResult, + "response" : response + }; + deferred.resolve(result); + } + }; + + var listTheQueues = function(serviceBus) { + if (options) { + serviceBus.listQueues(options, callback); + } else { + serviceBus.listQueues(callback); + } + }; + + if (!serviceBusOrAllParams || (serviceBusOrAllParams && serviceBusOrAllParams.options)) { + if (serviceBusOrAllParams && serviceBusOrAllParams.options) { + options = serviceBusOrAllParams.options; + } + listTheQueues(defaultServiceBus); + } else { + listTheQueues(serviceBusOrAllParams); + } + + return deferred.promise; +}; + module.exports = exports; ;var q = require("q"); var azure = require("azure"); diff --git a/dist/fogjs.min.js b/dist/fogjs.min.js index 7b46667..dac8a3f 100644 --- a/dist/fogjs.min.js +++ b/dist/fogjs.min.js @@ -1,2 +1,2 @@ /*! fogjs 08-11-2013 */ -var q=require("q"),azure=require("azure"),exports={},defaultBlobService=azure.createBlobService();exports.createContainerIfNotExists=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={containerCreated:b,response:c};d.resolve(e)}};return c?a.createContainerIfNotExists(b,c,e):a.createContainerIfNotExists(b,e),d.promise},exports.createBlockBlobFromText=function(a,b,c,d,e){var f=q.defer(),g=function(a,b,c){if(a)f.reject(new Error(a));else{var d={blockBlob:b,response:c};f.resolve(d)}},h=function(a){e?a.createBlockBlobFromText(b,c,d,e,g):a.createBlockBlobFromText(b,c,d,g)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.blobText,e=a.options,defaultBlobService.createContainerIfNotExists(b,{publicAccessLevel:"blob"},function(){h(defaultBlobService)})):h(a),f.promise},exports.createBlockBlobFromFile=function(a,b,c,d,e){var f=q.defer(),g=function(a,b,c){if(a)f.reject(new Error(a));else{var d={blockBlob:b,response:c};f.resolve(d)}},h=function(a){e?a.createBlockBlobFromFile(b,c,d,e,g):a.createBlockBlobFromFile(b,c,d,g)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.fileName,e=a.options,exports.createContainerIfNotExists(defaultBlobService,b,{publicAccessLevel:"blob"}).then(function(){h(defaultBlobService)})):h(a),f.promise},exports.createBlockBlobFromStream=function(a,b,c,d,e,f){var g=q.defer(),h=function(a,b,c){if(a)g.reject(new Error(a));else{var d={blockBlob:b,response:c};g.resolve(d)}},i=function(a){f?a.createBlockBlobFromStream(b,c,d,e,f,h):a.createBlockBlobFromStream(b,c,d,e,h)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.stream,e=a.streamLength,f=a.options,exports.createContainerIfNotExists(defaultBlobService,b,{publicAccessLevel:"blob"}).then(function(){i(defaultBlobService)})):i(a),g.promise},exports.deleteContainer=function(a,b,c){var d=q.defer(),e=function(a,b){a?d.reject(new Error(a)):d.resolve(b)};return c?a.deleteContainer(b,c,e):a.deleteContainer(b,e),d.promise},exports.getBlobToText=function(a,b,c,d){var e=q.defer(),f=function(a,b,c,d){if(a)e.reject(new Error(a));else{var f={text:b,blockBlob:c,response:d};e.resolve(f)}},g=function(a){d?a.getBlobToText(b,c,d,f):a.getBlobToText(b,c,f)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.options,defaultBlobService.createContainerIfNotExists(b,{publicAccessLevel:"blob"},function(){g(defaultBlobService)})):g(a),e.promise},exports.getBlobToFile=function(a,b,c,d,e){var f=q.defer(),g=function(a,b,c){if(a)f.reject(new Error(a));else{var d={blockBlob:b,response:c};f.resolve(d)}},h=function(a){e?a.getBlobToFile(b,c,d,e,g):a.getBlobToFile(b,c,d,g)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.fileName,e=a.options,exports.createContainerIfNotExists(defaultBlobService,b,{publicAccessLevel:"blob"}).then(function(){h(defaultBlobService)})):h(a),f.promise},exports.getBlobToStream=function(a,b,c,d,e){var f=q.defer(),g=function(a,b,c){if(a)f.reject(new Error(a));else{var d={blockBlob:b,response:c};f.resolve(d)}},h=function(a){e?a.getBlobToStream(b,c,d,e,g):a.getBlobToStream(b,c,d,g)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.writeStream,e=a.options,exports.createContainerIfNotExists(defaultBlobService,b,{publicAccessLevel:"blob"}).then(function(){h(defaultBlobService)})):h(a),f.promise},exports.deleteBlob=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={isSuccessful:b,response:c};e.resolve(d)}},g=function(a){d?a.deleteBlob(b,c,d,f):a.deleteBlob(b,c,f)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.options,exports.createContainerIfNotExists(defaultBlobService,b,{publicAccessLevel:"blob"}).then(function(){g(defaultBlobService)})):g(a),e.promise},module.exports=exports;var q=require("q"),azure=require("azure"),exports={},defaultServiceBus=azure.createServiceBusService(),receivePullSubscriptions=[];exports.createQueueIfNotExists=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={queueCreated:b,response:c};d.resolve(e)}},f=function(a){c?a.createQueueIfNotExists(b,c,e):a.createQueueIfNotExists(b,e)};return a&&a.queuePath?(b=a.queuePath,c=a.options,f(defaultServiceBus)):f(a),d.promise},exports.deleteQueue=function(a,b,c){var d=q.defer(),e=function(a,b){a?d.reject(new Error(a)):d.resolve(b)};return c?a.deleteQueue(b,c,e):a.deleteQueue(b,e),d.promise},exports.createTopicIfNotExists=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={topicCreated:b,response:c};d.resolve(e)}},f=function(a){c?a.createTopicIfNotExists(b,c,e):a.createTopicIfNotExists(b,e)};return a&&a.topicPath?(b=a.topicPath,c=a.options,f(defaultServiceBus)):f(a),d.promise},exports.deleteTopic=function(a,b,c){var d=q.defer(),e=function(a,b){a?d.reject(new Error(a)):d.resolve(b)};return c?a.deleteTopic(b,c,e):a.deleteTopic(b,e),d.promise},exports.sendQueueMessage=function(a,b,c,d){var e=q.defer(),f=function(a,b){a?e.reject(new Error(a)):e.resolve(b)},g=function(a){d?a.sendQueueMessage(b,c,d,f):a.sendQueueMessage(b,c,f)};return a&&a.queuePath?(b=a.queuePath,c=a.message,d=a.options,exports.createQueueIfNotExists(defaultServiceBus,b).then(function(){g(defaultServiceBus)})):g(a),e.promise},exports.receiveQueueMessage=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={receivedMessage:b,response:c};d.resolve(e)}},f=function(a){c?a.receiveQueueMessage(b,c,e):a.receiveQueueMessage(b,e)};return a&&a.queuePath?(b=a.queuePath,c=a.options,exports.createQueueIfNotExists(defaultServiceBus,b).then(function(){f(defaultServiceBus)})):f(a),d.promise},exports.createSubscription=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={createSubscriptionResult:b,response:c};e.resolve(d)}},g=function(a){d?a.createSubscription(b,c,d,f):a.createSubscription(b,c,f)};return a&&a.topicPath?(b=a.topicPath,c=a.subscriptionPath,d=a.options,exports.createTopicIfNotExists(a).then(function(){g(defaultServiceBus)})):g(a),e.promise},exports.deleteSubscription=function(a,b,c,d){var e=q.defer(),f=function(a,b){a?e.reject(new Error(a)):e.resolve(b)},g=function(a){d?a.deleteSubscription(b,c,d,f):a.deleteSubscription(b,c,f)};return a&&a.topicPath?(b=a.topicPath,c=a.subscriptionPath,d=a.options,exports.createSubscription(a).then(function(){g(defaultServiceBus)})):g(a),e.promise},exports.sendTopicMessage=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={receiveTopicMessageResult:b,response:c};e.resolve(d)}},g=function(a){d?a.sendTopicMessage(b,c,d,f):a.sendTopicMessage(b,c,f)};return a&&a.topicPath?(b=a.topicPath,c=a.message,d=a.options,exports.createTopicIfNotExists(a).then(function(){g(defaultServiceBus)})):g(a),e.promise},exports.receiveSubscriptionMessage=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={receiveTopicMessageResult:b,response:c};e.resolve(d)}},g=function(a){d?a.receiveSubscriptionMessage(b,c,d,f):a.receiveSubscriptionMessage(b,c,f)};return a&&a.topicPath?(b=a.topicPath,c=a.subscriptionPath,d=a.options,g(defaultServiceBus)):g(a),e.promise},exports.deleteMessage=function(a,b,c){var d=q.defer(),e=function(a,b){a?d.reject(new Error(a)):d.resolve(b)},f=function(a){c?a.deleteMessage(b,c,e):a.deleteMessage(b,e)};return a&&a.message?(b=a.message,c=a.options,f(defaultServiceBus)):f(a),d.promise},exports.unlockMessage=function(a,b,c){var d=q.defer(),e=function(a,b){a?d.reject(new Error(a)):d.resolve(b)},f=function(a){c?a.unlockMessage(b,c,e):a.unlockMessage(b,e)};return a&&a.message?(b=a.message,c=a.options,f(defaultServiceBus)):f(a),d.promise},exports.getQueue=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={getQueueResult:b,response:c};d.resolve(e)}},f=function(a){c?a.getQueue(b,c,e):a.getQueue(b,e)};return a&&a.queuePath?(b=a.queuePath,c=a.options,f(defaultServiceBus)):f(a),d.promise},module.exports=exports;var q=require("q"),azure=require("azure"),exports={},defaultTableService=azure.createTableService();exports.createTableIfNotExists=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={created:b,response:c};d.resolve(e)}};return c?a.createTableIfNotExists(b,c,e):a.createTableIfNotExists(b,e),d.promise},exports.deleteTable=function(a,b,c){var d=q.defer(),e=function(a,b,c){a?d.reject(new Error(a)):d.resolve(c)};return c?a.deleteTable(b,c,e):a.deleteTable(b,e),d.promise},exports.insertEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={entity:b,response:c};e.resolve(d)}},g=function(a){d?a.insertEntity(b,c,d,f):a.insertEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entity,d=a.options,exports.createTableIfNotExists(defaultTableService,b).then(function(){g(defaultTableService)})):g(a),e.promise},exports.deleteEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={successful:b,response:c};e.resolve(d)}},g=function(a){d?a.deleteEntity(b,c,d,f):a.deleteEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entityDescriptor,d=a.options,exports.createTableIfNotExists(defaultTableService,b).then(function(){g(defaultTableService)})):g(a),e.promise},exports.queryEntity=function(a,b,c,d,e){var f=q.defer(),g=function(a,b,c){if(a)f.reject(new Error(a));else{var d={entity:b,response:c};f.resolve(d)}},h=function(a){e?a.queryEntity(b,c,d,e,g):a.queryEntity(b,c,d,g)};return a&&a.tableName?(b=a.tableName,c=a.entityDescriptor.PartitionKey,d=a.entityDescriptor.RowKey,e=a.options,exports.createTableIfNotExists(defaultTableService,b).then(function(){h(defaultTableService)})):h(a),f.promise},exports.queryEntities=function(a,b,c){var d=q.defer(),e=function(a,b,c,e){if(a)d.reject(new Error(a));else{var f={entities:b,queryResultContinuation:c,response:e};d.resolve(f)}},f=function(a){c?a.queryEntities(b,c,e):a.queryEntities(b,e)};return a&&a.tableQuery?(b=a.tableQuery,c=a.options,f(defaultTableService)):f(a),d.promise},exports.updateEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={entity:b,response:c};e.resolve(d)}},g=function(a){d?a.updateEntity(b,c,d,f):a.updateEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entity,d=a.options,g(defaultTableService)):g(a),e.promise},exports.mergeEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={entity:b,response:c};e.resolve(d)}},g=function(a){d?a.mergeEntity(b,c,d,f):a.mergeEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entity,d=a.options,g(defaultTableService)):g(a),e.promise},exports.insertOrReplaceEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={entity:b,response:c};e.resolve(d)}},g=function(a){d?a.insertOrReplaceEntity(b,c,d,f):a.insertOrReplaceEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entity,d=a.options,g(defaultTableService)):g(a),e.promise},exports.insertOrMergeEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={entity:b,response:c};e.resolve(d)}},g=function(a){d?a.insertOrMergeEntity(b,c,d,f):a.insertOrMergeEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entity,d=a.options,g(defaultTableService)):g(a),e.promise},module.exports=exports; \ No newline at end of file +var q=require("q"),azure=require("azure"),exports={},defaultBlobService=azure.createBlobService();exports.createContainerIfNotExists=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={containerCreated:b,response:c};d.resolve(e)}};return c?a.createContainerIfNotExists(b,c,e):a.createContainerIfNotExists(b,e),d.promise},exports.createBlockBlobFromText=function(a,b,c,d,e){var f=q.defer(),g=function(a,b,c){if(a)f.reject(new Error(a));else{var d={blockBlob:b,response:c};f.resolve(d)}},h=function(a){e?a.createBlockBlobFromText(b,c,d,e,g):a.createBlockBlobFromText(b,c,d,g)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.blobText,e=a.options,defaultBlobService.createContainerIfNotExists(b,{publicAccessLevel:"blob"},function(){h(defaultBlobService)})):h(a),f.promise},exports.createBlockBlobFromFile=function(a,b,c,d,e){var f=q.defer(),g=function(a,b,c){if(a)f.reject(new Error(a));else{var d={blockBlob:b,response:c};f.resolve(d)}},h=function(a){e?a.createBlockBlobFromFile(b,c,d,e,g):a.createBlockBlobFromFile(b,c,d,g)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.fileName,e=a.options,exports.createContainerIfNotExists(defaultBlobService,b,{publicAccessLevel:"blob"}).then(function(){h(defaultBlobService)})):h(a),f.promise},exports.createBlockBlobFromStream=function(a,b,c,d,e,f){var g=q.defer(),h=function(a,b,c){if(a)g.reject(new Error(a));else{var d={blockBlob:b,response:c};g.resolve(d)}},i=function(a){f?a.createBlockBlobFromStream(b,c,d,e,f,h):a.createBlockBlobFromStream(b,c,d,e,h)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.stream,e=a.streamLength,f=a.options,exports.createContainerIfNotExists(defaultBlobService,b,{publicAccessLevel:"blob"}).then(function(){i(defaultBlobService)})):i(a),g.promise},exports.deleteContainer=function(a,b,c){var d=q.defer(),e=function(a,b){a?d.reject(new Error(a)):d.resolve(b)};return c?a.deleteContainer(b,c,e):a.deleteContainer(b,e),d.promise},exports.getBlobToText=function(a,b,c,d){var e=q.defer(),f=function(a,b,c,d){if(a)e.reject(new Error(a));else{var f={text:b,blockBlob:c,response:d};e.resolve(f)}},g=function(a){d?a.getBlobToText(b,c,d,f):a.getBlobToText(b,c,f)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.options,defaultBlobService.createContainerIfNotExists(b,{publicAccessLevel:"blob"},function(){g(defaultBlobService)})):g(a),e.promise},exports.getBlobToFile=function(a,b,c,d,e){var f=q.defer(),g=function(a,b,c){if(a)f.reject(new Error(a));else{var d={blockBlob:b,response:c};f.resolve(d)}},h=function(a){e?a.getBlobToFile(b,c,d,e,g):a.getBlobToFile(b,c,d,g)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.fileName,e=a.options,exports.createContainerIfNotExists(defaultBlobService,b,{publicAccessLevel:"blob"}).then(function(){h(defaultBlobService)})):h(a),f.promise},exports.getBlobToStream=function(a,b,c,d,e){var f=q.defer(),g=function(a,b,c){if(a)f.reject(new Error(a));else{var d={blockBlob:b,response:c};f.resolve(d)}},h=function(a){e?a.getBlobToStream(b,c,d,e,g):a.getBlobToStream(b,c,d,g)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.writeStream,e=a.options,exports.createContainerIfNotExists(defaultBlobService,b,{publicAccessLevel:"blob"}).then(function(){h(defaultBlobService)})):h(a),f.promise},exports.deleteBlob=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={isSuccessful:b,response:c};e.resolve(d)}},g=function(a){d?a.deleteBlob(b,c,d,f):a.deleteBlob(b,c,f)};return a&&a.containerName?(b=a.containerName,c=a.blobName,d=a.options,exports.createContainerIfNotExists(defaultBlobService,b,{publicAccessLevel:"blob"}).then(function(){g(defaultBlobService)})):g(a),e.promise},module.exports=exports;var q=require("q"),azure=require("azure"),exports={},defaultServiceBus=azure.createServiceBusService(),receivePullSubscriptions=[];exports.createQueueIfNotExists=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={queueCreated:b,response:c};d.resolve(e)}},f=function(a){c?a.createQueueIfNotExists(b,c,e):a.createQueueIfNotExists(b,e)};return a&&a.queuePath?(b=a.queuePath,c=a.options,f(defaultServiceBus)):f(a),d.promise},exports.deleteQueue=function(a,b,c){var d=q.defer(),e=function(a,b){a?d.reject(new Error(a)):d.resolve(b)};return c?a.deleteQueue(b,c,e):a.deleteQueue(b,e),d.promise},exports.createTopicIfNotExists=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={topicCreated:b,response:c};d.resolve(e)}},f=function(a){c?a.createTopicIfNotExists(b,c,e):a.createTopicIfNotExists(b,e)};return a&&a.topicPath?(b=a.topicPath,c=a.options,f(defaultServiceBus)):f(a),d.promise},exports.deleteTopic=function(a,b,c){var d=q.defer(),e=function(a,b){a?d.reject(new Error(a)):d.resolve(b)};return c?a.deleteTopic(b,c,e):a.deleteTopic(b,e),d.promise},exports.sendQueueMessage=function(a,b,c,d){var e=q.defer(),f=function(a,b){a?e.reject(new Error(a)):e.resolve(b)},g=function(a){d?a.sendQueueMessage(b,c,d,f):a.sendQueueMessage(b,c,f)};return a&&a.queuePath?(b=a.queuePath,c=a.message,d=a.options,exports.createQueueIfNotExists(defaultServiceBus,b).then(function(){g(defaultServiceBus)})):g(a),e.promise},exports.receiveQueueMessage=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={receivedMessage:b,response:c};d.resolve(e)}},f=function(a){c?a.receiveQueueMessage(b,c,e):a.receiveQueueMessage(b,e)};return a&&a.queuePath?(b=a.queuePath,c=a.options,exports.createQueueIfNotExists(defaultServiceBus,b).then(function(){f(defaultServiceBus)})):f(a),d.promise},exports.createSubscription=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={createSubscriptionResult:b,response:c};e.resolve(d)}},g=function(a){d?a.createSubscription(b,c,d,f):a.createSubscription(b,c,f)};return a&&a.topicPath?(b=a.topicPath,c=a.subscriptionPath,d=a.options,exports.createTopicIfNotExists(a).then(function(){g(defaultServiceBus)})):g(a),e.promise},exports.deleteSubscription=function(a,b,c,d){var e=q.defer(),f=function(a,b){a?e.reject(new Error(a)):e.resolve(b)},g=function(a){d?a.deleteSubscription(b,c,d,f):a.deleteSubscription(b,c,f)};return a&&a.topicPath?(b=a.topicPath,c=a.subscriptionPath,d=a.options,exports.createSubscription(a).then(function(){g(defaultServiceBus)})):g(a),e.promise},exports.sendTopicMessage=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={receiveTopicMessageResult:b,response:c};e.resolve(d)}},g=function(a){d?a.sendTopicMessage(b,c,d,f):a.sendTopicMessage(b,c,f)};return a&&a.topicPath?(b=a.topicPath,c=a.message,d=a.options,exports.createTopicIfNotExists(a).then(function(){g(defaultServiceBus)})):g(a),e.promise},exports.receiveSubscriptionMessage=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={receiveTopicMessageResult:b,response:c};e.resolve(d)}},g=function(a){d?a.receiveSubscriptionMessage(b,c,d,f):a.receiveSubscriptionMessage(b,c,f)};return a&&a.topicPath?(b=a.topicPath,c=a.subscriptionPath,d=a.options,g(defaultServiceBus)):g(a),e.promise},exports.deleteMessage=function(a,b,c){var d=q.defer(),e=function(a,b){a?d.reject(new Error(a)):d.resolve(b)},f=function(a){c?a.deleteMessage(b,c,e):a.deleteMessage(b,e)};return a&&a.message?(b=a.message,c=a.options,f(defaultServiceBus)):f(a),d.promise},exports.unlockMessage=function(a,b,c){var d=q.defer(),e=function(a,b){a?d.reject(new Error(a)):d.resolve(b)},f=function(a){c?a.unlockMessage(b,c,e):a.unlockMessage(b,e)};return a&&a.message?(b=a.message,c=a.options,f(defaultServiceBus)):f(a),d.promise},exports.getQueue=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={getQueueResult:b,response:c};d.resolve(e)}},f=function(a){c?a.getQueue(b,c,e):a.getQueue(b,e)};return a&&a.queuePath?(b=a.queuePath,c=a.options,exports.createQueueIfNotExists(a).then(function(){f(defaultServiceBus)})):f(a),d.promise},exports.listQueues=function(a,b){var c=q.defer(),d=function(a,b,d){if(a)c.reject(new Error(a));else{var e={listQueuesResult:b,response:d};c.resolve(e)}},e=function(a){b?a.listQueues(b,d):a.listQueues(d)};return!a||a&&a.options?(a&&a.options&&(b=a.options),e(defaultServiceBus)):e(a),c.promise},module.exports=exports;var q=require("q"),azure=require("azure"),exports={},defaultTableService=azure.createTableService();exports.createTableIfNotExists=function(a,b,c){var d=q.defer(),e=function(a,b,c){if(a)d.reject(new Error(a));else{var e={created:b,response:c};d.resolve(e)}};return c?a.createTableIfNotExists(b,c,e):a.createTableIfNotExists(b,e),d.promise},exports.deleteTable=function(a,b,c){var d=q.defer(),e=function(a,b,c){a?d.reject(new Error(a)):d.resolve(c)};return c?a.deleteTable(b,c,e):a.deleteTable(b,e),d.promise},exports.insertEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={entity:b,response:c};e.resolve(d)}},g=function(a){d?a.insertEntity(b,c,d,f):a.insertEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entity,d=a.options,exports.createTableIfNotExists(defaultTableService,b).then(function(){g(defaultTableService)})):g(a),e.promise},exports.deleteEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={successful:b,response:c};e.resolve(d)}},g=function(a){d?a.deleteEntity(b,c,d,f):a.deleteEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entityDescriptor,d=a.options,exports.createTableIfNotExists(defaultTableService,b).then(function(){g(defaultTableService)})):g(a),e.promise},exports.queryEntity=function(a,b,c,d,e){var f=q.defer(),g=function(a,b,c){if(a)f.reject(new Error(a));else{var d={entity:b,response:c};f.resolve(d)}},h=function(a){e?a.queryEntity(b,c,d,e,g):a.queryEntity(b,c,d,g)};return a&&a.tableName?(b=a.tableName,c=a.entityDescriptor.PartitionKey,d=a.entityDescriptor.RowKey,e=a.options,exports.createTableIfNotExists(defaultTableService,b).then(function(){h(defaultTableService)})):h(a),f.promise},exports.queryEntities=function(a,b,c){var d=q.defer(),e=function(a,b,c,e){if(a)d.reject(new Error(a));else{var f={entities:b,queryResultContinuation:c,response:e};d.resolve(f)}},f=function(a){c?a.queryEntities(b,c,e):a.queryEntities(b,e)};return a&&a.tableQuery?(b=a.tableQuery,c=a.options,f(defaultTableService)):f(a),d.promise},exports.updateEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={entity:b,response:c};e.resolve(d)}},g=function(a){d?a.updateEntity(b,c,d,f):a.updateEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entity,d=a.options,g(defaultTableService)):g(a),e.promise},exports.mergeEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={entity:b,response:c};e.resolve(d)}},g=function(a){d?a.mergeEntity(b,c,d,f):a.mergeEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entity,d=a.options,g(defaultTableService)):g(a),e.promise},exports.insertOrReplaceEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={entity:b,response:c};e.resolve(d)}},g=function(a){d?a.insertOrReplaceEntity(b,c,d,f):a.insertOrReplaceEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entity,d=a.options,g(defaultTableService)):g(a),e.promise},exports.insertOrMergeEntity=function(a,b,c,d){var e=q.defer(),f=function(a,b,c){if(a)e.reject(new Error(a));else{var d={entity:b,response:c};e.resolve(d)}},g=function(a){d?a.insertOrMergeEntity(b,c,d,f):a.insertOrMergeEntity(b,c,f)};return a&&a.tableName?(b=a.tableName,c=a.entity,d=a.options,g(defaultTableService)):g(a),e.promise},module.exports=exports; \ No newline at end of file diff --git a/src/fogServiceBus.js b/src/fogServiceBus.js index 4b47ee7..73d7bb3 100644 --- a/src/fogServiceBus.js +++ b/src/fogServiceBus.js @@ -463,4 +463,41 @@ exports.getQueue = function (serviceBusOrAllParams, queuePath, options) { return deferred.promise; }; +// This is similar to the same as the Azure API function with the same name; however, it uses promises instead of callbacks. +// If there is an error, then a new Error is created with the original error text and included as the argument to the reject call. +// If no error message is returned, then a listQueuesResult and a response is returned. +exports.listQueues = function (serviceBusOrAllParams, options) { + var deferred = q.defer(); + var callback = function(error, listQueuesResult, response) { + if (error) { + deferred.reject(new Error(error)); + } else { + var result = { + "listQueuesResult" : listQueuesResult, + "response" : response + }; + deferred.resolve(result); + } + }; + + var listTheQueues = function(serviceBus) { + if (options) { + serviceBus.listQueues(options, callback); + } else { + serviceBus.listQueues(callback); + } + }; + + if (!serviceBusOrAllParams || (serviceBusOrAllParams && serviceBusOrAllParams.options)) { + if (serviceBusOrAllParams && serviceBusOrAllParams.options) { + options = serviceBusOrAllParams.options; + } + listTheQueues(defaultServiceBus); + } else { + listTheQueues(serviceBusOrAllParams); + } + + return deferred.promise; +}; + module.exports = exports; diff --git a/test/fogServiceBus.integrationtests.js b/test/fogServiceBus.integrationtests.js index 236e86d..497868d 100644 --- a/test/fogServiceBus.integrationtests.js +++ b/test/fogServiceBus.integrationtests.js @@ -325,8 +325,26 @@ describe("Service Bus Tests", function() { }); // list queues with promise + describe("When listing queues with promise", function() { + it ('it should have a queue list as a result', function(done) { + fog.listQueues(serviceBus) + .then(function(response) { + assert(response.listQueuesResult); + done(); + }).fail(handleError); + }); + }); // list queues with alternate syntax + describe("When listing queues with alternate syntax", function() { + it ('it should have a queue list as a result', function(done) { + fog.listQueues() + .then(function(response) { + assert(response.listQueuesResult); + done(); + }).fail(handleError); + }); + }); // get topic with promise @@ -344,19 +362,4 @@ describe("Service Bus Tests", function() { // list subscription with alternate syntax - // create, get, and delete rule with promise - - // create, get, and delete rule with alternate syntax - - // list rules with promise - - // list rules with alternate syntax - - // create, get, and delete notification hub with promise - - // create, get, and delete notification hub with alternate syntax - - // list notification hub rules with promise - - // list notification hub with alternate syntax }); \ No newline at end of file