Reinstate amplitude analytics

This commit is contained in:
Blade Barringer
2015-10-27 19:37:57 -05:00
parent 68689d1a05
commit a7c52e6086
5 changed files with 28 additions and 17 deletions

View File

@@ -5,7 +5,7 @@
"main": "./website/src/server.js", "main": "./website/src/server.js",
"dependencies": { "dependencies": {
"amazon-payments": "0.0.4", "amazon-payments": "0.0.4",
"amplitude": "^1.0.6", "amplitude": "^2.0.1",
"async": "~0.9.0", "async": "~0.9.0",
"aws-sdk": "^2.0.25", "aws-sdk": "^2.0.25",
"babel": "^5.5.4", "babel": "^5.5.4",

View File

@@ -8,7 +8,9 @@ describe('analytics', function() {
// Mocks // Mocks
var amplitudeMock = sinon.stub(); var amplitudeMock = sinon.stub();
var googleAnalyticsMock = sinon.stub(); var googleAnalyticsMock = sinon.stub();
var amplitudeTrack = sinon.stub(); var amplitudeTrack = sinon.stub().returns({
catch: function () { return true; }
});
var googleEvent = sinon.stub().returns({ var googleEvent = sinon.stub().returns({
send: function() { } send: function() { }
}); });

View File

@@ -24,14 +24,16 @@ function init(options) {
} }
function track(eventType, data) { function track(eventType, data) {
//_sendDataToAmplitude(eventType, data); _sendDataToAmplitude(eventType, data);
_sendDataToGoogle(eventType, data); _sendDataToGoogle(eventType, data);
} }
function _sendDataToAmplitude(eventType, data) { function _sendDataToAmplitude(eventType, data) {
var amplitudeData = _formatDataForAmplitude(data); var amplitudeData = _formatDataForAmplitude(data);
amplitudeData.event_type = eventType; amplitudeData.event_type = eventType;
amplitude.track(amplitudeData); amplitude.track(amplitudeData).catch(function(error) {
// @TODO log error with new relic
});
} }
function _sendDataToGoogle(eventType, data) { function _sendDataToGoogle(eventType, data) {
@@ -78,7 +80,7 @@ function _generateValueForGoogleAnalytics(data) {
} }
function trackPurchase(data) { function trackPurchase(data) {
//_sendPurchaseDataToAmplitude(data); _sendPurchaseDataToAmplitude(data);
_sendPurchaseDataToGoogle(data); _sendPurchaseDataToGoogle(data);
} }
@@ -87,7 +89,9 @@ function _sendPurchaseDataToAmplitude(data) {
amplitudeData.event_type = 'purchase'; amplitudeData.event_type = 'purchase';
amplitudeData.revenue = data.purchaseValue; amplitudeData.revenue = data.purchaseValue;
amplitude.track(amplitudeData) amplitude.track(amplitudeData).catch(function(error) {
// @TODO log error with new relic
});
} }
function _formatDataForAmplitude(data) { function _formatDataForAmplitude(data) {
@@ -95,7 +99,7 @@ function _formatDataForAmplitude(data) {
var event_properties = _.omit(data, PROPERTIES_TO_SCRUB); var event_properties = _.omit(data, PROPERTIES_TO_SCRUB);
var ampData = { var ampData = {
user_id: data.uuid, user_id: data.uuid || 'no-user-id-was-provided',
platform: 'server', platform: 'server',
event_properties: event_properties event_properties: event_properties
} }

View File

@@ -118,7 +118,8 @@ api.registerUser = function(req, res, next) {
var analyticsData = { var analyticsData = {
category: 'acquisition', category: 'acquisition',
type: 'local', type: 'local',
gaLabel: 'local' gaLabel: 'local',
uuid: user._id,
}; };
analytics.track('register', analyticsData) analytics.track('register', analyticsData)
@@ -145,9 +146,9 @@ api.registerUser = function(req, res, next) {
api.loginLocal = function(req, res, next) { api.loginLocal = function(req, res, next) {
var username = req.body.username; var username = req.body.username;
var password = req.body.password; var password = req.body.password;
if (!(username && password)) return res.json(401, {err:'Missing :username or :password in request body, please provide both'}); if (!(username && password)) return res.json(401, {err:'Missing :username or :password in request body, please provide both'});
var login = validator.isEmail(username) ? var login = validator.isEmail(username) ?
{'auth.local.email':username.toLowerCase()} : // Emails are all lowercase {'auth.local.email':username.toLowerCase()} : // Emails are all lowercase
{'auth.local.username':username}; // Use the username as the user typed it {'auth.local.username':username}; // Use the username as the user typed it
@@ -212,7 +213,8 @@ api.loginSocial = function(req, res, next) {
var analyticsData = { var analyticsData = {
category: 'acquisition', category: 'acquisition',
type: network, type: network,
gaLabel: network gaLabel: network,
uuid: user._id,
}; };
analytics.track('register', analyticsData) analytics.track('register', analyticsData)
}] }]
@@ -276,9 +278,9 @@ var invalidPassword = function(user, password){
api.changeUsername = function(req, res, next) { api.changeUsername = function(req, res, next) {
var user = res.locals.user; var user = res.locals.user;
var username = req.body.username; var username = req.body.username;
var lowerCaseUsername = username && username.toLowerCase(); // we search for the lowercased version to intercept duplicates var lowerCaseUsername = username && username.toLowerCase(); // we search for the lowercased version to intercept duplicates
if(!username) return res.json(400, {err: "Username not provided"}); if(!username) return res.json(400, {err: "Username not provided"});
async.waterfall([ async.waterfall([
function(cb){ function(cb){
@@ -352,7 +354,7 @@ api.getFirebaseToken = function(req, res, next) {
.createToken({ .createToken({
uid: user._id, uid: user._id,
isHabiticaUser: true isHabiticaUser: true
}, { }, {
expires: expires expires: expires
}); });

View File

@@ -912,7 +912,8 @@ api.questAccept = function(req, res, next) {
owner: true, owner: true,
response: 'accept', response: 'accept',
gaLabel: 'accept', gaLabel: 'accept',
questName: key questName: key,
uuid: user._id,
}; };
analytics.track('quest',analyticsData); analytics.track('quest',analyticsData);
group.quest.members[m] = true; group.quest.members[m] = true;
@@ -958,7 +959,8 @@ api.questAccept = function(req, res, next) {
owner: false, owner: false,
response: 'accept', response: 'accept',
gaLabel: 'accept', gaLabel: 'accept',
questName: group.quest.key questName: group.quest.key,
uuid: user._id,
}; };
analytics.track('quest',analyticsData); analytics.track('quest',analyticsData);
group.quest.members[user._id] = true; group.quest.members[user._id] = true;
@@ -977,7 +979,8 @@ api.questReject = function(req, res, next) {
owner: false, owner: false,
response: 'reject', response: 'reject',
gaLabel: 'reject', gaLabel: 'reject',
questName: group.quest.key questName: group.quest.key,
uuid: user._id,
}; };
analytics.track('quest',analyticsData); analytics.track('quest',analyticsData);
group.quest.members[user._id] = false; group.quest.members[user._id] = false;