Skip to content

Instantly share code, notes, and snippets.

@Martin-Nyaga
Last active October 10, 2016 18:43
Show Gist options
  • Save Martin-Nyaga/ca0304810f71fe7fe442d062066f7846 to your computer and use it in GitHub Desktop.
Save Martin-Nyaga/ca0304810f71fe7fe442d062066f7846 to your computer and use it in GitHub Desktop.
Stop struggling to parse cookies.

CookieMonster.js

Stop struggling with cookies in Javascript, use CookieMonster.js :).

Usage

Include CookieMonster.js in your HTML file or load it using requirejs.

var cook = new CookieMonster();

cook.getCookies() // returns an object containing all cookies
cook.setCookie("cookie_name", "value", 2) // set cookie "cookie_name" to "value". Last parameter is optional expiry time in days
cook.getCookie("foo") // returns the value of the cookie "foo" if it exists. Raises an error if it doesn't
cook.cookieExists("foo") // returns true if cookie "foo" exists else false
cook.removeCookie("foo") // deletes cookie foo
var CookieMonster = function(){
function blank(s){
if ((typeof s===undefined)||(s==null)||(s=="")||(s.length===0)){
return true;
} else {
return false;
}
}
return {
getCookies: function(){
var o = document.cookie.split(";");
var r = {};
o.forEach(function(c){
r[c.split("=")[0].trim()] = c.split("=")[1]
});
return r;
},
setCookie: function(cookie_name,cookie_value,expiry_days){
var d = new Date();
if(blank(expiry_days)){
expiry_days = 7;
}
d.setTime(d.getTime() + (expiry_days * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cookie_name + "=" + cookie_value + "; " + expires;
return this.getCookies();
},
cookieExists: function(cookie_name){
if (!blank(this.getCookies()[cookie_name])){
return true;
} else {
return false;
}
},
getCookie: function(cookie_name){
if(this.cookieExists(cookie_name)){
return this.getCookies()[cookie_name];
} else {
console.error("Cookie '" + cookie_name + "' not set.");
return null;
}
},
removeCookie: function(cookie_name){
if(this.cookieExists(cookie_name)){
document.cookie = cookie_name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC" ;
return this.getCookies();
} else {
console.error("Cookie '" + cookie_name + "' not set.");
return this.getCookies();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment