crypto-nodes
Version:
111 lines (72 loc) • 2.6 kB
JavaScript
var cheerio = require('cheerio');
var md5 = require('md5');
var async = require('async');
module.exports = function(RED) {
function providerConfigWriter(config) {
RED.nodes.createNode(this,config);
var node = this;
node.status({fill:"red",shape:"dot", text:"waiting for data"});
node.on('input', function(msg) {
console.log(config);
node.status({fill:"yellow",shape:"dot", text:"Updating " + config.provider_name + " with " + msg.payload.providers.length + " exchanges, " + msg.payload.pairs.length + " pairs." });
var app = global.app;
// TODO:: Maybe configurable in the flow
var providersModel = app.models.CryptoProvider;
var pairsModel = app.models.CryptoPair;
var providersData = [];
var pairsData = [];
async.parallel([
function(cb) {
// Remove all unused exchanges from this provider to re populate again (drop removed exchanges)
providersModel.remove({ enabled: false, provider: config.provider_name }).exec();
for(p in msg.payload.providers) {
providersData.push({
_id: md5(config.provider_name + msg.payload.providers[p]),
exchange: msg.payload.providers[p],
provider: config.provider_name,
enabled: true,
});
}
providersModel.insertMany(providersData, function(err,msg) {
if (err) {
console.log(err);
}
if (msg) {
console.log(err);
}
cb();
});
},
function(cb) {
// TODO::
// Better handle removed pairs..
// Remove all unused pairs
pairsModel.remove({ enabled: false }).exec();
for(p in msg.payload.pairs) {
if(msg.payload.pairs[p][0] == 'BTC') {
pairsData.push({
//_id: md5(msg.payload.pairs[p][0] + msg.payload.pairs[p][1]),
from_symbol: msg.payload.pairs[p][0],
to_symbol: msg.payload.pairs[p][1],
enabled: true,
});
}
}
console.log(pairsData);
pairsModel.insertMany(pairsData, function(err,msg) {
if (err) {
console.log(err);
}
if (msg) {
console.log(err);
}
cb();
});
}
], function(){
node.status({fill:"green",shape:"dot", text:"Updated " + config.provider_name + " with " + msg.payload.providers.length + " exchanges, " + pairsData.length + " pairs." });
});
});
}
RED.nodes.registerType("providerConfigWriter",providerConfigWriter);
}