mirror of
https://github.com/bckelley/cgm-remote-monitor.git
synced 2026-08-24 03:14:12 -05:00
first pass at devicestatus api/storage current only used in the /pebble endpoint
This commit is contained in:
Executable
+5
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
curl -H "Content-Type: application/json" -XPOST 'http://localhost:1337/api/v1/devicestatus/' -d '{
|
||||
"uploaderBattery": 55
|
||||
}'
|
||||
@@ -27,6 +27,8 @@ function config ( ) {
|
||||
env.mongo_collection = process.env.CUSTOMCONNSTR_mongo_collection || process.env.MONGO_COLLECTION || 'entries';
|
||||
env.settings_collection = process.env.CUSTOMCONNSTR_mongo_settings_collection || 'settings';
|
||||
env.treatments_collection = process.env.CUSTOMCONNSTR_mongo_treatments_collection || 'treatments';
|
||||
env.devicestatus_collection = process.env.CUSTOMCONNSTR_mongo_devicestatus_collection || 'devicestatus';
|
||||
|
||||
var shasum = crypto.createHash('sha1');
|
||||
var useSecret = (process.env.API_SECRET && process.env.API_SECRET.length > 0);
|
||||
env.api_secret = null;
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
'use strict';
|
||||
|
||||
var consts = require('../../constants');
|
||||
|
||||
function configure (app, wares, devicestatus) {
|
||||
var express = require('express'),
|
||||
api = express.Router( );
|
||||
|
||||
// invoke common middleware
|
||||
api.use(wares.sendJSONStatus);
|
||||
// text body types get handled as raw buffer stream
|
||||
api.use(wares.bodyParser.raw( ));
|
||||
// json body types get handled as parsed json
|
||||
api.use(wares.bodyParser.json( ));
|
||||
// also support url-encoded content-type
|
||||
api.use(wares.bodyParser.urlencoded({ extended: true }));
|
||||
|
||||
// List settings available
|
||||
api.get('/devicestatus/', function(req, res) {
|
||||
devicestatus.list(function (err, profiles) {
|
||||
return res.json(profiles);
|
||||
});
|
||||
});
|
||||
|
||||
function config_authed (app, api, wares, devicestatus) {
|
||||
|
||||
api.post('/devicestatus/', /*TODO: auth disabled for quick UI testing... wares.verifyAuthorization, */ function(req, res) {
|
||||
var obj = req.body;
|
||||
devicestatus.create(obj, function (err, created) {
|
||||
if (err)
|
||||
res.sendJSONStatus(res, consts.HTTP_INTERNAL_ERROR, 'Mongo Error', err);
|
||||
else
|
||||
res.json(created);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
if (app.enabled('api') || true /*TODO: auth disabled for quick UI testing...*/) {
|
||||
config_authed(app, api, wares, devicestatus);
|
||||
}
|
||||
|
||||
return api;
|
||||
}
|
||||
|
||||
module.exports = configure;
|
||||
|
||||
+2
-1
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
function create (env, entries, settings, treatments) {
|
||||
function create (env, entries, settings, treatments, devicestatus) {
|
||||
var express = require('express'),
|
||||
app = express( )
|
||||
;
|
||||
@@ -30,6 +30,7 @@ function create (env, entries, settings, treatments) {
|
||||
app.use('/', require('./entries/')(app, wares, entries));
|
||||
app.use('/', require('./settings/')(app, wares, settings));
|
||||
app.use('/', require('./treatments/')(app, wares, treatments));
|
||||
app.use('/', require('./devicestatus/')(app, wares, devicestatus));
|
||||
|
||||
// Status
|
||||
app.use('/', require('./status')(app, wares));
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
'use strict';
|
||||
|
||||
function configure (collection, storage) {
|
||||
|
||||
function create (obj, fn) {
|
||||
obj.created_at = (new Date( )).toISOString( );
|
||||
api( ).insert(obj, function (err, doc) {
|
||||
fn(null, doc);
|
||||
});
|
||||
}
|
||||
|
||||
function tail(fn) {
|
||||
return api( ).find({ }).sort({created_at: -1}).limit(1).toArray(function(err, entries) {
|
||||
if (entries && entries.length > 0)
|
||||
fn(err, entries[0]);
|
||||
else
|
||||
fn(err, null);
|
||||
});
|
||||
}
|
||||
|
||||
function list (fn) {
|
||||
return api( ).find({ }).sort({created_at: -1}).toArray(fn);
|
||||
}
|
||||
|
||||
function api ( ) {
|
||||
return storage.pool.db.collection(collection);
|
||||
}
|
||||
|
||||
api.list = list;
|
||||
api.create = create;
|
||||
api.tail = tail;
|
||||
return api;
|
||||
}
|
||||
module.exports = configure;
|
||||
+13
-2
@@ -22,6 +22,7 @@ function directionToTrend (direction) {
|
||||
function pebble (req, res) {
|
||||
var FORTY_MINUTES = 2400000;
|
||||
var cgmData = [ ];
|
||||
var uploaderBattery;
|
||||
|
||||
function requestMetric() {
|
||||
var units = req.query.units;
|
||||
@@ -60,6 +61,7 @@ function pebble (req, res) {
|
||||
// obj.y = element.sgv;
|
||||
// obj.x = element.date;
|
||||
obj.datetime = element.date;
|
||||
obj.battery = "" + uploaderBattery;
|
||||
// obj.date = element.date.toString( );
|
||||
cgmData.push(obj);
|
||||
}
|
||||
@@ -70,11 +72,20 @@ function pebble (req, res) {
|
||||
res.end( );
|
||||
// collection.db.close();
|
||||
}
|
||||
req.entries.list({count: 2}, get_latest);
|
||||
req.devicestatus.tail(function(err, value) {
|
||||
if (!err && value) {
|
||||
uploaderBattery = value.uploaderBattery;
|
||||
} else {
|
||||
console.error("req.devicestatus.tail", err);
|
||||
}
|
||||
|
||||
req.entries.list({count: 2}, get_latest);
|
||||
});
|
||||
}
|
||||
function configure (entries) {
|
||||
function configure (entries, devicestatus) {
|
||||
function middle (req, res, next) {
|
||||
req.entries = entries;
|
||||
req.devicestatus = devicestatus;
|
||||
next( );
|
||||
}
|
||||
return [middle, pebble];
|
||||
|
||||
@@ -33,7 +33,8 @@ var pushover = require('./lib/pushover')(env);
|
||||
var entries = require('./lib/entries')(env.mongo_collection, store);
|
||||
var settings = require('./lib/settings')(env.settings_collection, store);
|
||||
var treatments = require('./lib/treatments')(env.treatments_collection, store, pushover);
|
||||
var api = require('./lib/api/')(env, entries, settings, treatments);
|
||||
var devicestatus = require('./lib/devicestatus')(env.devicestatus_collection, store);
|
||||
var api = require('./lib/api/')(env, entries, settings, treatments, devicestatus);
|
||||
var pebble = require('./lib/pebble');
|
||||
///////////////////////////////////////////////////
|
||||
|
||||
@@ -53,7 +54,7 @@ app.enable('trust proxy'); // Allows req.secure test on heroku https connections
|
||||
app.use('/api/v1', api);
|
||||
|
||||
// pebble data
|
||||
app.get('/pebble', pebble(entries));
|
||||
app.get('/pebble', pebble(entries, devicestatus));
|
||||
|
||||
//app.get('/package.json', software);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user