From 75bc316ea40efbf0f7559d24ec973083a73c27ad Mon Sep 17 00:00:00 2001 From: Yemel Jardi Date: Fri, 27 Feb 2015 12:36:28 -0300 Subject: [PATCH] Add backing services to http api --- api/app.js | 28 +++++++++++----------------- api/bin/www | 15 ++++++++++++--- api/routes/index.js | 21 ++++++++++++--------- api/routes/v1.js | 16 ++++++++++------ api/routes/v2.js | 16 ++++++++++------ 5 files changed, 55 insertions(+), 41 deletions(-) diff --git a/api/app.js b/api/app.js index de1ad753..ef6755f8 100644 --- a/api/app.js +++ b/api/app.js @@ -7,40 +7,34 @@ var bodyParser = require('body-parser'); var config = require('./config'); var routes = require('./routes'); - -function API(backend, opts) { - this.backend = backend; - this.opts = opts; - - this._initApp(); -} - -API.prototype._initApp = function() { - this.app = express(); +function init(backend) { + var app = express(); // parse POST data - this.app.use(cors()); - this.app.use(bodyParser.json()); - this.app.use(bodyParser.urlencoded({ extended: false })); + app.use(cors()); + app.use(bodyParser.json()); + app.use(bodyParser.urlencoded({ extended: false })); // install routes - this.app.use('/', routes); + app.use('/', routes(backend)); // catch 404 and forward to error handler - this.app.use(function(req, res, next) { + app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // production error handler - this.app.use(function(err, req, res, next) { + app.use(function(err, req, res, next) { res.status(err.status || 500); res.send({ message: err.message, error: {} }); }); + + return app; } -module.exports = API; +module.exports = init; diff --git a/api/bin/www b/api/bin/www index 850e5e28..55d52e15 100755 --- a/api/bin/www +++ b/api/bin/www @@ -6,20 +6,29 @@ var API = require('../app'); var http = require('http'); -var api = new API(); + +/** + * Init api with backing services + */ + +var Node = { + status: 'live', + nodes: 123 +} +var app = new API(Node); /** * Get port from environment and store in Express. */ var port = normalizePort(process.env.PORT || '8000'); -api.app.set('port', port); +app.set('port', port); /** * Create HTTP server. */ -var server = http.createServer(api.app); +var server = http.createServer(app); /** * Listen on provided port, on all network interfaces. diff --git a/api/routes/index.js b/api/routes/index.js index 6f686d26..645f8d9f 100644 --- a/api/routes/index.js +++ b/api/routes/index.js @@ -3,15 +3,18 @@ var express = require('express'); var router = express.Router(); -var v1 = require('./v1'); -var v2 = require('./v2'); +function initRouter(backend) { + var v1 = require('./v1')(backend); + var v2 = require('./v2')(backend); -/* GET home page. */ -router.get('/', function(req, res, next) { - res.send('bitcore node api'); -}); + router.use('/v1', v1); + router.use('/v2', v2); -router.use('/v1', v1); -router.use('/v2', v2); + router.get('/', function(req, res, next) { + res.send('bitcore node api'); + }); -module.exports = router; + return router; +} + +module.exports = initRouter; diff --git a/api/routes/v1.js b/api/routes/v1.js index 80ca3e40..5a75b370 100644 --- a/api/routes/v1.js +++ b/api/routes/v1.js @@ -1,11 +1,15 @@ 'use strict'; var express = require('express'); -var router = express.Router(); -/* GET home page. */ -router.get('/blocks', function(req, res, next) { - res.send('blocks v1'); -}); +function initRouter(backend) { + var router = express.Router(); -module.exports = router; + router.get('/blocks', function(req, res, next) { + res.send('blocks v1' + backend.status); + }); + + return router; +} + +module.exports = initRouter; diff --git a/api/routes/v2.js b/api/routes/v2.js index 9897746e..b6e51377 100644 --- a/api/routes/v2.js +++ b/api/routes/v2.js @@ -1,11 +1,15 @@ 'use strict'; var express = require('express'); -var router = express.Router(); -/* GET home page. */ -router.get('/blocks', function(req, res, next) { - res.send('blocks v2'); -}); +function initRouter(backend) { + var router = express.Router(); -module.exports = router; + router.get('/blocks', function(req, res, next) { + res.send('blocks v2 ' + backend.nodes); + }); + + return router; +} + +module.exports = initRouter;