-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathanycookie.js
More file actions
90 lines (84 loc) · 2.93 KB
/
Copy pathanycookie.js
File metadata and controls
90 lines (84 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// AnyCookie (C) 2016 by Yieme. See: github.com/yieme/anycookie. License: MIT
(function(WINDOW, DOCUMENT, COOKIE, LENGTH, SUBSTRING, NAMESPACE, options, cookieDomain, i, host, anycookie, UNDEFINED) {
WINDOW[NAMESPACE] = WINDOW[NAMESPACE] || [];
anycookie = WINDOW[NAMESPACE];
// get value from param-like string (eg, "x=y&name=VALUE")
function getFromStr(name, text, nameEQ, ca, c, i) {
if (typeof text !== "string") {
return;
}
nameEQ = name + "="
ca = text.split(/[;&]/)
for (i = 0; i < ca[LENGTH]; i++) {
c = ca[i];
while (c.charAt(0) === " ") {
c = c[SUBSTRING](1, c[LENGTH]);
}
if (c.indexOf(nameEQ) === 0) {
return c[SUBSTRING](nameEQ[LENGTH], c[LENGTH]);
}
}
};
anycookie.push(WINDOW.localStorage)
anycookie.push(WINDOW.sessionStorage)
anycookie.push({ // adapted from github.com/jgallen23/cookie-monster
setItem: function(name, value, date, type, valueToUse) {
date = new Date()
type = typeof(value)
date.setTime(date.getTime() + 1e11); // 1e8 is approximately 3 years
valueToUse = (type === "object" && type !== "undefined") ? JSON.stringify({v:value}) : value
DOCUMENT[COOKIE] = name + "=" + encodeURIComponent(valueToUse) + "; expires=" + date.toUTCString() + "; path=/" // ; secure
},
getItem: function(name) {
var nameEQ = name + "=",
ca = DOCUMENT[COOKIE].split(';'),
value = '',
firstChar = '',
parsed={};
for (var i = 0; i < ca[LENGTH]; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c[SUBSTRING](1, c[LENGTH]);
if (c.indexOf(nameEQ) === 0) {
value = decodeURIComponent(c[SUBSTRING](nameEQ[LENGTH], c[LENGTH]));
firstChar = value[SUBSTRING](0, 1);
if(firstChar=="{"){
try {
parsed = JSON.parse(value);
if("v" in parsed) return parsed.v;
} catch(e) {
return value;
}
}
if (value=="undefined") return UNDEFINED;
return value;
}
}
return null
}
});
// high level get/set operations against all data stores
anycookie.get = function(name, result) {
for(i=0; i<anycookie[LENGTH]; i++) {
result = anycookie[i]
if (result) {
try {
result = result.getItem(name)
} catch(e) {}
if (result) {
anycookie.set(name, result)
return result
}
}
}
}
anycookie.set = function(name, value) {
for(i=0; i<anycookie[LENGTH]; i++) {
var result = anycookie[i]
if (result) {
try {
result.setItem(name, value)
} catch(e) {}
}
}
}
})(window, document, 'cookie', 'length', 'substring', 'AC')