home *** CD-ROM | disk | FTP | other *** search
/ Minami 83 / MINAMI83.iso / Extra / DivXInstaller.exe / $PLUGINSDIR / GoogleToolbarFirefox.msi / xpi / amulet-jslib / tr-fetcher.js < prev    next >
Text File  |  2006-08-07  |  3KB  |  88 lines

  1. function PROT_TRFetcher(opt_noCrypto) {
  2. this.debugZone = "trfetcher";
  3. this.useCrypto_ = !opt_noCrypto;
  4. this.lookupserverURL_ = PROT_globalStore.getLookupserverURL();
  5. this.protocol4Parser_ = new G_Protocol4Parser();
  6. }
  7. PROT_TRFetcher.TRY_REKEYING_RESPONSE = "pleaserekey";
  8. PROT_TRFetcher.prototype.extraQueryParams = {
  9. sourceid: "firefox-antiphish",
  10. features: "TrustRank",
  11. client: "navclient-auto-tbff"
  12. };
  13. PROT_TRFetcher.prototype.getRequestURL_ = function(url) {
  14. if (!this.urlCrypto_)
  15. this.urlCrypto_ = new PROT_UrlCrypto();
  16. G_Debug(this, "Fetching for " + url);
  17. var requestURL = this.lookupserverURL_;
  18. var param;
  19. for (param in this.extraQueryParams)
  20. requestURL += param + "=" + this.extraQueryParams[param] + "&";
  21. if (this.useCrypto_) {
  22. var len = requestURL.length;
  23. param = "q=" + encodeURIComponent(url);
  24. requestURL += this.urlCrypto_.maybeCryptParam(param, 2048 - len);
  25. } else {
  26. requestURL += "q=" + encodeURIComponent(url);
  27. requestURL = requestURL.substring(0, 2048);
  28. }
  29. if ('%' == requestURL[2046]) {
  30. requestURL = requestURL.substring(0, 2046);
  31. } else if ('%' == requestURL[2047]) {
  32. requestURL = requestURL.substring(0, 2047);
  33. }
  34. G_Debug(this, "Request URL: " + requestURL + " (" + requestURL.length + ")");
  35. return requestURL;
  36. };
  37. PROT_TRFetcher.prototype.get = function(forPage, callback) {
  38. var url = this.getRequestURL_(forPage);
  39. var closure = BindToObject(this.onFetchComplete_, this, callback);
  40. (new PROT_XMLFetcher()).get(url, closure);
  41. if (false)
  42. dump("\ntests[\"" + url + "\"] = \"" + forPage + "\";\n");
  43. };
  44. PROT_TRFetcher.prototype.onFetchComplete_ = function(callback, responseText) {
  45. var responseObj = this.extractResponse_(responseText);
  46. if (responseObj[PROT_TRFetcher.TRY_REKEYING_RESPONSE] == "1" &&
  47. this.urlCrypto_) {
  48. G_Debug(this, "We're supposed to re-key. Trying.");
  49. var manager = this.urlCrypto_.getManager();
  50. if (manager)
  51. manager.maybeReKey();
  52. }
  53. G_Debug(this, "TR Response:");
  54. for (var field in responseObj)
  55. G_Debug(this, field + "=" + responseObj[field]);
  56. callback(responseObj);
  57. };
  58. PROT_TRFetcher.prototype.extractResponse_ = function(responseText) {
  59. return this.protocol4Parser_.parse(responseText);
  60. };
  61. function TEST_PROT_TRFetcher() {
  62. if (G_GDEBUG) {
  63. var z = "trfetcher UNITTEST";
  64. G_debugService.enableZone(z);
  65. G_Debug(z, "Starting");
  66. var fetcher = new PROT_TRFetcher();
  67. var fakeResponse = "foo:3:foo\nbar:3:bar\nbaz:1:b";
  68. var fields = fetcher.extractResponse_(fakeResponse);
  69. G_Assert(z, fields["foo"] == "foo", "Bad parse: foo");
  70. G_Assert(z, fields["bar"] == "bar", "Bad parse: bar");
  71. G_Assert(z, fields["baz"] == "b", "Bad parse: baz");
  72. G_Assert(z, !fields["yourmom"], "Bad parse: yourmom");
  73. var calledRekey = false;
  74. var fakeManager = {
  75. maybeReKey: function() {
  76. calledRekey = true;
  77. }
  78. };
  79. fetcher.urlCrypto_ = {};
  80. fetcher.urlCrypto_.getManager = function() { return fakeManager; };
  81. var rekeyText = "foo:1:bar\n" +
  82. PROT_TRFetcher.TRY_REKEYING_RESPONSE + ":1:1";
  83. fetcher.onFetchComplete_(function() {}, rekeyText);
  84. G_Assert(z, calledRekey, "rekey didn't trigger call to maybeReKey()");
  85. G_Debug(z, "PASSED");
  86. }
  87. }
  88.