summaryrefslogtreecommitdiff
path: root/StoneIsland/plugins/cordova-plugin-advanced-http/www/cookie-handler.js
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/plugins/cordova-plugin-advanced-http/www/cookie-handler.js')
-rw-r--r--StoneIsland/plugins/cordova-plugin-advanced-http/www/cookie-handler.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/StoneIsland/plugins/cordova-plugin-advanced-http/www/cookie-handler.js b/StoneIsland/plugins/cordova-plugin-advanced-http/www/cookie-handler.js
new file mode 100644
index 00000000..f8dd24c5
--- /dev/null
+++ b/StoneIsland/plugins/cordova-plugin-advanced-http/www/cookie-handler.js
@@ -0,0 +1,70 @@
+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);
+ });
+ }
+};