Skip to content

Instantly share code, notes, and snippets.

@dominykas
Created January 9, 2014 07:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dominykas/8330476 to your computer and use it in GitHub Desktop.
Save dominykas/8330476 to your computer and use it in GitHub Desktop.
Tracking cookie for hapi
var uuid = require("node-uuid");
var TRACKING_COOKIE_NAME = "trackingId";
var UUID_REGEX = /^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/;
module.exports.register = function (server) {
server.state(TRACKING_COOKIE_NAME, {
ttl: 2 * 365 * 86400 * 1000,
path: "/"
});
server.ext("onPreHandler", function (req, next) {
if (!req.state[TRACKING_COOKIE_NAME] || !UUID_REGEX.test(req.state[TRACKING_COOKIE_NAME])) {
req.state[TRACKING_COOKIE_NAME] = uuid.v4();
}
next();
});
server.ext("onPreResponse", function (req, next) {
if (req.response.isBoom) {
next();
return;
}
req.response.state(TRACKING_COOKIE_NAME, req.state[TRACKING_COOKIE_NAME]);
next();
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment