add reporters

This commit is contained in:
Manuel Araoz 2015-03-19 10:29:33 -03:00
parent 2139058954
commit 59fcb44045
3 changed files with 40 additions and 12 deletions

View File

@ -3,6 +3,7 @@ BitcoreNode:
network: livenet
host: localhost
port: 8333
Reporter: simple # none, simple, matrix
LevelUp: ./db
RPC:
username: username

View File

@ -2,8 +2,38 @@
var BitcoreNode = require('./lib/node');
var bitcore = require('bitcore');
var Unit = bitcore.Unit;
if (require.main === module) {
var reporters = {};
reporters.none = function() {
// do nothing
};
reporters.matrix = function(tx) {
var s = tx.toString();
for (var i = 0; i < s.length; i++) {
var slice = s.slice(4 * i, 4 * (i + 1));
if (slice.length < 4) {
continue;
}
var c = JSON.parse('"\\u' + slice + '"');
process.stdout.write(c);
}
};
reporters.simple = function(tx) {
var tout = Unit.fromSatoshis(tx.outputAmount).toBTC();
console.log('Transaction:', tx.id);
console.log('\ttotal_out:', tout, 'BTC');
console.log('\tinput addresses:');
tx.inputs.forEach(function(inp) {
console.log('\t\t' + inp.script.toAddress());
});
console.log('\toutput addresses:');
tx.outputs.forEach(function(out) {
console.log('\t\t' + out.script.toAddress());
});
};
var config = require('config');
var node = BitcoreNode.create(config.get('BitcoreNode'));
node.start();
@ -11,9 +41,17 @@ if (require.main === module) {
if (err.code === 'ECONNREFUSED') {
console.log('Connection to bitcoind failed');
} else {
console.log('Unrecognized error: ', err);
console.log('Error: ', err);
}
});
var reporterName = config.get('Reporter');
var reporter = reporters[reporterName];
if (!reporter) {
throw new Error('Unrecognized network reporter: ' + reporterName +
'. Available: ' + Object.keys(reporters));
}
node.on('Transaction', reporter);
}

View File

@ -4,7 +4,6 @@ var util = require('util');
var EventEmitter = require('eventemitter2').EventEmitter2;
var bitcore = require('bitcore');
var Unit = bitcore.Unit;
var $ = bitcore.util.preconditions;
var NetworkMonitor = require('./networkmonitor');
@ -17,16 +16,6 @@ var BitcoreNode = function(bus, nm) {
this.bus = bus;
this.nm = nm;
this.bus.register(bitcore.Transaction, function(tx) {
var tout = Unit.fromSatoshis(tx.outputAmount).toBTC();
console.log('Transaction:', tx.id);
console.log('\ttotal_out:', tout, 'BTC');
});
this.bus.register(bitcore.Block, function(block) {
console.log('Block:', block.id);
});
this.bus.onAny(function(value) {
self.emit(this.event, value);
});