/*! * Tobi - Cookie * Copyright(c) 2010 LearnBoost * MIT Licensed */ /** * Module dependencies. */ var url = require('url'); /** * Initialize a new `Cookie` with the given cookie `str` and `req`. * * @param {String} str * @param {IncomingRequest} req * @api private */ var Cookie = exports = module.exports = function Cookie(str, req) { this.str = str; // Map the key/val pairs str.split(/ *; */).reduce(function(obj, pair){ var p = pair.indexOf('='); var key = p > 0 ? pair.substring(0, p).trim() : pair.trim(); var lowerCasedKey = key.toLowerCase(); var value = p > 0 ? pair.substring(p + 1).trim() : true; if (!obj.name) { // First key is the name obj.name = key; obj.value = value; } else if (lowerCasedKey === 'httponly') { obj.httpOnly = value; } else { obj[lowerCasedKey] = value; } return obj; }, this); // Expires this.expires = this.expires ? new Date(this.expires) : Infinity; // Default or trim path this.path = this.path ? this.path.trim(): req ? url.parse(req.url).pathname: '/'; }; /** * Return the original cookie string. * * @return {String} * @api public */ Cookie.prototype.toString = function(){ return this.str; };