12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 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);
- });
- }
- };
|