mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
var optional = require('./optional')
|
|
, tough = optional('tough-cookie')
|
|
, Cookie = tough && tough.Cookie
|
|
, CookieJar = tough && tough.CookieJar
|
|
;
|
|
|
|
exports.parse = function(str) {
|
|
if (str && str.uri) str = str.uri
|
|
if (typeof str !== 'string') throw new Error("The cookie function only accepts STRING as param")
|
|
if (!Cookie) {
|
|
return null;
|
|
}
|
|
return Cookie.parse(str)
|
|
};
|
|
|
|
// Adapt the sometimes-Async api of tough.CookieJar to our requirements
|
|
function RequestJar() {
|
|
this._jar = new CookieJar();
|
|
}
|
|
RequestJar.prototype.setCookie = function(cookieOrStr, uri, options) {
|
|
return this._jar.setCookieSync(cookieOrStr, uri, options || {});
|
|
};
|
|
RequestJar.prototype.getCookieString = function(uri) {
|
|
return this._jar.getCookieStringSync(uri);
|
|
};
|
|
RequestJar.prototype.getCookies = function(uri) {
|
|
return this._jar.getCookiesSync(uri);
|
|
};
|
|
|
|
exports.jar = function() {
|
|
if (!CookieJar) {
|
|
// tough-cookie not loaded, return a stub object:
|
|
return {
|
|
setCookie: function(){},
|
|
getCookieString: function(){},
|
|
getCookies: function(){}
|
|
};
|
|
}
|
|
return new RequestJar();
|
|
};
|
|
|