diff --git a/plugins/c9.vfs.server/vfs.server.js b/plugins/c9.vfs.server/vfs.server.js index bca1547f..b4ad74ba 100644 --- a/plugins/c9.vfs.server/vfs.server.js +++ b/plugins/c9.vfs.server/vfs.server.js @@ -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() {}); }