home *** CD-ROM | disk | FTP | other *** search
- //-------------------------------------------------------------------------------------------
- // Cookie module.
- //-------------------------------------------------------------------------------------------
-
- const Cc = Components.classes;
- const Ci = Components.interfaces;
-
- var EXPORTED_SYMBOLS = ["samfind_modcookie"];
-
- Components.utils.import("resource://samfind/samfind_modutils.jsm");
-
- var samfind_modcookie =
- {
- _manager : null,
- _service : null,
- _nc_branch : null,
-
- _init : function()
- {
- samfind_modcookie._manager = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager);
- samfind_modcookie._service = Cc["@mozilla.org/cookieService;1"].getService(Ci.nsICookieService);
- //
- samfind_modcookie._nc_branch = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService).getBranch("network.cookie.");
- samfind_modcookie._nc_branch.QueryInterface(Ci.nsIPrefBranch2);
- samfind_modcookie._nc_branch.addObserver("", samfind_modcookie, false);
- },
-
- getCookie : function(name)
- {
- for (var e=samfind_modcookie._manager.enumerator; e.hasMoreElements();)
- {
- var cookie = e.getNext().QueryInterface(Ci.nsICookie);
- if (cookie.host == "samfind.com" && cookie.name == name)
- {
- return cookie.value;
- }
- }
- return "";
- },
-
- setCookie : function(name, value)
- {
- var cookie_uri = samfind_modutils._io_service.newURI("http://samfind.com/", null, null);
- samfind_modcookie._service.setCookieString(cookie_uri, null, name + "=" + value + ";expires=Wed, 01 Jan 2025 15:24:55 GMTo", null);
- },
-
- removeCookie : function(name)
- {
- var cookie_uri = samfind_modutils._io_service.newURI("http://samfind.com/", null, null);
- samfind_modcookie._service.setCookieString(cookie_uri, null, name + "=;expires=Wed, 01 Jan 1970 00:00:00 GMTo", null);
- },
-
- getSamfindUserCookie : function()
- {
- var samfind_user = samfind_modcookie.getCookie("samfinduser");
- if (samfind_user.length)
- {
- samfind_modutils._pref_branch.setCharPref("cookie", samfind_user);
- }
- else
- {
- samfind_user = samfind_modutils._pref_branch.getCharPref("cookie");
- if (samfind_user.length)
- {
- samfind_modcookie.setCookie("samfinduser", samfind_user);
- }
- }
- return samfind_user;
- },
-
- loadSamfindUserCookie : function(retry, observer)
- {
- try
- {
- var xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest);
- xhr.open("GET", "http://samfind.com/cookie_bar.php", true);
- xhr.channel.loadFlags |= Ci.nsIRequest.LOAD_BYPASS_CACHE;
- xhr.setRequestHeader("User-Agent", "samfind Toolbar");
- var timeout = samfind_modutils.setXhrAbortTimeout(xhr, 10000);
- xhr.onreadystatechange = function(e)
- {
- if (xhr.readyState == 4)
- {
- timeout.cancel();
- timeout = null;
- try
- {
- if (xhr.status == 200)
- {
- observer.cookieLoaded(xhr.responseText);
- }
- else if (++retry < 3)
- {
- samfind_modutils.setTimeoutWithParams(window, samfind_modcookie.loadSamfindUserCookie, 5000, retry, observer);
- }
- else
- {
- observer.cookieLoaded(null);
- }
- }
- catch (e)
- {
- if (++retry < 3)
- {
- samfind_modutils.setTimeoutWithParams(window, samfind_modcookie.loadSamfindUserCookie, 5000, retry, observer);
- }
- else
- {
- observer.cookieLoaded(null);
- }
- }
- xhr = null;
- }
- };
- xhr.send(null);
- }
- catch (e)
- {
- if (++retry < 3)
- {
- samfind_modutils.setTimeoutWithParams(window, samfind_modcookie.loadSamfindUserCookie, 5000, retry, observer);
- }
- else
- {
- observer.cookieLoaded(null);
- }
- }
- },
-
- observe : function(aSubject, aTopic, aData)
- {
- if (aTopic != "nsPref:changed" || aData != "cookieBehavior")
- {
- return;
- }
- if (samfind_modcookie._nc_branch.getIntPref(aData) != 2 && samfind_modcookie.getCookie("samfinduser") == "")
- {
- var samfind_user = samfind_modutils._pref_branch.getCharPref("cookie");
- if (samfind_user.length)
- {
- samfind_modcookie.setCookie("samfinduser", samfind_user);
- }
- }
- }
- };
-
- /**
- * Constructor.
- */
- (function() { this._init(); }).apply(samfind_modcookie);