diff --git a/lib/index.js b/lib/index.js index 3cc4484..ef26de1 100644 --- a/lib/index.js +++ b/lib/index.js @@ -100,6 +100,33 @@ module.exports.createFromSession = function (session) { } } +module.exports.koaMiddlewhere = function (tid, options) { + this.tid = tid; + this.options = options; + + var cookieName = (this.options || {}).cookieName || "_ga"; + + return async function (ctx, next) { + ctx.request.visitor = module.exports.createFromSession(ctx.session); + if (ctx.request.visitor) { + return await next(); + } + + var cid; + if (ctx.cookies && ctx.cookies.get(cookieName)) { + var gaSplit = ctx.cookies.get(cookieName).split('.'); + cid = gaSplit[2] + "." + gaSplit[3]; + } + + ctx.request.visitor = init(tid, cid, options); + + if (ctx.session) { + ctx.session.cid = ctx.request.visitor.cid; + } + + await next(); + } +}; Visitor.prototype = { diff --git a/package-lock.json b/package-lock.json index 3bf1fa2..ace6ff6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "universal-analytics", - "version": "0.4.20", + "version": "0.4.21", "lockfileVersion": 1, "requires": true, "dependencies": {