/** * Module containing util functions for RabbitMq * @module rabbit/util */ /** * @type {Object} * @property {function} buildRabbitMqUrl(String) - build amqp connection string * @property {function} validateJson(String) - validate string is in valid JSON format * @property {function} cleanData(String) - change $type to type */ var service = { buildRabbitMqUrl: buildRabbitMqUrl, validateJson: IsJsonString, cleanData: cleanData }; /** * Builds the RabbitMqUrl connection string * @param {String} config - configuration for connection string * @returns {String} amqpConnString - returns amqp connection string * @example * * var util = require('rabbit.util.js'); * * var config = { * rabbitmqserver: 'localhost', * rabbitmqport: 5672, * rabbitmqusername: 'User_Name', * rabbitmqpassword: 'Pass_Word', * subscribequeue: 'Your.Target.Queue', * vhost: 'YOUR-VHOST' * }; * * var connString = util.buildRabbitMqUrl(config) * console.log(connString); */ function buildRabbitMqUrl(config){ var auth = ''; var heartbeat = config.rabbitheartbeat || 0; if((config.rabbitmqusername + config.rabbitmqpassword) != ''){ auth = config.rabbitmqusername + ':' + config.rabbitmqpassword + '@'; } console.log('amqp://' + auth + config.rabbitmqserver + ':' + config.rabbitmqport + '/' + config.vhost + '?heartbeat=' + heartbeat); return 'amqp://' + auth + config.rabbitmqserver + ':' + config.rabbitmqport + '/' + config.vhost + '?heartbeat=' + heartbeat; } /** * Checks string to see if it is valid JSON * @param {String} str - string to check if is valid JSON * @returns {boolean} - true if string is JSON formatted, false if string is not JSON formatted * @example * * var util = require('rabbit.util.js') * * var testString = '{"employee":"John"}'; * * console.log(util.IsJsonString(testString)); * // will print true because the string is valid JSON * */ function IsJsonString(str) { try { JSON.parse(str); } catch (e) { console.log('error', e.stack); return false; } return true; } /** * parses through string and replaces "$type" by "type" * @param data {String} - string to replace "$type" by "type" * @returns {string|void|XML} * @example * * var util = require('rabbit.util.js') * * var testString = 'foo $type Bar'; * * console.log(util.cleanData(testString)); * // will print 'foo type Bar' * */ function cleanData(data) { var cleandata = data.replace("$type","type"); return cleandata; } module.exports = service;