nightscout
Version:
Nightscout acts as a web-based CGM (Continuous Glucose Monitor) to allow multiple caregivers to remotely view a patients glucose data in realtime.
81 lines (61 loc) • 2.49 kB
JavaScript
;
function create (env, ctx) {
var _each = require('lodash/each')
, express = require('express')
, app = express( )
;
const wares = ctx.wares;
// set up express app with our options
app.set('name', env.name);
app.set('version', env.version);
app.set('units', env.DISPLAY_UNITS);
// Only allow access to the API if API KEY is set on the server.
app.disable('api');
if (env.enclave.isApiKeySet()) {
console.log('API KEY present, enabling API');
app.enable('api');
} else {
console.log('API KEY has not been set, API disabled');
}
if (env.settings.enable) {
app.extendedClientSettings = ctx.plugins && ctx.plugins.extendedClientSettings ? ctx.plugins.extendedClientSettings(env.extendedSettings) : {};
_each(env.settings.enable, function (enable) {
console.info('enabling feature:', enable);
app.enable(enable);
});
}
app.set('title', [app.get('name'), 'API', app.get('version')].join(' '));
// Start setting up routes
if (app.enabled('api')) {
// experiments
app.use('/experiments', require('./experiments/')(app, wares, ctx));
}
app.use(wares.extensions([
'json', 'svg', 'csv', 'txt', 'png', 'html', 'tsv'
]));
var entriesRouter = require('./entries/')(app, wares, ctx, env);
// Entries and settings
app.all('/entries*', entriesRouter);
app.all('/echo/*', entriesRouter);
app.all('/times/*', entriesRouter);
app.all('/slice/*', entriesRouter);
app.all('/count/*', entriesRouter);
app.all('/treatments*', require('./treatments/')(app, wares, ctx, env));
app.all('/profile*', require('./profile/')(app, wares, ctx));
app.all('/devicestatus*', require('./devicestatus/')(app, wares, ctx, env));
app.all('/notifications*', require('./notifications-api')(app, wares, ctx));
app.all('/activity*', require('./activity/')(app, wares, ctx));
app.use('/', wares.sendJSONStatus, require('./verifyauth')(ctx));
app.use('/', wares.sendJSONStatus, require('./adminnotifiesapi')(ctx));
app.all('/food*', require('./food/')(app, wares, ctx));
// Status first
app.all('/status*', require('./status')(app, wares, env, ctx));
if (ctx.alexa) {
app.all('/alexa*', require('./alexa/')(app, wares, ctx, env));
}
if (ctx.googleHome) {
app.all('/googlehome*', require('./googlehome/')(app, wares, ctx, env));
}
return app;
}
module.exports = create;