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.
72 lines (60 loc) • 2.1 kB
JavaScript
;
function configure (app, wares, env, ctx) {
var express = require('express'),
forwarded = require('forwarded-for'),
api = express.Router( )
;
api.use(wares.sendJSONStatus);
api.use(wares.extensions([
'json', 'svg', 'csv', 'txt', 'png', 'html', 'js'
]));
api.use(ctx.authorization.isPermitted('api:status:read'));
// Status badge/text/json
api.get('/status', function (req, res) {
let extended = env.settings.filteredSettings(app.extendedClientSettings);
let settings = env.settings.filteredSettings(env.settings);
var authToken = req.query.token || req.query.secret || '';
function getRemoteIP (req) {
const address = forwarded(req, req.headers);
return address.ip;
}
var date = new Date();
var info = { status: 'ok'
, name: app.get('name')
, version: app.get('version')
, serverTime: date.toISOString()
, serverTimeEpoch: date.getTime()
, apiEnabled: app.enabled('api')
, careportalEnabled: app.enabled('api') && env.settings.enable.indexOf('careportal') > -1
, boluscalcEnabled: app.enabled('api') && env.settings.enable.indexOf('boluscalc') > -1
, settings: settings
, extendedSettings: extended
, authorized: ctx.authorization.authorize(authToken, getRemoteIP(req))
, runtimeState: ctx.runtimeState
};
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');
},
js: function ( ) {
var parts = ['this.serverSettings =', JSON.stringify(info), ';'];
res.send(parts.join(' '));
},
text: function ( ) {
res.send('STATUS OK');
},
json: function ( ) {
res.json(info);
}
});
});
return api;
}
module.exports = configure;