UNPKG

bitcore-node

Version:

A blockchain indexing node with extended capabilities using bitcore

69 lines (62 loc) 2.04 kB
import express, { Request } from 'express'; import logger from '../../logger'; import { ChainStateProvider } from '../../providers/chain-state'; import { StreamAddressUtxosParams } from '../../types/namespaces/ChainStateProvider'; const router = express.Router({ mergeParams: true }); async function streamCoins(req: Request, res) { try { let { chain, network, address } = req.params; let { unspent, limit = 10, since } = req.query; let payload = { chain, network, address, req, res, args: { ...req.query, unspent, limit, since } } as StreamAddressUtxosParams; await ChainStateProvider.streamAddressTransactions(payload); } catch (err: any) { logger.error('Error streaming coins: %o', err.stack || err.message || err); return res.status(500).send(err.message || err); } } router.get('/:address', function (req: Request, res) { try { let { chain, network, address } = req.params; let { unspent, limit = 10, since } = req.query; let payload = { chain, network, address, req, res, args: { unspent, limit, since } } as StreamAddressUtxosParams; return ChainStateProvider.streamAddressUtxos(payload); } catch (err: any) { logger.error('Error getting address: %o', err.stack || err.message || err); return res.status(500).send(err.message || err); } }); router.get('/:address/txs', streamCoins); router.get('/:address/coins', streamCoins); router.get('/:address/balance', async function (req: Request, res) { let { address, chain, network } = req.params; try { let result = await ChainStateProvider.getBalanceForAddress({ chain, network, address, args: req.query }); return res.send(result || { confirmed: 0, unconfirmed: 0, balance: 0 }); } catch (err: any) { logger.error('Error getting address balance: %o', err.stack || err.message || err); return res.status(500).send(err.message || err); } }); module.exports = { router, path: '/address' };