Send metric to API

pull/199/head
Nikolai Onken 2015-09-15 01:17:33 +00:00
rodzic 2ada86f5a6
commit ed4f39990e
1 zmienionych plików z 10 dodań i 15 usunięć

Wyświetl plik

@ -1,5 +1,7 @@
"use strict";
var superagent = require("superagent");
plugin.consumes = [
"api",
"passport",
@ -111,7 +113,7 @@ function plugin(options, imports, register) {
var version = req.params.version;
var user = req.user;
trackActivity(user, req.cookies);
trackActivity(user, req);
if (version != kaefer.version.protocol) {
var err = new error.PreconditionFailed("Wrong VFS protocol version. Expected version '" + kaefer.version.protocol + "' but found '" + version + "'");
@ -201,7 +203,7 @@ function plugin(options, imports, register) {
var path = req.params.path;
var user = req.user;
trackActivity(user, req.cookies);
trackActivity(user, req);
if (path.indexOf("../") !== -1)
return next(new error.BadRequest("invalid path"));
@ -286,7 +288,7 @@ function plugin(options, imports, register) {
}
// TODO: use an interval to make sure this fires
// even when this REST api is not used for a day
trackActivity(entry.user, req.cookies);
trackActivity(entry.user, req);
entry.vfs.handleRest(scope, path, req, res, next);
}
]);
@ -320,24 +322,17 @@ function plugin(options, imports, register) {
}
]);
function trackActivity(user, cookies) {
function trackActivity(user, req) {
if (user.id === -1)
return;
if (new Date(user.lastVfsAccess).getDate() != new Date().getDate() ||
Date.now() > user.lastVfsAccess + VFS_ACTIVITY_WINDOW) {
// Alias anonymous id, identify, and track activity;
// wait for a flush between each step; see
// https://segment.com/docs/integrations/mixpanel/#server-side
async.series([
analytics.aliasClean.bind(analytics, cookies.mixpanelAnonymousId, user.id),
analytics.identifyClean.bind(analytics, user, {}),
analytics.trackClean.bind(analytics, user, "VFS is active", { uid: user.id }),
], function(err) {
if (err) return console.log("Error logging activity", err.stack || err);
});
superagent
.post(options.apiBaseUrl + "/metric/usage/" + req.params.pid + "?access_token=" + req.query.access_token)
.end(function() {});
user.lastVfsAccess = Date.now();
user.save(function() {});
}