mirror of
https://github.com/bckelley/cgm-remote-monitor.git
synced 2026-08-24 03:14:12 -05:00
81 lines
2.4 KiB
JavaScript
81 lines
2.4 KiB
JavaScript
'use strict';
|
|
|
|
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;
|