71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
module.exports = function init(storage, ToughCookie, WebStorageCookieStore) {
|
|
var storeKey = '__advancedHttpCookieStore__';
|
|
|
|
var store = new WebStorageCookieStore(storage, storeKey);
|
|
var cookieJar = new ToughCookie.CookieJar(store);
|
|
|
|
return {
|
|
setCookieFromString: setCookieFromString,
|
|
setCookie: setCookie,
|
|
getCookieString: getCookieString,
|
|
clearCookies: clearCookies,
|
|
removeCookies: removeCookies
|
|
};
|
|
|
|
function splitCookieString(cookieStr) {
|
|
var cookieParts = cookieStr.split(',');
|
|
var splitCookies = [];
|
|
var processedCookie = null;
|
|
|
|
for (var i = 0; i < cookieParts.length; ++i) {
|
|
if (cookieParts[i].substr(-11, 8).toLowerCase() === 'expires=') {
|
|
processedCookie = cookieParts[i] + ',' + cookieParts[i + 1];
|
|
i++;
|
|
} else {
|
|
processedCookie = cookieParts[i];
|
|
}
|
|
|
|
processedCookie = processedCookie.trim();
|
|
splitCookies.push(processedCookie);
|
|
}
|
|
|
|
return splitCookies;
|
|
}
|
|
|
|
function setCookieFromString(url, cookieStr) {
|
|
if (!cookieStr) return;
|
|
|
|
var cookies = splitCookieString(cookieStr);
|
|
|
|
for (var i = 0; i < cookies.length; ++i) {
|
|
cookieJar.setCookieSync(cookies[i], url, { ignoreError: true });
|
|
}
|
|
}
|
|
|
|
function setCookie(url, cookie, options) {
|
|
options = options || {};
|
|
options.ignoreError = false;
|
|
cookieJar.setCookieSync(cookie, url, options);
|
|
}
|
|
|
|
function getCookieString(url) {
|
|
return cookieJar.getCookieStringSync(url);
|
|
}
|
|
|
|
function clearCookies() {
|
|
window.localStorage.removeItem(storeKey);
|
|
}
|
|
|
|
function removeCookies(url, cb) {
|
|
cookieJar.getCookies(url, function (error, cookies) {
|
|
if (!cookies || cookies.length === 0) {
|
|
return cb(null, []);
|
|
}
|
|
|
|
var domain = cookies[0].domain;
|
|
|
|
cookieJar.store.removeCookies(domain, null, cb);
|
|
});
|
|
}
|
|
};
|