diff --git a/config/config.js b/config/index.js similarity index 94% rename from config/config.js rename to config/index.js index d6a7cee..93c6841 100644 --- a/config/config.js +++ b/config/index.js @@ -1,4 +1,5 @@ const config = { + logging: 'debug', bcoin: { network: 'main', db: 'leveldb', diff --git a/index.js b/index.js index b060e0a..3c7968d 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,5 @@ const node = require('./lib/node'); -const config = require('./config/config'); +const config = require('./config'); const logger = require('./lib/logger'); const Api = require('./lib/api'); const db = require('./lib/db'); @@ -14,4 +14,4 @@ Api.listen(config.api.port, () => { 'listening on port 3000'); }); -node.start(); +//node.start(); diff --git a/lib/api/address.js b/lib/api/address.js new file mode 100644 index 0000000..f7677e9 --- /dev/null +++ b/lib/api/address.js @@ -0,0 +1,42 @@ + +module.exports = function(app) { + app.get('/addr/:addr', (req, res) => { + res.send(req.params.addr); + }); + + app.get('/addr/:addr/utxo', (req, res) => { + res.send(req.params.addr); + }); + + app.get('/addrs/:addrs/utxo', (req, res) => { + res.send(req.params.addrs); + }); + + app.post('/addrs/utxo', (req, res) => { + res.send('post stub'); + }); + + app.get('/addrs/:addrs/txs', (req, res) => { + res.send(req.params.addrs); + }); + + app.post('/addrs/txs', (req, res) => { + res.send('post stub'); + }); + + app.get('/addr/:addr/balance', (req, res) => { + res.send(req.params.addr); + }); + + app.get('/addr/:addr/totalReceived', (req, res) => { + res.send(req.params.addr); + }); + + app.get('/addr/:addr/totalSent', (req, res) => { + res.send(req.params.addr); + }); + + app.get('/addr/:addr/unconfirmedBalance', (req, res) => { + res.send(req.params.addr); + }); +}; diff --git a/lib/api/block.js b/lib/api/block.js new file mode 100644 index 0000000..c46d0b3 --- /dev/null +++ b/lib/api/block.js @@ -0,0 +1,29 @@ +const Block = require('../../models/block.js'); + +module.exports = function (app) { + app.get('/block/:blockHash', (req, res) => { + Block.find({ hash: req.params.blockHash }, (err, block) => { + if (err) { + console.log(err); + } + res.send(block); + }); + }); + + app.get('/blocks', (req, res) => { + res.send({ + blocks: [], + length: 0, + pagination: { + }, + }); + }); + + app.get('/rawblock/:blockHash', (req, res) => { + res.send(req.params.blockHash); + }); + + app.get('/block-index/:height', (req, res) => { + res.send(req.params.height); + }); +}; diff --git a/lib/api/currency.js b/lib/api/currency.js new file mode 100644 index 0000000..5c056c5 --- /dev/null +++ b/lib/api/currency.js @@ -0,0 +1,5 @@ +module.exports = function(app) { + app.get('/currency', (req, res) => { + res.send('currency'); + }); +}; diff --git a/lib/api/index.js b/lib/api/index.js index 1eac2f0..ec2a97c 100644 --- a/lib/api/index.js +++ b/lib/api/index.js @@ -1,137 +1,14 @@ const express = require('express'); + const app = express(); -const mongoose = require('mongoose'); -const config = require('../../config/config'); -const Block = require('../../models/block.js'); -const BLOCK_LIMIT = 200; -mongoose.connect(config.mongodb.uri, config.mongodb.options); +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); -// Address Routes -app.get('/block/:blockhash', (req, res) => { - res.send(req.params.blockhash); -}); - -app.get('/blocks', (req, res) => { - res.send({ - blocks: [], - length: 0, - pagination: { - }, - }); -}); - -app.get('/rawblock/:blockHash', (req, res) => { - res.send(req.params.blockHash); -}); - -app.get('/block-index/:height', (req, res) => { - res.send(req.params.height); -}); - - -// Tx Routes -app.get('/tx/:txid', (req, res) => { - res.send(req.params.txid); -}); - -app.get('/txs', (req, res) => { - res.send('list of txs'); -}); - -app.post('/tx/send', (req, res) => { - res.send('tx send stub'); -}); - - -// Raw Routes -app.get('/rawtx/:txid', (req, res) => { - res.send(req.params.txid); -}); - - -// Address Routes -app.get('/addr/:addr', (req, res) => { - res.send(req.params.addr); -}); - -app.get('/addr/:addr/utxo', (req, res) => { - res.send(req.params.addr); -}); - -app.get('/addrs/:addrs/utxo', (req, res) => { - res.send(req.params.addrs); -}); - -app.post('/addrs/utxo', (req, res) => { - res.send('post stub'); -}); - -app.get('/addrs/:addrs/txs', (req, res) => { - res.send(req.params.addrs); -}); - -app.post('/addrs/txs', (req, res) => { - res.send('post stub'); -}); - - -// Address property routes -app.get('/addr/:addr/balance', (req, res) => { - res.send(req.params.addr); -}); - -app.get('/addr/:addr/totalReceived', (req, res) => { - res.send(req.params.addr); -}); - -app.get('/addr/:addr/totalSent', (req, res) => { - res.send(req.params.addr); -}); - -app.get('/addr/:addr/unconfirmedBalance', (req, res) => { - res.send(req.params.addr); -}); - - -// Status -app.get('/status', (req, res) => { - res.send('status'); -}); - -app.get('/sync', (req, res) => { - res.send('sync'); -}); - -app.get('/peer', (req, res) => { - res.send('peer'); -}); - -app.get('/version', (req, res) => { - res.send('version'); -}); - -// Messages -app.get('/messages/verify', (req, res) => { - res.send('messages verify'); -}); - -app.post('/messages/verify', (req, res) => { - res.send('post messages verify'); -}); - -app.get('/utils/estimatefee', (req, res) => { - res.send('estimate fees'); -}); - - -// Currency -app.get('/currency', (req, res) => { - res.send('currency'); -}); - - -// 404 Catchall +// 404 app.use((req, res) => { res.status(404).send({ status: 404, diff --git a/lib/api/message.js b/lib/api/message.js new file mode 100644 index 0000000..34045ac --- /dev/null +++ b/lib/api/message.js @@ -0,0 +1,13 @@ +module.exports = function(app) { + app.get('/messages/verify', (req, res) => { + res.send('messages verify'); + }); + + app.post('/messages/verify', (req, res) => { + res.send('post messages verify'); + }); + + app.get('/utils/estimatefee', (req, res) => { + res.send('estimate fees'); + }); +}; diff --git a/lib/api/status.js b/lib/api/status.js new file mode 100644 index 0000000..3cb1e5a --- /dev/null +++ b/lib/api/status.js @@ -0,0 +1,17 @@ +module.exports = function(app) { + app.get('/status', (req, res) => { + res.send('status'); + }); + + app.get('/sync', (req, res) => { + res.send('sync'); + }); + + app.get('/peer', (req, res) => { + res.send('peer'); + }); + + app.get('/version', (req, res) => { + res.send('version'); + }); +}; diff --git a/lib/api/transaction.js b/lib/api/transaction.js new file mode 100644 index 0000000..26c162c --- /dev/null +++ b/lib/api/transaction.js @@ -0,0 +1,19 @@ +const Transaction = require('../../models/transaction.js').Transaction; + +module.exports = function (app) { + app.get('/tx/:txid', (req, res) => { + res.send(req.params.txid); + }); + + app.get('/txs', (req, res) => { + res.send('list of txs'); + }); + + app.get('/rawtx/:txid', (req, res) => { + res.send(req.params.txid); + }); + + app.post('/tx/send', (req, res) => { + res.send('tx send stub'); + }); +}; diff --git a/lib/logger/index.js b/lib/logger/index.js index 75e9a96..5b1a9f4 100644 --- a/lib/logger/index.js +++ b/lib/logger/index.js @@ -1,4 +1,6 @@ const winston = require('winston'); +const config = require('../../config'); + const logfile = new Date().toISOString(); const logger = new (winston.Logger)({ @@ -12,6 +14,6 @@ const logger = new (winston.Logger)({ ], }); -logger.level = process.env.LOG || 'debug'; +logger.level = process.env.LOG || config.logging; module.exports = logger; diff --git a/lib/node/index.js b/lib/node/index.js index 19729ca..becf9d3 100644 --- a/lib/node/index.js +++ b/lib/node/index.js @@ -1,6 +1,5 @@ const FullNode = require('bcoin/lib/node/fullnode'); -const config = require('../../config/config'); -const node = new FullNode(config.bcoin); +const config = require('../../config'); const logger = require('../../lib/logger'); const util = require('../../lib/util'); const BlockModel = require('../../models/block'); @@ -8,13 +7,15 @@ const TxModel = require('../../models/transaction').Transaction; const InputModel = require('../../models/transaction').Input; const OutputModel = require('../../models/transaction').Output; +const node = new FullNode(config.bcoin); + function start() { node.open() - .then(() => { - node.connect().then(() => { - node.startSync(); + .then(() => { + node.connect().then(() => { + node.startSync(); + }); }); - }); node.chain.on('connect', (entry, block) => { logger.log('debug', @@ -84,7 +85,7 @@ function processTx(entry, txs) { vout: 0, }); }), - blockHash: blockHash, + blockHash, blockHeight: entry.height, confirmations: 0, time: entry.ts, @@ -98,8 +99,8 @@ function processTx(entry, txs) { }); t.save((err) => { if (err) { - console.log(err.message); - } + console.log(err.message); + } }); }); } diff --git a/models/transaction.js b/models/transaction.js index f75c225..be5fac8 100644 --- a/models/transaction.js +++ b/models/transaction.js @@ -52,5 +52,5 @@ const Output = mongoose.model('Output', OutputSchema); module.exports = { Transaction, Input, - Output + Output, }; diff --git a/test/model.test.js b/test/model.test.js index ae2f4f6..2e2cfde 100644 --- a/test/model.test.js +++ b/test/model.test.js @@ -1,7 +1,7 @@ const db = require('../lib/db'); const Block = require('../models/block.js'); -Block.findOne({}, function(err, block) { - console.log(err) - console.log(block) -}) \ No newline at end of file +Block.findOne({}, (err, block) => { + console.log(err); + console.log(block); +});