Block API dried up and mostly complete. Blocks still needs date params support
This commit is contained in:
parent
7afbdb41b1
commit
6e70484362
@ -61,3 +61,4 @@ The API is configured to run on port 3000 by default. Use the standard Nginx rev
|
|||||||
* Rate Limiting
|
* Rate Limiting
|
||||||
* Helmet
|
* Helmet
|
||||||
* Rate Limiting
|
* Rate Limiting
|
||||||
|
* Sanitize user input - mongo and api params. Just make a quick middleware
|
||||||
111
lib/api/block.js
111
lib/api/block.js
@ -1,44 +1,87 @@
|
|||||||
const Block = require('../../models/block.js');
|
const Block = require('../../models/block.js');
|
||||||
const logger = require('../logger');
|
const logger = require('../logger');
|
||||||
|
|
||||||
module.exports = function BlockAPI(app) {
|
const MAX_BLOCKS = 200;
|
||||||
app.get('/block/:blockHash', (req, res) => {
|
|
||||||
getBlock(res,
|
|
||||||
{ hash: req.params.blockHash },
|
|
||||||
{ rawBlock: 0 });
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/blocks', (req, res) => {
|
function getBlock(params, options, cb) {
|
||||||
res.send({
|
|
||||||
blocks: [],
|
|
||||||
length: 0,
|
|
||||||
pagination: {
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/rawblock/:blockHash', (req, res) => {
|
|
||||||
res.send(req.params.blockHash);
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/block-index/:height', (req, res) => {
|
|
||||||
getBlock(res, { height: req.params.height });
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
function getBlock(res, params, options) {
|
|
||||||
const defaultOptions = { _id: 0 };
|
const defaultOptions = { _id: 0 };
|
||||||
|
|
||||||
Object.assign(defaultOptions, options);
|
Object.assign(defaultOptions, options);
|
||||||
|
|
||||||
Block.find(params,
|
Block.find(
|
||||||
|
params,
|
||||||
defaultOptions,
|
defaultOptions,
|
||||||
(err, block) => {
|
cb)
|
||||||
if (err) {
|
.sort({ height: 1 })
|
||||||
res.status(501).send();
|
.limit(MAX_BLOCKS);
|
||||||
logger.log('err', err);
|
|
||||||
}
|
|
||||||
res.json(block[0]);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
@ -26,7 +26,7 @@ function parse(entry, block) {
|
|||||||
reward: 0,
|
reward: 0,
|
||||||
timeNormalized: block.ts,
|
timeNormalized: block.ts,
|
||||||
isMainChain: true,
|
isMainChain: true,
|
||||||
poolInfo: Object,
|
poolInfo: {},
|
||||||
transactionCount: block.txs.length,
|
transactionCount: block.txs.length,
|
||||||
rawBlock: rawBlock,
|
rawBlock: rawBlock,
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user