62 lines
2.1 KiB
JavaScript
62 lines
2.1 KiB
JavaScript
const logger = require('winston');
|
|
const ua = require('universal-analytics');
|
|
const config = require('../config/speechConfig.js');
|
|
const googleApiKey = config.analytics.googleId;
|
|
|
|
function createServeEventParams (headers, ip, originalUrl) {
|
|
return {
|
|
eventCategory : 'client requests',
|
|
eventAction : 'serve request',
|
|
eventLabel : originalUrl,
|
|
ipOverride : ip,
|
|
userAgentOverride: headers['user-agent'],
|
|
};
|
|
};
|
|
|
|
function createPublishTimingEventParams (label, startTime, endTime, ip, headers) {
|
|
const durration = endTime - startTime;
|
|
return {
|
|
userTimingCategory : 'lbrynet',
|
|
userTimingVariableName: 'publish',
|
|
userTimingTime : durration,
|
|
userTimingLabel : label,
|
|
uip : ip,
|
|
userAgentOverride : headers['user-agent'],
|
|
};
|
|
};
|
|
|
|
function sendGoogleAnalyticsEvent (ip, params) {
|
|
const visitorId = ip.replace(/\./g, '-');
|
|
const visitor = ua(googleApiKey, visitorId, { strictCidFormat: false, https: true });
|
|
visitor.event(params, (err) => {
|
|
if (err) {
|
|
logger.error('Google Analytics Event Error >>', err);
|
|
}
|
|
});
|
|
};
|
|
|
|
function sendGoogleAnalyticsTiming (ip, params) {
|
|
const visitorId = ip.replace(/\./g, '-');
|
|
const visitor = ua(googleApiKey, visitorId, { strictCidFormat: false, https: true });
|
|
visitor.timing(params, (err) => {
|
|
if (err) {
|
|
logger.error('Google Analytics Event Error >>', err);
|
|
}
|
|
logger.debug(`Timing event successfully sent to google analytics`);
|
|
});
|
|
};
|
|
|
|
module.exports = {
|
|
sendGAServeEvent (headers, ip, originalUrl) {
|
|
const params = createServeEventParams(headers, ip, originalUrl);
|
|
sendGoogleAnalyticsEvent(ip, params);
|
|
},
|
|
sendGAAnonymousPublishTiming (headers, ip, originalUrl, startTime, endTime) {
|
|
const params = createPublishTimingEventParams('anonymous', startTime, endTime, ip, headers);
|
|
sendGoogleAnalyticsTiming(ip, params);
|
|
},
|
|
sendGAChannelPublishTiming (headers, ip, originalUrl, startTime, endTime) {
|
|
const params = createPublishTimingEventParams('anonymous', startTime, endTime, ip, headers);
|
|
sendGoogleAnalyticsTiming(ip, params);
|
|
},
|
|
};
|