diff --git a/index.js b/index.js index 928d97e..8f63d96 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,5 @@ const express = require('express'); -const keenMiddleware = require('./lib/keen-middleware'); +const anonlytics = require('anonlytics-express'); const nunjucks = require('nunjucks'); const nunjucksFilters = require('./lib/nunjucks-filters'); const nunjucksMiddleware = require('./lib/nunjucks-middleware'); @@ -15,7 +15,7 @@ if(process.env.NOW) { } // Analytics -app.use(keenMiddleware); +app.use(anonlytics); // Setup nunjucks nunjucks.configure('views', { express: app }); diff --git a/lib/keen-middleware.js b/lib/keen-middleware.js deleted file mode 100644 index a24e9f9..0000000 --- a/lib/keen-middleware.js +++ /dev/null @@ -1,91 +0,0 @@ -const KeenTracking = require('keen-tracking'); -const responseTime = require('response-time'); - -const client = new KeenTracking({ - projectId: process.env.KEEN_PROJECT_ID, - writeKey: process.env.KEEN_WRITE_KEY -}); - -module.exports = responseTime((req, res, time) => { - - // Setup event data - const eventData = { - http: { - method: req.method, - statusCode: res.statusCode - }, - responseTime: time, - url: { - string: `${req.protocol}://${req.headers.host}${req.originalUrl}` - }, - ip: req.ip.substr(0, 7) == '::ffff:' ? req.ip.substr(7) : req.ip, - userAgent: { - string: req.headers['user-agent'] - }, - referrer: { - url: req.headers.referer - }, - express: { - route: req.route.path - } - }; - - // Enable keen date time addon - eventData.keen = { - addons: [ - { - name: 'keen:date_time_parser', - input: { - date_time: 'keen.timestamp', - }, - output: 'timestamp_info' - } - ] - }; - - // Only enable other keen addons if we have the required input - const keenAddons = [ - { - name: 'keen:url_parser', - input: { - url: 'url.string' - }, - output: 'url.components' - }, - { - name: 'keen:ip_to_geo', - input: { - ip: 'ip' - }, - output: 'location' - }, - { - name: 'keen:ua_parser', - input: { - ua_string: 'userAgent.string' - }, - output: 'userAgent.info' - }, - { - name: 'keen:referrer_parser', - input: { - referrer_url: 'referrer.url', - page_url: 'url.string' - }, - output: 'referrer.info' - } - ]; - keenAddons.forEach(addon => { - const hasRequiredProperties = Object - .keys(addon.input) - .map(key => addon.input[key]) - .every(requiredProp => requiredProp.split('.').reduce((obj, i) => obj[i], eventData)); - - if(hasRequiredProperties) { - eventData.keen.addons.push(addon); - } - }); - - // Send event data - client.recordEvent('analytics', eventData); -}); diff --git a/package.json b/package.json index 082515f..71a31f5 100644 --- a/package.json +++ b/package.json @@ -7,18 +7,17 @@ "node": ">=6.3" }, "dependencies": { + "anonlytics-express": "^0.1.1", "ascii-chart": "^1.3.1", "clean-css": "^3.4.19", "compression": "^1.6.2", "express": "^4.14.0", "express-minify": "^0.2.0", "express-minify-html": "^0.6.0", - "keen-tracking": "^1.1.3", "moment": "^2.14.1", "nunjucks": "^2.5.0", "onionoo": "^1.0.0", - "pretty-bytes": "^4.0.2", - "response-time": "^2.3.2" + "pretty-bytes": "^4.0.2" }, "devDependencies": { "nodemon": "^1.10.2"