'use strict'; var express = require('express'); var Blocks = require('../controllers/blocks'); var NodeStatus = require('../controllers/node'); function initRouter(node) { var router = express.Router(); [NodeStatus, Blocks].forEach(function(controller) { controller.setNode(node); }); function mockResponse(req, res) { res.send({ 'message': 'This is a mocked response' }); } // parameter middleware router.param('blockHash', Blocks.blockHashParam); router.param('height', Blocks.heightParam); // Node routes router.get('/node', NodeStatus.getStatus); // Block routes router.get('/blocks', mockResponse); router.get('/blocks/latest', mockResponse); router.get('/blocks/:blockHash([A-Fa-f0-9]{64})', Blocks.getBlock); router.get('/blocks/:height([0-9]+)', Blocks.getBlock); router.get('/blocks/*', Blocks.getBlockError); router.get('/blocks/:blockHash/transactions/:txIndex', mockResponse); // Transaction routes router.get('/transactions', mockResponse); router.get('/transactions/:txHash', mockResponse); router.get('/transactions/:txHash/addresses', mockResponse); router.get('/transactions/:txHash/outputs/addresses', mockResponse); router.get('/transactions/:txHash/inputs/addresses', mockResponse); router.post('/transactions/send', mockResponse); // Input routes router.get('/transactions/:txHash/inputs', mockResponse); router.get('/transactions/:txHash/inputs/:index', mockResponse); // Output routes router.get('/transactions/:txHash/outputs', mockResponse); router.get('/transactions/:txHash/outputs/:index', mockResponse); // Address routes router.get('/addresses/:address', mockResponse); router.get('/addresses/:address/transactions', mockResponse); router.get('/addresses/:address/utxos', mockResponse); // TODO: check if this is really restful router.get('/addresses/:addresses/utxos', mockResponse); return router; } module.exports = initRouter;