UNPKG

crypto-nodes

Version:

117 lines (70 loc) 2.36 kB
var cheerio = require('cheerio'); var async = require('async'); module.exports = function(RED) { function providerConfigReader(config) { RED.nodes.createNode(this,config); var node = this; node.on('input', function(msg) { //console.log(msg); var currentProvider = config.provider_name; var availableExchanges = msg.payload; //var availablePairs = msg.payload.pairs; var enabledExchanges = []; var enabledPairs = []; var app = global.app; var providersModel = app.models.CryptoProvider; var pairsModel = app.models.CryptoPair; //var outputExchanges = []; //var outputPairs = []; var output = {}; async.parallel({ exchanges: function(cb) { providersModel.find({ enabled: true, provider: currentProvider }, function(err,msg) { if (err) { console.log(err); } if (msg) { // console.log(msg); } cb(false,msg); }); }, pairs: function(cb) { pairsModel.find({ enabled: true }, function(err,msg) { if (err) { console.log(err); } if (msg) { // console.log(msg); } cb(false,msg); }); } }, function(err, res){ for(x in res.exchanges) { for(z in availableExchanges) { // exchange both Available and Enabled if(res.exchanges[x] && res.exchanges[x].exchange == z) { for(x in res.pairs) { if(availableExchanges[z][res.pairs[x].from_symbol] && availableExchanges[z][res.pairs[x].from_symbol].indexOf(res.pairs[x].to_symbol) > -1) { if(!output[z]) { output[z] = {}; } if(!output[z][res.pairs[x].from_symbol]) { output[z][res.pairs[x].from_symbol] = []; } if(output[z][res.pairs[x].from_symbol].indexOf(res.pairs[x].to_symbol) == -1) { output[z][res.pairs[x].from_symbol].push(res.pairs[x].to_symbol); } } } } } } //console.log(output); node.send({ payload: output }); }); }); } RED.nodes.registerType("providerConfigReader",providerConfigReader); }