diff --git a/app/controllers/blockchain.js b/app/controllers/blockchain.js index befbe364d47008079ab42b908494590684faa055..3c04c582217c7094f6d046b3d9ec1c355af46761 100644 --- a/app/controllers/blockchain.js +++ b/app/controllers/blockchain.js @@ -154,37 +154,29 @@ function BlockchainBinding (server) { this.hardship = function (req, res) { res.type('application/json'); - var member = ""; - var nextBlockNumber = 0; - async.waterfall([ - function (next){ - ParametersService.getPubkey(req, next); - }, - function (pubkey, next){ - member = pubkey; - server.dal.isMember(pubkey, next); - }, - function (isMember, next){ - if (!isMember) - next('Not a member'); - else - BlockchainService.current(next); - }, - function (current, next){ + return co(function *() { + let nextBlockNumber = 0; + try { + let search = yield ParametersService.getSearchP(req); + let idty = yield IdentityService.findMemberWithoutMemberships(search); + if (!idty) { + throw 'Identity not found'; + } + if (!idty.member) { + throw 'Not a member'; + } + let current = yield BlockchainService.current(); if (current) { nextBlockNumber = current ? current.number + 1 : 0; } - globalValidator(conf, blockchainDao(null, server.dal)).getTrialLevel(member, next); - } - ], function (err, nbZeros) { - if(err){ - res.send(404, err); - return; + let nbZeros = yield globalValidator(conf, blockchainDao(null, server.dal)).getTrialLevel(idty.pubkey); + res.send(200, JSON.stringify({ + "block": nextBlockNumber, + "level": nbZeros + }, null, " ")); + } catch(e) { + res.send(400, e); } - res.send(200, JSON.stringify({ - "block": nextBlockNumber, - "level": nbZeros - }, null, " ")); }); }; diff --git a/app/lib/streams/bma.js b/app/lib/streams/bma.js index 9a30291d2defc0305102fdbe8e0ef9bf1c74787c..fc3dad18dba76407d7bf3ef00745bfee40ec58f8 100644 --- a/app/lib/streams/bma.js +++ b/app/lib/streams/bma.js @@ -69,7 +69,7 @@ module.exports = function(server, interfaces, httpLogs) { answerForGet( '/blockchain/block/:number', blockchain.promoted); answerForGet( '/blockchain/blocks/:count/:from', blockchain.blocks); answerForGet( '/blockchain/current', blockchain.current); - answerForGet( '/blockchain/hardship/:pubkey', blockchain.hardship); + answerForGet( '/blockchain/hardship/:search', blockchain.hardship); answerForGet( '/blockchain/with/newcomers', blockchain.with.newcomers); answerForGet( '/blockchain/with/certs', blockchain.with.certs); answerForGet( '/blockchain/with/joiners', blockchain.with.joiners);