Source: rabbit.util.js

/**
 * 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;