crypto-nodes
Version:
117 lines (70 loc) • 2.36 kB
JavaScript
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);
}