curren api finished. parser json var names normalized. Switched to express 4 router
This commit is contained in:
parent
b74e98c381
commit
7948a63875
@ -1,4 +1,5 @@
|
||||
const config = {
|
||||
full_node: true,
|
||||
logging: 'debug',
|
||||
bcoin: {
|
||||
network: 'main',
|
||||
@ -7,6 +8,7 @@ const config = {
|
||||
workers: true,
|
||||
logLevel: 'info',
|
||||
'max-inbound': 100,
|
||||
'max-outbound': 100,
|
||||
},
|
||||
mongodb: {
|
||||
uri: 'mongodb://localhost/bitcore',
|
||||
@ -16,6 +18,7 @@ const config = {
|
||||
},
|
||||
api: {
|
||||
port: 3000,
|
||||
json_spaces: 2,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
const config = {
|
||||
full_node: true,
|
||||
full_node: false,
|
||||
logging: 'debug',
|
||||
bcoin: {
|
||||
network: 'main',
|
||||
@ -8,6 +8,7 @@ const config = {
|
||||
workers: true,
|
||||
logLevel: 'info',
|
||||
'max-inbound': 100,
|
||||
'max-outbound': 100,
|
||||
},
|
||||
mongodb: {
|
||||
uri: 'mongodb://localhost/bitcore',
|
||||
@ -18,6 +19,8 @@ const config = {
|
||||
api: {
|
||||
port: 3000,
|
||||
json_spaces: 2,
|
||||
currency_refresh: 60,
|
||||
ticker_url: 'https://www.bitstamp.net/api/ticker/',
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -1,41 +1,41 @@
|
||||
module.exports = function addressAPI(app) {
|
||||
app.get('/addr/:addr', (req, res) => {
|
||||
module.exports = function addressrouter(router) {
|
||||
router.get('/addr/:addr', (req, res) => {
|
||||
res.send(req.params.addr);
|
||||
});
|
||||
|
||||
app.get('/addr/:addr/utxo', (req, res) => {
|
||||
router.get('/addr/:addr/utxo', (req, res) => {
|
||||
res.send(req.params.addr);
|
||||
});
|
||||
|
||||
app.get('/addr/:addr/balance', (req, res) => {
|
||||
router.get('/addr/:addr/balance', (req, res) => {
|
||||
res.send(req.params.addr);
|
||||
});
|
||||
|
||||
app.get('/addr/:addr/totalReceived', (req, res) => {
|
||||
router.get('/addr/:addr/totalReceived', (req, res) => {
|
||||
res.send(req.params.addr);
|
||||
});
|
||||
|
||||
app.get('/addr/:addr/totalSent', (req, res) => {
|
||||
router.get('/addr/:addr/totalSent', (req, res) => {
|
||||
res.send(req.params.addr);
|
||||
});
|
||||
|
||||
app.get('/addr/:addr/unconfirmedBalance', (req, res) => {
|
||||
router.get('/addr/:addr/unconfirmedBalance', (req, res) => {
|
||||
res.send(req.params.addr);
|
||||
});
|
||||
|
||||
app.get('/addrs/:addrs/utxo', (req, res) => {
|
||||
router.get('/addrs/:addrs/utxo', (req, res) => {
|
||||
res.send(req.params.addrs);
|
||||
});
|
||||
|
||||
app.post('/addrs/utxo', (req, res) => {
|
||||
router.post('/addrs/utxo', (req, res) => {
|
||||
res.send('post stub');
|
||||
});
|
||||
|
||||
app.get('/addrs/:addrs/txs', (req, res) => {
|
||||
router.get('/addrs/:addrs/txs', (req, res) => {
|
||||
res.send(req.params.addrs);
|
||||
});
|
||||
|
||||
app.post('/addrs/txs', (req, res) => {
|
||||
router.post('/addrs/txs', (req, res) => {
|
||||
res.send('post stub');
|
||||
});
|
||||
};
|
||||
|
||||
@ -16,8 +16,8 @@ function getBlock(params, options, cb) {
|
||||
.limit(MAX_BLOCKS);
|
||||
}
|
||||
|
||||
module.exports = function BlockAPI(app) {
|
||||
app.get('/block/:blockHash', (req, res) => {
|
||||
module.exports = function BlockAPI(router) {
|
||||
router.get('/block/:blockHash', (req, res) => {
|
||||
getBlock(
|
||||
{ hash: req.params.blockHash },
|
||||
{ rawBlock: 0 },
|
||||
@ -30,7 +30,7 @@ module.exports = function BlockAPI(app) {
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/blocks', (req, res) => {
|
||||
router.get('/blocks', (req, res) => {
|
||||
getBlock(
|
||||
{},
|
||||
{ height: 1,
|
||||
@ -59,7 +59,7 @@ module.exports = function BlockAPI(app) {
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/rawblock/:blockHash', (req, res) => {
|
||||
router.get('/rawblock/:blockHash', (req, res) => {
|
||||
getBlock(
|
||||
{ hash: req.params.blockHash },
|
||||
{ rawBlock: 1 },
|
||||
@ -68,11 +68,11 @@ module.exports = function BlockAPI(app) {
|
||||
res.status(501).send();
|
||||
logger.log('err', err);
|
||||
}
|
||||
res.json(block);
|
||||
res.json(block[0]);
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/block-index/:height', (req, res) => {
|
||||
router.get('/block-index/:height', (req, res) => {
|
||||
getBlock(
|
||||
{ height: req.params.height },
|
||||
{},
|
||||
@ -81,7 +81,7 @@ module.exports = function BlockAPI(app) {
|
||||
res.status(501).send();
|
||||
logger.log('err', err);
|
||||
}
|
||||
res.json(block);
|
||||
res.json(block[0]);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
@ -1,5 +1,41 @@
|
||||
const config = require('../../config');
|
||||
const logger = require('../logger');
|
||||
const request = require('request');
|
||||
|
||||
const refreshInterval = config.api.currency_refresh >= 1 ?
|
||||
config.api.currency_refresh * 1000 :
|
||||
60 * 1000;
|
||||
let lastRate = 0;
|
||||
|
||||
getRate();
|
||||
|
||||
setInterval(() => {
|
||||
getRate();
|
||||
}, refreshInterval);
|
||||
|
||||
function getRate() {
|
||||
request(config.api.ticker_url, (err, res, body) => {
|
||||
if (err) {
|
||||
logger.log('error',
|
||||
`${err}`);
|
||||
}
|
||||
try {
|
||||
const ticker = JSON.parse(body);
|
||||
lastRate = ticker.last;
|
||||
logger.log('debug',
|
||||
`getRate: ${lastRate}`);
|
||||
} catch (err) {
|
||||
logger.log('error',
|
||||
`getRate: ${err}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = function currencyAPI(app) {
|
||||
app.get('/currency', (req, res) => {
|
||||
res.send('currency');
|
||||
res.json({
|
||||
bitstamp: lastRate,
|
||||
});
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
@ -2,15 +2,19 @@ const express = require('express');
|
||||
const config = require('../../config');
|
||||
|
||||
const app = express();
|
||||
const api = express.Router();
|
||||
|
||||
app.set('json spaces', config.api.json_spaces);
|
||||
|
||||
// Pass express to register the routes
|
||||
const AddressAPI = require('./address')(app);
|
||||
const BlockAPI = require('./block')(app);
|
||||
const StatusAPI = require('./status')(app);
|
||||
const TransactionAPI = require('./transaction')(app);
|
||||
const MessageAPI = require('./message')(app);
|
||||
const AddressAPI = require('./address')(api);
|
||||
const BlockAPI = require('./block')(api);
|
||||
const CurrencyAPI = require('./currency')(api);
|
||||
const StatusAPI = require('./status')(api);
|
||||
const TransactionAPI = require('./transaction')(api);
|
||||
const MessageAPI = require('./message')(api);
|
||||
|
||||
app.use('/api', api);
|
||||
|
||||
// 404
|
||||
app.use((req, res) => {
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
module.exports = function messageAPI(app) {
|
||||
app.get('/messages/verify', (req, res) => {
|
||||
module.exports = function messageAPI(router) {
|
||||
router.get('/messages/verify', (req, res) => {
|
||||
res.send('messages verify');
|
||||
});
|
||||
|
||||
app.post('/messages/verify', (req, res) => {
|
||||
router.post('/messages/verify', (req, res) => {
|
||||
res.send('post messages verify');
|
||||
});
|
||||
|
||||
app.get('/utils/estimatefee', (req, res) => {
|
||||
router.get('/utils/estimatefee', (req, res) => {
|
||||
res.send('estimate fees');
|
||||
});
|
||||
};
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
module.exports = function statusAPI(app) {
|
||||
app.get('/status', (req, res) => {
|
||||
module.exports = function statusAPI(router) {
|
||||
router.get('/status', (req, res) => {
|
||||
res.send('status');
|
||||
});
|
||||
|
||||
app.get('/sync', (req, res) => {
|
||||
router.get('/sync', (req, res) => {
|
||||
res.send('sync');
|
||||
});
|
||||
|
||||
app.get('/peer', (req, res) => {
|
||||
router.get('/peer', (req, res) => {
|
||||
res.send('peer');
|
||||
});
|
||||
|
||||
app.get('/version', (req, res) => {
|
||||
router.get('/version', (req, res) => {
|
||||
res.send('version');
|
||||
});
|
||||
};
|
||||
|
||||
@ -15,8 +15,8 @@ function getTransaction(params, options, cb) {
|
||||
.limit(MAX_TXS);
|
||||
}
|
||||
|
||||
module.exports = function transactionAPI(app) {
|
||||
app.get('/tx/:txid', (req, res) => {
|
||||
module.exports = function transactionAPI(router) {
|
||||
router.get('/tx/:txid', (req, res) => {
|
||||
Transaction.find({ txid: req.params.txid }, (err, tx) => {
|
||||
if (err) {
|
||||
res.status(501).send();
|
||||
@ -25,7 +25,7 @@ module.exports = function transactionAPI(app) {
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/txs', (req, res) => {
|
||||
router.get('/txs', (req, res) => {
|
||||
getTransaction(
|
||||
{},
|
||||
{},
|
||||
@ -38,11 +38,11 @@ module.exports = function transactionAPI(app) {
|
||||
);
|
||||
});
|
||||
|
||||
app.get('/rawtx/:txid', (req, res) => {
|
||||
router.get('/rawtx/:txid', (req, res) => {
|
||||
res.send(req.params.txid);
|
||||
});
|
||||
|
||||
app.post('/tx/send', (req, res) => {
|
||||
router.post('/tx/send', (req, res) => {
|
||||
res.send('tx send stub');
|
||||
});
|
||||
};
|
||||
|
||||
@ -19,6 +19,11 @@ function start() {
|
||||
BlockParser.parse(entry, block);
|
||||
});
|
||||
|
||||
node.on('error', (err) => {
|
||||
logger.log('error',
|
||||
`${err}`);
|
||||
});
|
||||
|
||||
// node.mempool.on('tx' ...)
|
||||
}
|
||||
|
||||
|
||||
@ -6,19 +6,19 @@ const logger = require('../logger');
|
||||
|
||||
function parse(entry, block) {
|
||||
const rawBlock = block.toRaw().toString('hex');
|
||||
const json = block.toJSON();
|
||||
const blockJSON = block.toJSON();
|
||||
const reward = util.calcBlockReward(entry.height);
|
||||
|
||||
const newBlock = new BlockModel({
|
||||
hash: json.hash,
|
||||
hash: blockJSON.hash,
|
||||
height: entry.height,
|
||||
version: json.version,
|
||||
version: blockJSON.version,
|
||||
size: block.size,
|
||||
prevBlock: json.prevBlock,
|
||||
merkleRoot: json.merkleRoot,
|
||||
ts: json.ts,
|
||||
bits: json.bits,
|
||||
nonce: json.nonce,
|
||||
prevBlock: blockJSON.prevBlock,
|
||||
merkleRoot: blockJSON.merkleRoot,
|
||||
ts: blockJSON.ts,
|
||||
bits: blockJSON.bits,
|
||||
nonce: blockJSON.nonce,
|
||||
txs: block.txs.map(tx => util.revHex(tx.hash().toString('hex'))),
|
||||
chainwork: entry.chainwork,
|
||||
reward: reward,
|
||||
|
||||
@ -7,9 +7,7 @@ const logger = require('../logger');
|
||||
|
||||
function parse(entry, txs) {
|
||||
txs.forEach((tx) => {
|
||||
const txHash = util.revHex(tx.hash().toString('hex'));
|
||||
const blockHash = util.revHex(entry.hash);
|
||||
const txJSON = tx.totxJSON();
|
||||
const txJSON = tx.toJSON();
|
||||
|
||||
const t = new TxModel({
|
||||
hash: txJSON.hash,
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
"bcoin": "^1.0.0-beta.14",
|
||||
"express": "^4.15.3",
|
||||
"mongoose": "^4.11.5",
|
||||
"request": "^2.81.0",
|
||||
"winston": "^2.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user