UNPKG

crypto-nodes

Version:

111 lines (72 loc) 2.6 kB
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); }