move all rest components to separate modules

This commit is contained in:
Ben West
2014-07-18 03:21:31 -07:00
parent 93cc66dde1
commit 80ea7c6e9f
6 changed files with 87 additions and 34 deletions
+1 -23
View File
@@ -38,29 +38,7 @@ function configure (wares, entries, settings) {
// Some experiments
app.use('/experiments', require('./api/experiments/')(app, wares));
// Status badge/text/json
api.get('/status', function (req, res, next) {
var status = {status: 'ok'};
var badge = 'http://img.shields.io/badge/Nightscout-OK-green';
return res.format({
html: function ( ) {
res.send("<h1>STATUS OK</h1>");
},
png: function ( ) {
res.redirect(302, badge + '.png');
},
svg: function ( ) {
res.redirect(302, badge + '.svg');
},
text: function ( ) {
res.send("STATUS OK");
},
json: function ( ) {
res.json(status);
}
});
});
app.use('/status', require('./api/status')(app, wares));
/**********\
* Entries
\**********/
+2 -1
View File
@@ -18,7 +18,8 @@ function configure (app, wares, entries) {
// json body types get handled as parsed json
api.use(wares.bodyParser.json());
// shortcut to use extension to specify output content-type
api.use(require('express-extension-to-accept')([
// api.use(require('express-extension-to-accept')([
api.use(wares.extensions([
'json', 'svg', 'csv', 'txt', 'png', 'html', 'tsv'
]));
// also support url-encoded content-type
+41
View File
@@ -0,0 +1,41 @@
function create (env, entries, settings) {
var express = require('express'),
app = express( )
;
var wares = require('../middleware/')(env);
// Only allow access to the API if API_SECRET is set on the server.
app.disable('api');
if (env.api_secret) {
console.log("API_SECRET", env.api_secret);
app.enable('api');
}
// set up express basics
app.set('title', 'Nightscout API v1');
/*
* Start setting up routes
*/
if (app.enabled('api')) {
app.use('/experiments', require('./experiments/')(app, wares));
}
/**********\
* Entries
\**********/
app.use('/entries', require('./entries/')(app, wares, entries));
/**********\
* Settings
\**********/
app.use('/settings', require('./settings/')(app, wares, settings));
app.use('/status', require('./status')(app, wares));
return app;
}
module.exports = create;
+35
View File
@@ -0,0 +1,35 @@
function configure (app, wares) {
var express = require('express'),
api = express.Router( )
;
api.use(wares.extensions([
'json', 'svg', 'csv', 'txt', 'png', 'html'
]));
// Status badge/text/json
api.get('/', function (req, res, next) {
var status = {status: 'ok'};
var badge = 'http://img.shields.io/badge/Nightscout-OK-green';
return res.format({
html: function ( ) {
res.send("<h1>STATUS OK</h1>");
},
png: function ( ) {
res.redirect(302, badge + '.png');
},
svg: function ( ) {
res.redirect(302, badge + '.svg');
},
text: function ( ) {
res.send("STATUS OK");
},
json: function ( ) {
res.json(status);
}
});
});
return api;
}
module.exports = configure;
+6 -1
View File
@@ -6,12 +6,17 @@ var wares = {
bodyParser : require('body-parser')
};
function extensions (list) {
return require('express-extension-to-accept')(list);
}
function configure (env) {
var middle = {
verifyAuthorization: wares.verifyAuthorization(env),
sendJSONStatus: wares.sendJSONStatus( ),
requireSSL: wares.requireSSL( ),
bodyParser: wares.bodyParser
bodyParser: wares.bodyParser,
extensions: extensions
};
return middle;
}
+2 -9
View File
@@ -30,7 +30,7 @@ var express = require('express');
///////////////////////////////////////////////////
var entries = require('./lib/entries')(env.mongo_collection, store);
var settings = require('./lib/settings')(env.settings_collection, store);
var api = require('./lib/api')(env, entries, settings);
var api = require('./lib/api/')(env, entries, settings);
var pebble = require('./lib/pebble');
///////////////////////////////////////////////////
@@ -45,17 +45,10 @@ var appInfo = package.name + ' ' + package.version;
app.set('title', appInfo);
app.enable('trust proxy'); // Allows req.secure test on heroku https connections.
// Only allow access to the API if API_SECRET is set on the server.
if (env.api_secret) {
var requireSSL = require('./lib/middleware/require-ssl')( );
console.log("API_SECRET", env.api_secret);
// Display an error when you're not using SSL.
app.use('/api/v1', requireSSL);
// Handle API requests.
app.use('/api/v1', api);
}
app.use('/api/v1', api);
// pebble data
app.get('/pebble', pebble(entries));