UNPKG

nibi

Version:

Extremely easy management of queues with RabbitMQ and/or AmazonSQS

69 lines (48 loc) 1.58 kB
var when = require('when') var getMessages = require('./receiver') var listQueues = require('./listQueues') var utils = require('./utils') var sendMessages = require('./sender') var config = require('./config') var nibi = function (opts) { this.listQueues = listQueues.bind(this) this.getMessages = getMessages.bind(this) this.config = config.load(opts) } nibi.prototype.awsReviewerFile = function () { var conf = this.config var noAWSFile = (JSON.stringify(conf.awsConfigFile) === undefined) if (noAWSFile && conf.service === 'aws') { console.log("AWS Credentials don't found. Remember to add the file while constructing the instance") throw new Error('You need to put your own AWS configuration file') } } nibi.prototype.sender = function (queueName, data, callback) { this.awsReviewerFile() this.listQueues(queueName).then(function (queueUrl) { sendMessages(data, queueUrl, callback) }) } nibi.prototype.receiver = function (queueName, callback) { this.awsReviewerFile() this.callback = callback var deferred = when.defer() var self = this this.listQueues(queueName).then(function (queueUrl) { self.queueUrl = queueUrl deferred.resolve({ receiver: self.getMessages.call(this) }) }) } nibi.prototype.getQueueUrl = function (queueName) { var deferred = when.defer() this.listQueues(queueName).then(function (queueUrl) { deferred.resolve(queueUrl) }) return deferred.promise } nibi.prototype.parseMessage = function (data) { return utils.parseMessage(data) } module.exports = nibi