diff options
| author | Teddy Wing | 2014-10-30 20:27:55 -0400 | 
|---|---|---|
| committer | Teddy Wing | 2014-10-30 20:27:55 -0400 | 
| commit | fb4b26ac3aa96432fabeaa5b180690a7f5e3c981 (patch) | |
| tree | f3d9c7d231569417f72aab4e12b26d76e0cfed68 /node_modules/cookie-parser/lib/parse.js | |
| parent | 65600960507d714053d6c7ba99b8e3ced1d6761f (diff) | |
| download | sipping-point-fb4b26ac3aa96432fabeaa5b180690a7f5e3c981.tar.bz2 | |
Add node_modules/
Diffstat (limited to 'node_modules/cookie-parser/lib/parse.js')
| -rw-r--r-- | node_modules/cookie-parser/lib/parse.js | 90 | 
1 files changed, 90 insertions, 0 deletions
| diff --git a/node_modules/cookie-parser/lib/parse.js b/node_modules/cookie-parser/lib/parse.js new file mode 100644 index 0000000..db1e619 --- /dev/null +++ b/node_modules/cookie-parser/lib/parse.js @@ -0,0 +1,90 @@ +var signature = require('cookie-signature'); + +/** + * Parse signed cookies, returning an object + * containing the decoded key/value pairs, + * while removing the signed key from `obj`. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +exports.signedCookies = function(obj, secret){ +  var cookies = Object.keys(obj); +  var dec; +  var key; +  var ret = Object.create(null); +  var val; + +  for (var i = 0; i < cookies.length; i++) { +    key = cookies[i]; +    val = obj[key]; +    dec = exports.signedCookie(val, secret); + +    if (val !== dec) { +      ret[key] = dec; +      delete obj[key]; +    } +  } + +  return ret; +}; + +/** + * Parse a signed cookie string, return the decoded value + * + * @param {String} str signed cookie string + * @param {String} secret + * @return {String} decoded value + * @api private + */ + +exports.signedCookie = function(str, secret){ +  return str.substr(0, 2) === 's:' +    ? signature.unsign(str.slice(2), secret) +    : str; +}; + +/** + * Parse JSON cookies. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +exports.JSONCookies = function(obj){ +  var cookies = Object.keys(obj); +  var key; +  var val; + +  for (var i = 0; i < cookies.length; i++) { +    key = cookies[i]; +    val = exports.JSONCookie(obj[key]); + +    if (val) { +      obj[key] = val; +    } +  } + +  return obj; +}; + +/** + * Parse JSON cookie string + * + * @param {String} str + * @return {Object} Parsed object or null if not json cookie + * @api private + */ + +exports.JSONCookie = function(str) { +  if (!str || str.substr(0, 2) !== 'j:') return; + +  try { +    return JSON.parse(str.slice(2)); +  } catch (err) { +    // no op +  } +}; | 
