18 var cookie = this.cookies[name]
19 if (cookie && this.checkNotExpired(name)) {
20 return this.cookies[name].value
33 set:
function(name, value, options) {
34 var cookie = typeof options ==
'object'
35 ? {value: value, expires: options.expires, secure: options.secure ||
false,
new: options.new ||
false}
37 if (this.checkNotExpired(name, cookie)) {
38 this.cookies[name] = cookie
43 getExpirationDate:
function(name) {
44 return this.cookies[name] ? this.cookies[name].expires : null
48 checkNotExpired:
function(name, cookie) {
49 if (typeof cookie ===
'undefined') {
50 cookie = this.cookies[name]
53 if (cookie && cookie.expires && now > cookie.expires) {
54 delete this.cookies[name]
66 parseResponse:
function(headers) {
67 var cookies = headers[
'set-cookie']
69 cookies.forEach(
function(c) {
70 var cookiesParams = c.split(
';')
71 var cookiePair = cookiesParams.shift().split(
'=')
73 cookiesParams.forEach(
function(param) {
75 if (param.toLowerCase().indexOf(
'expires') == 0) {
76 var date = param.split(
'=')[1].trim()
77 options.expires =
new Date(date)
80 this.set(cookiePair[0].trim(), cookiePair[1].trim(), options)
90 composeRequest:
function(headers) {
91 if (Object.keys(
this.cookies).length == 0) {
94 headers[
'Cookie'] = this.toString()
102 toString:
function() {
103 return Object.keys(this.cookies)
104 .filter(this.checkNotExpired.bind(
this))
105 .map(
function(name) {
106 return name +
'=' + this.cookies[name].value
107 }.bind(
this)).join(
';')
111 module.exports = Cookies