/*! * 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; // First key is the name this.name = str.substr(0, str.indexOf('=')).trim(); // Map the key/val pairs str.split(/ *; */).reduce(function(obj, pair){ var p = pair.indexOf('='); if(p > 0) obj[pair.substring(0, p).trim()] = pair.substring(p + 1).trim(); else obj[pair.trim()] = true; return obj; }, this); // Assign value this.value = this[this.name]; // 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; };