nibi
Version:
Extremely easy management of queues with RabbitMQ and/or AmazonSQS
69 lines (48 loc) • 1.58 kB
JavaScript
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