88 lines
1.8 KiB
JavaScript
88 lines
1.8 KiB
JavaScript
const Block = require('../../models/block.js');
|
|
const logger = require('../logger');
|
|
|
|
const MAX_BLOCKS = 200;
|
|
|
|
function getBlock(params, options, cb) {
|
|
const defaultOptions = { _id: 0 };
|
|
|
|
Object.assign(defaultOptions, options);
|
|
|
|
Block.find(
|
|
params,
|
|
defaultOptions,
|
|
cb)
|
|
.sort({ height: -1 })
|
|
.limit(MAX_BLOCKS);
|
|
}
|
|
|
|
module.exports = function BlockAPI(app) {
|
|
app.get('/block/:blockHash', (req, res) => {
|
|
getBlock(
|
|
{ hash: req.params.blockHash },
|
|
{ rawBlock: 0 },
|
|
(err, block) => {
|
|
if (err) {
|
|
res.status(501).send();
|
|
logger.log('err', err);
|
|
}
|
|
res.json(block[0]);
|
|
});
|
|
});
|
|
|
|
app.get('/blocks', (req, res) => {
|
|
getBlock(
|
|
{},
|
|
{ height: 1,
|
|
size: 1,
|
|
hash: 1,
|
|
time: 1,
|
|
transactionCount: 1,
|
|
poolInfo: 1 },
|
|
(err, blocks) => {
|
|
if (err) {
|
|
res.status(501).send();
|
|
logger.log('err', err);
|
|
}
|
|
res.json({
|
|
blocks: blocks.map((block) => {
|
|
return {
|
|
hash: block.hash,
|
|
height: block.height,
|
|
time: block.time,
|
|
txlength: block.transactionCount
|
|
};
|
|
}),
|
|
lenght: blocks.length,
|
|
pagination: {},
|
|
});
|
|
});
|
|
});
|
|
|
|
app.get('/rawblock/:blockHash', (req, res) => {
|
|
getBlock(
|
|
{ hash: req.params.blockHash },
|
|
{ rawBlock: 1 },
|
|
(err, block) => {
|
|
if (err) {
|
|
res.status(501).send();
|
|
logger.log('err', err);
|
|
}
|
|
res.json(block);
|
|
});
|
|
});
|
|
|
|
app.get('/block-index/:height', (req, res) => {
|
|
getBlock(
|
|
{ height: req.params.height },
|
|
{},
|
|
(err, block) => {
|
|
if (err) {
|
|
res.status(501).send();
|
|
logger.log('err', err);
|
|
}
|
|
res.json(block);
|
|
});
|
|
});
|
|
};
|