From 3bd3ea2b1f5115126aa6f66cbe741cc1e76e706a Mon Sep 17 00:00:00 2001 From: Ian Coleman Date: Fri, 21 Mar 2014 12:57:34 +1100 Subject: [PATCH 1/5] AddressProperty route for /addr/[:addr]/property eg /addr[:addr]/balance will return just the balance for the address. This needs expanding but is a good basis upon which to expand. --- app/controllers/addressProperties.js | 34 ++++++++++++++++++++++++++++ config/routes.js | 4 ++++ 2 files changed, 38 insertions(+) create mode 100644 app/controllers/addressProperties.js diff --git a/app/controllers/addressProperties.js b/app/controllers/addressProperties.js new file mode 100644 index 0000000..f3f9a26 --- /dev/null +++ b/app/controllers/addressProperties.js @@ -0,0 +1,34 @@ +'use strict'; + +/** + * Module dependencies. + */ + +var Address = require('../models/Address'), + common = require('./common'); + +var getAddr = function(req, res, next) { + var a; + try { + var addr = req.param('addr'); + a = new Address(addr); + } catch (e) { + common.handleErrors({message: 'Invalid address:' + e.message, code: 1}, res, next); + return null; + } + return a; +}; + + +exports.balance = function(req, res, next) { + var a = getAddr(req, res, next); + if (a) + a.update(function(err) { + if (err) { + return common.handleErrors(err, res); + } + else { + return res.jsonp(a.balanceSat); + } + }); +}; diff --git a/config/routes.js b/config/routes.js index 4ccb56e..f4ac580 100644 --- a/config/routes.js +++ b/config/routes.js @@ -32,6 +32,10 @@ module.exports = function(app) { app.get(apiPrefix + '/addr/:addr', addresses.show); app.get(apiPrefix + '/addr/:addr/utxo', addresses.utxo); + // Address property routes + var addressProperties = require('../app/controllers/addressProperties.js'); + app.get(apiPrefix + '/addr/:addr/balance', addressProperties.balance); + // Status route var st = require('../app/controllers/status'); app.get(apiPrefix + '/status', st.show); From f88fdff88cdfa182ffa449d8a9674ee89d3e319a Mon Sep 17 00:00:00 2001 From: Ian Coleman Date: Fri, 21 Mar 2014 13:02:14 +1100 Subject: [PATCH 2/5] AddressProperty for totalReceived --- app/controllers/addressProperties.js | 13 +++++++++++++ config/routes.js | 1 + 2 files changed, 14 insertions(+) diff --git a/app/controllers/addressProperties.js b/app/controllers/addressProperties.js index f3f9a26..098db8d 100644 --- a/app/controllers/addressProperties.js +++ b/app/controllers/addressProperties.js @@ -32,3 +32,16 @@ exports.balance = function(req, res, next) { } }); }; + +exports.totalReceived = function(req, res, next) { + var a = getAddr(req, res, next); + if (a) + a.update(function(err) { + if (err) { + return common.handleErrors(err, res); + } + else { + return res.jsonp(a.totalReceivedSat); + } + }); +}; diff --git a/config/routes.js b/config/routes.js index f4ac580..4fdd8cd 100644 --- a/config/routes.js +++ b/config/routes.js @@ -35,6 +35,7 @@ module.exports = function(app) { // Address property routes var addressProperties = require('../app/controllers/addressProperties.js'); app.get(apiPrefix + '/addr/:addr/balance', addressProperties.balance); + app.get(apiPrefix + '/addr/:addr/totalReceived', addressProperties.totalReceived); // Status route var st = require('../app/controllers/status'); From 306f2cd1e3c46dec0fb14462234c62a3f44fabf3 Mon Sep 17 00:00:00 2001 From: Ian Coleman Date: Fri, 21 Mar 2014 13:04:44 +1100 Subject: [PATCH 3/5] AddressProperty for totalSent --- app/controllers/addressProperties.js | 13 +++++++++++++ config/routes.js | 1 + 2 files changed, 14 insertions(+) diff --git a/app/controllers/addressProperties.js b/app/controllers/addressProperties.js index 098db8d..c30f210 100644 --- a/app/controllers/addressProperties.js +++ b/app/controllers/addressProperties.js @@ -45,3 +45,16 @@ exports.totalReceived = function(req, res, next) { } }); }; + +exports.totalSent = function(req, res, next) { + var a = getAddr(req, res, next); + if (a) + a.update(function(err) { + if (err) { + return common.handleErrors(err, res); + } + else { + return res.jsonp(a.totalSentSat); + } + }); +}; diff --git a/config/routes.js b/config/routes.js index 4fdd8cd..6b206c0 100644 --- a/config/routes.js +++ b/config/routes.js @@ -36,6 +36,7 @@ module.exports = function(app) { var addressProperties = require('../app/controllers/addressProperties.js'); app.get(apiPrefix + '/addr/:addr/balance', addressProperties.balance); app.get(apiPrefix + '/addr/:addr/totalReceived', addressProperties.totalReceived); + app.get(apiPrefix + '/addr/:addr/totalSent', addressProperties.totalSent); // Status route var st = require('../app/controllers/status'); From b8ac3823701284906d8a5e5421d301748d829f8c Mon Sep 17 00:00:00 2001 From: Ian Coleman Date: Fri, 21 Mar 2014 13:06:13 +1100 Subject: [PATCH 4/5] AddressProperty for unconfirmedBalance --- app/controllers/addressProperties.js | 13 +++++++++++++ config/routes.js | 1 + 2 files changed, 14 insertions(+) diff --git a/app/controllers/addressProperties.js b/app/controllers/addressProperties.js index c30f210..e02ec65 100644 --- a/app/controllers/addressProperties.js +++ b/app/controllers/addressProperties.js @@ -58,3 +58,16 @@ exports.totalSent = function(req, res, next) { } }); }; + +exports.unconfirmedBalance = function(req, res, next) { + var a = getAddr(req, res, next); + if (a) + a.update(function(err) { + if (err) { + return common.handleErrors(err, res); + } + else { + return res.jsonp(a.unconfirmedBalanceSat); + } + }); +}; diff --git a/config/routes.js b/config/routes.js index 6b206c0..b843344 100644 --- a/config/routes.js +++ b/config/routes.js @@ -37,6 +37,7 @@ module.exports = function(app) { app.get(apiPrefix + '/addr/:addr/balance', addressProperties.balance); app.get(apiPrefix + '/addr/:addr/totalReceived', addressProperties.totalReceived); app.get(apiPrefix + '/addr/:addr/totalSent', addressProperties.totalSent); + app.get(apiPrefix + '/addr/:addr/unconfirmedBalance', addressProperties.unconfirmedBalance); // Status route var st = require('../app/controllers/status'); From ed4025bffe338c3d25f4fcc87c2d86a2fd27e725 Mon Sep 17 00:00:00 2001 From: Ian Coleman Date: Thu, 27 Mar 2014 08:39:13 +1100 Subject: [PATCH 5/5] Address Properties moved to addresses controller --- app/controllers/addressProperties.js | 73 ---------------------------- app/controllers/addresses.js | 51 +++++++++++++++++++ config/routes.js | 9 ++-- 3 files changed, 55 insertions(+), 78 deletions(-) delete mode 100644 app/controllers/addressProperties.js diff --git a/app/controllers/addressProperties.js b/app/controllers/addressProperties.js deleted file mode 100644 index e02ec65..0000000 --- a/app/controllers/addressProperties.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; - -/** - * Module dependencies. - */ - -var Address = require('../models/Address'), - common = require('./common'); - -var getAddr = function(req, res, next) { - var a; - try { - var addr = req.param('addr'); - a = new Address(addr); - } catch (e) { - common.handleErrors({message: 'Invalid address:' + e.message, code: 1}, res, next); - return null; - } - return a; -}; - - -exports.balance = function(req, res, next) { - var a = getAddr(req, res, next); - if (a) - a.update(function(err) { - if (err) { - return common.handleErrors(err, res); - } - else { - return res.jsonp(a.balanceSat); - } - }); -}; - -exports.totalReceived = function(req, res, next) { - var a = getAddr(req, res, next); - if (a) - a.update(function(err) { - if (err) { - return common.handleErrors(err, res); - } - else { - return res.jsonp(a.totalReceivedSat); - } - }); -}; - -exports.totalSent = function(req, res, next) { - var a = getAddr(req, res, next); - if (a) - a.update(function(err) { - if (err) { - return common.handleErrors(err, res); - } - else { - return res.jsonp(a.totalSentSat); - } - }); -}; - -exports.unconfirmedBalance = function(req, res, next) { - var a = getAddr(req, res, next); - if (a) - a.update(function(err) { - if (err) { - return common.handleErrors(err, res); - } - else { - return res.jsonp(a.unconfirmedBalanceSat); - } - }); -}; diff --git a/app/controllers/addresses.js b/app/controllers/addresses.js index d2a90b7..ce2bfa7 100644 --- a/app/controllers/addresses.js +++ b/app/controllers/addresses.js @@ -51,3 +51,54 @@ exports.utxo = function(req, res, next) { +exports.balance = function(req, res, next) { + var a = getAddr(req, res, next); + if (a) + a.update(function(err) { + if (err) { + return common.handleErrors(err, res); + } + else { + return res.jsonp(a.balanceSat); + } + }); +}; + +exports.totalReceived = function(req, res, next) { + var a = getAddr(req, res, next); + if (a) + a.update(function(err) { + if (err) { + return common.handleErrors(err, res); + } + else { + return res.jsonp(a.totalReceivedSat); + } + }); +}; + +exports.totalSent = function(req, res, next) { + var a = getAddr(req, res, next); + if (a) + a.update(function(err) { + if (err) { + return common.handleErrors(err, res); + } + else { + return res.jsonp(a.totalSentSat); + } + }); +}; + +exports.unconfirmedBalance = function(req, res, next) { + var a = getAddr(req, res, next); + if (a) + a.update(function(err) { + if (err) { + return common.handleErrors(err, res); + } + else { + return res.jsonp(a.unconfirmedBalanceSat); + } + }); +}; diff --git a/config/routes.js b/config/routes.js index b843344..fe8ebcb 100644 --- a/config/routes.js +++ b/config/routes.js @@ -33,11 +33,10 @@ module.exports = function(app) { app.get(apiPrefix + '/addr/:addr/utxo', addresses.utxo); // Address property routes - var addressProperties = require('../app/controllers/addressProperties.js'); - app.get(apiPrefix + '/addr/:addr/balance', addressProperties.balance); - app.get(apiPrefix + '/addr/:addr/totalReceived', addressProperties.totalReceived); - app.get(apiPrefix + '/addr/:addr/totalSent', addressProperties.totalSent); - app.get(apiPrefix + '/addr/:addr/unconfirmedBalance', addressProperties.unconfirmedBalance); + app.get(apiPrefix + '/addr/:addr/balance', addresses.balance); + app.get(apiPrefix + '/addr/:addr/totalReceived', addresses.totalReceived); + app.get(apiPrefix + '/addr/:addr/totalSent', addresses.totalSent); + app.get(apiPrefix + '/addr/:addr/unconfirmedBalance', addresses.unconfirmedBalance); // Status route var st = require('../app/controllers/status');