flosight-api/lib/status.js

129 lines
2.7 KiB
JavaScript

'use strict';
var common = require('./common');
function StatusController(node) {
this.node = node;
}
StatusController.prototype.show = function(req, res) {
var option = req.query.q;
switch(option) {
case 'getDifficulty':
this.getDifficulty(function(err, result) {
if (err) {
return common.handleErrors(err, res);
}
res.jsonp(result);
});
break;
case 'getLastBlockHash':
res.jsonp(this.getLastBlockHash());
break;
case 'getBestBlockHash':
this.getBestBlockHash(function(err, result) {
if (err) {
return common.handleErrors(err, res);
}
res.jsonp(result);
});
break;
case 'getInfo':
default:
this.getInfo(function(err, result) {
if (err) {
return common.handleErrors(err, res);
}
res.jsonp({
info: result
});
});
}
};
StatusController.prototype.getInfo = function(callback) {
this.node.services.bitcoind.getInfo(callback);
};
StatusController.prototype.getLastBlockHash = function() {
var hash = this.node.services.bitcoind.tiphash;
return {
syncTipHash: hash,
lastblockhash: hash
};
};
StatusController.prototype.getBestBlockHash = function(callback) {
this.node.services.bitcoind.getBestBlockHash(function(err, hash) {
if (err) {
return callback(err);
}
callback(null, {
bestblockhash: hash
});
});
};
StatusController.prototype.getDifficulty = function(callback) {
this.node.services.bitcoind.getInfo(function(err, info) {
if (err) {
return callback(err);
}
callback(null, {
difficulty: info.difficulty
});
});
};
StatusController.prototype.sync = function(req, res) {
var self = this;
var status = 'syncing';
this.node.services.bitcoind.isSynced(function(err, synced) {
if (err) {
return common.handleErrors(err, res);
}
if (synced) {
status = 'finished';
}
self.node.services.bitcoind.syncPercentage(function(err, percentage) {
if (err) {
return common.handleErrors(err, res);
}
var info = {
status: status,
blockChainHeight: self.node.services.bitcoind.height,
syncPercentage: Math.round(percentage),
height: self.node.services.bitcoind.height,
error: null,
type: 'bitcore node'
};
res.jsonp(info);
});
});
};
// Hard coded to make insight ui happy, but not applicable
StatusController.prototype.peer = function(req, res) {
res.jsonp({
connected: true,
host: '127.0.0.1',
port: null
});
};
StatusController.prototype.version = function(req, res) {
var pjson = require('../package.json');
res.jsonp({
version: pjson.version
});
};
module.exports = StatusController;