-
Notifications
You must be signed in to change notification settings - Fork 0
/
analytics.js
43 lines (39 loc) · 1.08 KB
/
analytics.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const ua = require('universal-analytics');
const { pathOr } = require('ramda');
const { env: { UA: accountId } } = process;
const getVisitor = userId => {
return ua(
accountId,
userId,
{
https: true,
strictCidFormat: false,
}
);
};
module.exports = {
trackRequest: (req, res, next) => {
const end = res.end;
res.end = (chunk, encoding) => {
res.end = end;
res.end(chunk, encoding);
const {
ip: ipOverride,
protocol,
hostname,
originalUrl,
} = req;
const userId = pathOr('unknown', ['user', 'username'], req);
getVisitor(userId)
.pageview({
userId,
ipOverride,
userAgentOverride: req.get('User-Agent'),
hitType: 'pageview',
documentLocationUrl: `${protocol}://${hostname}${originalUrl}`,
})
.send();
};
next();
},
};