From 9070b7465353b408fee81025750d137fcd03fa3f Mon Sep 17 00:00:00 2001 From: Patrick Nagurny Date: Fri, 18 Sep 2015 13:56:28 -0400 Subject: [PATCH] expose estimateFee route --- lib/index.js | 7 ++++--- lib/utils.js | 21 +++++++++++++++++++++ test/utils.js | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 lib/utils.js create mode 100644 test/utils.js diff --git a/lib/index.js b/lib/index.js index d990cd1..424d78a 100644 --- a/lib/index.js +++ b/lib/index.js @@ -7,6 +7,7 @@ var TxController = require('./transactions'); var AddressController = require('./addresses'); var StatusController = require('./status'); var MessagesController = require('./messages'); +var UtilsController = require('./utils'); var bitcore = require('bitcore'); var $ = bitcore.util.preconditions; var Transaction = bitcore.Transaction; @@ -84,11 +85,11 @@ InsightAPI.prototype.setupRoutes = function(app) { app.post('/messages/verify', messages.verify.bind(messages)); // Utils route - /*var utils = require('../app/controllers/utils'); - app.get(apiPrefix + '/utils/estimatefee', utils.estimateFee); + var utils = new UtilsController(this.node); + app.get('/utils/estimatefee', utils.estimateFee.bind(utils)); // Currency - var currency = require('../app/controllers/currency'); + /*var currency = require('../app/controllers/currency'); app.get(apiPrefix + '/currency', currency.index); // Email store plugin diff --git a/lib/utils.js b/lib/utils.js new file mode 100644 index 0000000..73711f2 --- /dev/null +++ b/lib/utils.js @@ -0,0 +1,21 @@ +'use strict'; +var _ = require('lodash'); + +function UtilsController(node) { + this.node = node; +} + +UtilsController.prototype.estimateFee = function(req, res) { + var self = this; + var args = req.query.nbBlocks || '2'; + var nbBlocks = args.split(','); + + var result = nbBlocks.map(function(n) { + var num = parseInt(n); + return [num, self.node.services.bitcoind.estimateFee(num)]; + }); + + res.jsonp(_.zipObject(result)); +}; + +module.exports = UtilsController; \ No newline at end of file diff --git a/test/utils.js b/test/utils.js new file mode 100644 index 0000000..bb6e5b2 --- /dev/null +++ b/test/utils.js @@ -0,0 +1,41 @@ +'use strict'; + +var sinon = require('sinon'); +var should = require('should'); +var UtilsController = require('../lib/utils'); + +describe('Utils', function() { + describe('/utils/estimatefee', function() { + it('should give the correct fee', function(done) { + var node = { + services: { + bitcoind: { + estimateFee: function(blocks) { + switch(blocks) { + case 1: + return 1000; + case 3: + return 3000; + } + } + } + } + }; + var utils = new UtilsController(node); + + var req = { + query: { + nbBlocks: '1, 3' + } + }; + + var res = { + jsonp: function(fees) { + should(fees).eql({1: 1000, 3: 3000}); + done(); + } + } + utils.estimateFee(req, res); + }); + }); +}); \ No newline at end of file