WIP
This commit is contained in:
parent
7c15ce0ae8
commit
8734849511
4 changed files with 37 additions and 19 deletions
|
|
@ -1,9 +1,9 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
var uuid = require('node-uuid')
|
||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var logger = require('./logger');
|
var logger = require('./logger');
|
||||||
|
|
||||||
var argv = require('minimist')(process.argv.slice(2));
|
var argv = require('minimist')(process.argv.slice(2));
|
||||||
|
|
||||||
var SATOSHI_FACTOR = 1e8;
|
var SATOSHI_FACTOR = 1e8;
|
||||||
|
|
@ -323,7 +323,18 @@ exports.stateChange = function stateChange(session, rec, cb) {
|
||||||
fingerprint: session.fingerprint,
|
fingerprint: session.fingerprint,
|
||||||
eventType: 'stateChange',
|
eventType: 'stateChange',
|
||||||
note: JSON.stringify({state: rec.state, sessionId: session.id}),
|
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)
|
db.machineEvent(rec, cb)
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
function query(client, queryStr, values, cb) {
|
||||||
if (!cb) {
|
if (!cb) {
|
||||||
cb = values;
|
cb = values;
|
||||||
|
|
@ -514,11 +503,20 @@ exports.cartridgeCounts = function cartridgeCounts(session, cb) {
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.machineEvent = function machineEvent(rec, cb) {
|
exports.machineEvent = function machineEvent(rec, cb) {
|
||||||
|
var TTL = 2 * 60 * 60 * 1000
|
||||||
connect(function(cerr, client, done) {
|
connect(function(cerr, client, done) {
|
||||||
if (cerr) return cb(cerr);
|
if (cerr) return cb(cerr);
|
||||||
var sql = 'insert into machine_events (id, device_fingerprint, event_type, note, device_time) ' +
|
var fields = ['id', 'device_fingerprint', 'event_type', 'note', 'device_time', 'created']
|
||||||
'VALUES (?, ?, ?, ?, ?)';
|
var sql = getInsertQuery('machine_events', fields, false)
|
||||||
var values = [rec.id, rec.fingerprint, rec.eventType, rec.note, rec.deviceTime]
|
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) {
|
query(client, sql, values, function(err, results) {
|
||||||
done();
|
done();
|
||||||
return cb(err, results);
|
return cb(err, results);
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,10 @@ function poll(req, res) {
|
||||||
|
|
||||||
res.json(response);
|
res.json(response);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
plugins.recordPing(session(req), req.query, function(err) {
|
||||||
|
if (err) console.error(err);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function trade(req, res) {
|
function trade(req, res) {
|
||||||
|
|
@ -89,6 +93,7 @@ function trade(req, res) {
|
||||||
|
|
||||||
function stateChange(req, res) {
|
function stateChange(req, res) {
|
||||||
plugins.stateChange(session(req), req.body, function(err) {
|
plugins.stateChange(session(req), req.body, function(err) {
|
||||||
|
if (err) console.error(err)
|
||||||
res.json(200)
|
res.json(200)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -211,7 +216,11 @@ function init(localConfig) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function session(req) {
|
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) {
|
function getFingerprint(req) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue