From 4ef0949061bba91e32ed53b48ec694dbe7b77169 Mon Sep 17 00:00:00 2001 From: tenthirtyone Date: Thu, 10 Aug 2017 23:39:08 -0400 Subject: [PATCH] returning data --- server/lib/api/address.js | 82 ++++++++++++++++++++++++++++++++++----- 1 file changed, 73 insertions(+), 9 deletions(-) diff --git a/server/lib/api/address.js b/server/lib/api/address.js index 2b77eeb..5a147b8 100644 --- a/server/lib/api/address.js +++ b/server/lib/api/address.js @@ -3,41 +3,105 @@ const logger = require('../logger'); const MAX_BLOCKS = 200; +// Shoe horned in. Not dry, also in blocks. Make db api later +function getBlock(params, options, limit, cb) { + const defaultOptions = { _id: 0 }; + + Object.assign(defaultOptions, options); + + console.log + + Block.find( + params, + defaultOptions, + cb) + .sort({ height: -1 }) + .limit(limit); +} + module.exports = function AddressAPI(router) { router.get('/addr/:addr', (req, res) => { - res.send(req.params.addr); + getBlock( + { + $or: + [ + { 'txs.outputs.address': req.params.addr }, + { 'txs.inputs.prevout.hash': req.params.addr }, + ], + }, + { rawBlock: 0 }, + MAX_BLOCKS, + (err, block) => { + if (err) { + res.status(501).send(); + logger.log('err', err); + } + + if (block[0]) { + const b = block[0]; + res.json({ + pagesTotal: 1, + txs: b.txs.map(tx => ({ + txid: tx.hash, + version: tx.version, + locktime: tx.locktime, + vin: tx.inputs.map(input => ({ + coinbase: input.script, + sequence: input.sequence, + n: 0, + addr: input.address, + })), + vout: tx.outputs.map(output => ({ + value: output.value / 1e8, + n: 0, + scriptPubKey: { + hex: '', + asm: '', + addresses: [output.address], + type: output.type, + }, + spentTxid: '', + spentIndex: 0, + spentHeight: 0, + })), + })), + }); + } else { + res.send(); + } + }); }); router.get('/addr/:addr/utxo', (req, res) => { - res.send(req.params.addr); + res.send("1"); }); router.get('/addr/:addr/balance', (req, res) => { - res.send(req.params.addr); + res.send("2"); }); router.get('/addr/:addr/totalReceived', (req, res) => { - res.send(req.params.addr); + res.send("3"); }); router.get('/addr/:addr/totalSent', (req, res) => { - res.send(req.params.addr); + res.send("4"); }); router.get('/addr/:addr/unconfirmedBalance', (req, res) => { - res.send(req.params.addr); + res.send("5"); }); router.get('/addrs/:addrs/utxo', (req, res) => { - res.send(req.params.addrs); + res.send("6"); }); router.post('/addrs/utxo', (req, res) => { - res.send('post stub'); + res.send("7"); }); router.get('/addrs/:addrs/txs', (req, res) => { - res.send(req.params.addrs); + res.send("8"); }); router.post('/addrs/txs', (req, res) => {