UNPKG

off-sqs-debearloper

Version:

Helper app that manages SQS and RabbitMQ transactions

111 lines (93 loc) 2.51 kB
var AWS = require('aws-sdk'), config = require('./config'), sqs = {}, when = require('when'); module.exports = listQueues = function (queueName){ var deferred = when.defer(); if(config.env.production || config.env.qa){ AWS.config.update(config.awsConfigFile); sqs = new AWS.SQS(); return listSQSQueues(queueName); }; return listRabbitQueues(queueName); }; var listSQSQueues = function(queueName){ var deferred = when.defer(); sqs.listQueues(function(err, res){ var queueFinder = false; if(res.QueueUrls){ for(var i in res.QueueUrls){ if(res.QueueUrls[i].split('/').pop() === queueName){ queueFinder = true; }; }; }; if(queueFinder){ getQueue(queueName).then(function(queueUrl){ deferred.resolve(queueUrl); }); }else{ createQueue(queueName).then(function(){ getQueue(queueName).then(function(queueUrl){ deferred.resolve(queueUrl); }); }); }; }); return deferred.promise; } var listRabbitQueues = function(queueName){ var deferred = when.defer(); deferred.resolve(queueName); return deferred.promise; } function listQueues(_queueName){ var deferred = when.defer(); sqs.listQueues(function(err, res){ var queueFinder = false; if(res.QueueUrls) for(var i in res.QueueUrls) if(res.QueueUrls[i].split('/').pop() === _queueName) queueFinder = true; if(queueFinder){ getQueue(_queueName).then(function(queueUrl){ deferred.resolve(queueUrl); }); } else { createQueue(_queueName).then(function(){ getQueue(_queueName).then(function(queueUrl){ deferred.resolve(queueUrl); }) }); }; }); return deferred.promise; }; function getQueue(_queueName){ var deferred = when.defer(); sqs.getQueueUrl({QueueName: _queueName}, function(err, data){ if(err){ console.log("/63, " + err); } else{ console.log("By using the SQS queue: " + data.QueueUrl); deferred.resolve(data.QueueUrl); } }); return deferred.promise; }; function createQueue(_queueName){ var deferred = when.defer(); var cqParams = { QueueName: _queueName, Attributes: {} }; console.log(typeof sqs); sqs.createQueue(cqParams, function(err, res){ if(err){ console.log("/67, " + err); // stop recursivity } else { deferred.resolve(); } }); return deferred.promise; };