marshals/cookies.js

var utils = require('../utils')

/**
 * @module marshals/cookies
 * @author Nijiko Yonskai
 */

/**
 * Convert array of cookies, or cookie string to a JavaScript object
 *
 * @param  {Mixed} obj Cookie array, or string
 * @return {Object}
 */
exports.marshal = function MarshalCookies (obj) {
  var cookies = {}
  var index
  var item

  function parse (cookie) {
    var pieces = utils.trim(cookie).split('=')
    var key = utils.trim(pieces[0])
    var value = utils.trim(pieces.slice(1).join('='))

    if (key && key !== '') {
      cookies[key] = value === '' ? true : value
    }
  }

  if (obj) {
    if (utils.is(obj).a(Array)) {
      for (index = 0; index < obj.length; index++) {
        item = obj[index]

        if (utils.is(item).a(String) && utils.does(item).contain('')) {
          item.split(';').forEach(parse)
        }
      }
    } else if (utils.is(obj).a(String)) {
      obj.split(';').forEach(parse)
    }
  }

  return cookies
}