This commit is contained in:
Josh Harvey 2016-02-08 19:22:08 +02:00
parent 7c15ce0ae8
commit 8734849511
4 changed files with 37 additions and 19 deletions

View file

@ -54,9 +54,9 @@ module.exports = function(options) {
}
plugins.configure(config);
next();
});
});
};
var authMiddleware;
if (options.https) {

View file

@ -1,9 +1,9 @@
'use strict';
var uuid = require('node-uuid')
var _ = require('lodash');
var async = require('async');
var logger = require('./logger');
var argv = require('minimist')(process.argv.slice(2));
var SATOSHI_FACTOR = 1e8;
@ -323,7 +323,18 @@ exports.stateChange = function stateChange(session, rec, cb) {
fingerprint: session.fingerprint,
eventType: 'stateChange',
note: JSON.stringify({state: rec.state, sessionId: session.id}),
deviceTime: rec.deviceTime
deviceTime: session.deviceTime
}
db.machineEvent(rec, cb)
};
exports.recordPing = function recordPing(session, rec, cb) {
var rec = {
id: uuid.v4(),
fingerprint: session.fingerprint,
eventType: 'ping',
note: JSON.stringify({state: rec.state, sessionId: session.id}),
deviceTime: session.deviceTime
}
db.machineEvent(rec, cb)
};

View file

@ -100,17 +100,6 @@ exports.recordBill = function recordBill(session, rec, cb) {
});
};
exports.recordDeviceEvent = function recordDeviceEvent(session, event) {
connect(function(cerr, client, done) {
if (cerr) return;
var sql = 'INSERT INTO device_events (device_fingerprint, event_type, ' +
'note, device_time) VALUES ($1, $2, $3, $4)';
var values = [session.fingerprint, event.eventType, event.note,
event.deviceTime];
client.query(sql, values, done);
});
};
function query(client, queryStr, values, cb) {
if (!cb) {
cb = values;
@ -514,11 +503,20 @@ exports.cartridgeCounts = function cartridgeCounts(session, cb) {
};
exports.machineEvent = function machineEvent(rec, cb) {
var TTL = 2 * 60 * 60 * 1000
connect(function(cerr, client, done) {
if (cerr) return cb(cerr);
var sql = 'insert into machine_events (id, device_fingerprint, event_type, note, device_time) ' +
'VALUES (?, ?, ?, ?, ?)';
var values = [rec.id, rec.fingerprint, rec.eventType, rec.note, rec.deviceTime]
var fields = ['id', 'device_fingerprint', 'event_type', 'note', 'device_time', 'created']
var sql = getInsertQuery('machine_events', fields, false)
var values = [rec.id, rec.fingerprint, rec.eventType, rec.note, rec.deviceTime, new Date().toISOString()]
var deleteSql = 'DELETE FROM machine_events WHERE created < $1';
var deleteValues = [new Date(Date.now() - TTL).toISOString()];
query(client, deleteSql, deleteValues, function(err) {
if (err) console.error(err)
})
query(client, sql, values, function(err, results) {
done();
return cb(err, results);

View file

@ -78,6 +78,10 @@ function poll(req, res) {
res.json(response);
});
plugins.recordPing(session(req), req.query, function(err) {
if (err) console.error(err);
});
}
function trade(req, res) {
@ -89,6 +93,7 @@ function trade(req, res) {
function stateChange(req, res) {
plugins.stateChange(session(req), req.body, function(err) {
if (err) console.error(err)
res.json(200)
})
}
@ -211,7 +216,11 @@ function init(localConfig) {
}
function session(req) {
return {fingerprint: getFingerprint(req), id: req.get('session-id')};
return {
fingerprint: getFingerprint(req),
id: req.get('session-id'),
deviceTime: Date.parse(req.get('date'))
};
}
function getFingerprint(req) {