diff options
author | Matěj Cepl <mcepl@redhat.com> | 2010-06-30 01:13:19 +0200 |
---|---|---|
committer | Matěj Cepl <mcepl@redhat.com> | 2010-06-30 01:13:19 +0200 |
commit | 10ba5aaadd5c4f4bc5a769c2778ef26f952bb5a7 (patch) | |
tree | 09761465da097e065c398d2805332d8b7447dcae | |
parent | 984c66b9db41ccb8d338df993cf16cde2ff68068 (diff) | |
download | bugzilla-triage-10ba5aaadd5c4f4bc5a769c2778ef26f952bb5a7.tar.gz |
Use 'request' module instead of home brewed load{Text,JSON} and httpPOST
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | lib/main.js | 71 | ||||
-rw-r--r-- | lib/rhbzpage.js | 74 | ||||
-rw-r--r-- | lib/util.js | 85 | ||||
-rw-r--r-- | package.json | 4 | ||||
-rw-r--r-- | tests/test-util.js | 34 |
6 files changed, 88 insertions, 182 deletions
@@ -6,7 +6,7 @@ install: local-install websync local-install: bugzilla-triage.xpi - rsync -av bugzilla-triage.xpi $(WEBDIR)/fedorapeople/scripts/ + rsync -av bugzilla-triage.xpi $(WEBDIR)/fedorahosted/ bugzilla-triage.xpi: package.json lib/*.js docs/* cfx xpi diff --git a/lib/main.js b/lib/main.js index 3d59d6e..71e4dee 100644 --- a/lib/main.js +++ b/lib/main.js @@ -17,6 +17,7 @@ var myStorage = require("simple-storage").storage; var browser = require("tab-browser"); var urlMod = require("url"); var selfMod = require("self"); +var Request = require("request").Request; var preferences = require("preferences-service"); var BSTPrefNS = require("bzpage").BSTPrefNS; // Use my JSON for now before it is fixed for general public @@ -32,7 +33,6 @@ var config = {}; config.matches = matchesAll.matches; config.skipMatches = matchesAll.skipMatches; })(); -console.log("config.matches = " + config.matches.toSource()); // ============================================================== // https://wiki.mozilla.org/Labs/Jetpack/JEP/24 var WillBemanifest = { @@ -76,7 +76,6 @@ function skipThisPage(doc) { var hostname = urlMod.URL(doc.location.href).host; if (REArr) { var bugNo = REArr[1]; - console.log("bugNo = " + bugNo + ", hostname = " + hostname); var emailsSent = doc. querySelector("#bugzilla-body > dl:nth-of-type(1)").textContent; emailsSent = emailsSent.replace(/^(\s*)$/mg,""); @@ -87,48 +86,54 @@ function skipThisPage(doc) { function initialize(callback) { var prefName = BSTPrefNS+"JSONURL"; - var url = ""; + var urlStr = ""; if (preferences.isSet(prefName)) { - url = preferences.get(prefName); + urlStr = preferences.get(prefName); } else { - url = JSONURLDefault; + urlStr = JSONURLDefault; preferences.set(prefName, JSONURLDefault); } - util.loadJSON(url, function(parsedData) { - config.gJSONData = parsedData; + Request({ + url: urlStr, + onComplete: function () { + config.gJSONData = this.response.json; - var keys = "", key = ""; - for (key in config.gJSONData) { - keys += key + " "; - } - console.log("loaded JSON object keys: " + keys); - - // Get card translation table - if ("downloadJSON" in config.gJSONData.configData) { - var URLsList = config.gJSONData.configData.downloadJSON; - for (var dwnldObj in URLsList) { - console.log("Downloading " + - dwnldObj + " from URL " + - URLsList[dwnldObj] + "."); - util.loadJSON(URLsList[dwnldObj],function(response){ - config[dwnldObj] = response; - }); + var keys = "", key = ""; + for (key in config.gJSONData) { + keys += key + " "; } - }; + console.log("loaded JSON object keys: " + keys); - if (!myStorage.logs) { - console.log("myStorage.logs empty!"); - myStorage.logs = {}; - } + // Get additional tables + if ("downloadJSON" in config.gJSONData.configData) { + var URLsList = config.gJSONData.configData.downloadJSON; + for (var dwnldObj in URLsList) { + console.log("Downloading " + + dwnldObj + " from URL " + + URLsList[dwnldObj] + "."); + Request({ + url: URLsList[dwnldObj], + onComplete: function() { + config[dwnldObj] = this.response.json; + } + }).get(); + } + }; - var logConstructor = logger.Logger; - config.logger = new logConstructor(myStorage.logs, - JSON.parse(selfMod.data.load("bugzillalabelAbbreviations.json"))); + if (!myStorage.logs) { + console.log("myStorage.logs empty!"); + myStorage.logs = {}; + } + + var logConstructor = logger.Logger; + config.logger = new logConstructor(myStorage.logs, + JSON.parse(selfMod.data.load("bugzillalabelAbbreviations.json"))); - callback(config); - }, this); + callback(config); + } + }).get(); } exports.main = function main(options, callbacks) { diff --git a/lib/rhbzpage.js b/lib/rhbzpage.js index f61a88b..17b852e 100644 --- a/lib/rhbzpage.js +++ b/lib/rhbzpage.js @@ -5,11 +5,11 @@ var util = require("util"); var xrpc = require("xmlrpc"); var apiUtils = require("api-utils"); -var xhr = require("xhr"); var self = require("self"); var clip = require("clipboard"); var Color = require("color").Color; var BZPage = require("bzpage").BZPage; +var Request = require("request").Request; var url = require("url"); var timer = require("timer"); var selection = require("selection"); @@ -263,14 +263,18 @@ RHBugzillaPage.prototype.pasteBacktraceInComments = function() { attURL = "https://bugzilla.redhat.com/attachment.cgi?id=" + x[1]; if (!this.btSnippet) { - var btRaw = util.loadText(attURL, function(ret) { - this.btSnippet = this.parseBacktrace(ret); - if (this.btSnippet) { - this.addStuffToTextBox("comment", this.btSnippet); - this.addStuffToTextBox("status_whiteboard", - "btparsed"); + var that = this; + Request({ + url: attURL, + onComplete: function() { + that.btSnippet = that.parseBacktrace(this.response.text); + if (that.btSnippet) { + that.addStuffToTextBox("comment", that.btSnippet); + that.addStuffToTextBox("status_whiteboard", + "btparsed"); + } } - }, this); + }).get(); } }, this); } @@ -506,27 +510,30 @@ RHBugzillaPage.prototype.fillInChipMagic = function () { XorgLogAttID = this.XorgLogAttList[this.XorgLogAttListIndex][1]; attURL = "https://bugzilla.redhat.com/attachment.cgi?id="+XorgLogAttID; - that = this; + var that = this; // parse Xorg.0.log - util.loadText(attURL, function(ret){ - var interestingLineArr = ret.split("\n"). - filter(function (v,i,a) { - return that.RE.Chipset.test(v); - }); - if (interestingLineArr.length >0) { - // TODO we are parsing only the first found line; is it alright? - interestingArray = that.RE.Chipset.exec(interestingLineArr[0]); - interestingLine = interestingArray[2]. - replace(/[\s"]+/g," ").trim(); - // Persuade createNewButton to have mercy and to actually add - // non-default button - that.constantData.chipMagicTrigger = true; - that.chipMagicInterestingLine = interestingLine+"\t"+interestingArray[1] - .toUpperCase(); - that.createNewButton("status_whiteboard", true, "rh-xorg", "chipMagic"); + Request({ + url: attURL, + onComplete: function () { + var interestingLineArr = this.response.text.split("\n"). + filter(function (v,i,a) { + return that.RE.Chipset.test(v); + }); + if (interestingLineArr.length >0) { + // TODO we are parsing only the first found line; is it alright? + interestingArray = that.RE.Chipset.exec(interestingLineArr[0]); + interestingLine = interestingArray[2]. + replace(/[\s"]+/g," ").trim(); + // Persuade createNewButton to have mercy and to actually add + // non-default button + that.constantData.chipMagicTrigger = true; + that.chipMagicInterestingLine = interestingLine+"\t"+interestingArray[1] + .toUpperCase(); + that.createNewButton("status_whiteboard", true, "rh-xorg", "chipMagic"); + } } - }); + }).get(); this.XorgLogAttListIndex++; }; @@ -693,7 +700,7 @@ RHBugzillaPage.prototype.fixElement = function(elem, beforeText, accKey, afterTe */ RHBugzillaPage.prototype.getBugzillaName = function(URLhostname) { var bugzillaID = ""; - var bzLabelNames = JSON.parse(self.data.load("bugzillalabelNames.json")); + var bzLabelNames = JSON.parse(self.data.load("bugzillalabelNames.json")); if (bzLabelNames[URLhostname]) { bugzillaID = bzLabelNames[URLhostname]; } else { @@ -752,6 +759,7 @@ RHBugzillaPage.prototype.fixAttachById = function(id, type, email) { email = false; } + var that = this; var msg = new xrpc.XMLRPCMessage("bugzilla.updateAttachMimeType"); msg.addParameter( { 'attach_id' : id, @@ -764,8 +772,16 @@ RHBugzillaPage.prototype.fixAttachById = function(id, type, email) { // https://bugzilla.redhat.com/\ // docs/en/html/api/extensions/compat_xmlrpc/code/webservice.html // test on https://bugzilla.redhat.com/show_bug.cgi?id=485145 - util.httpPOST(this.XMLRPCurl, msg.xml(), this.fixingMIMECallBack, - this, "text/xml", "text/xml"); + Require({ + url: this.XMLRPCurl, + onComplete: function() { + that.fixingMIMECallBack.call(that); + }, + data: msg.xml(), + contentType: "text/xml", + }); +// util.httpPOST(this.XMLRPCurl, msg.xml(), this.fixingMIMECallBack, +// this, "text/xml", "text/xml"); this.reqCounter++; }; diff --git a/lib/util.js b/lib/util.js index b2a093c..6348598 100644 --- a/lib/util.js +++ b/lib/util.js @@ -215,87 +215,4 @@ var getPassword = exports.getPassword = function getPassword() { } else { return undefined; } -}; - -/** - * Load text from URL - * - * @param URL String - * @param cb_function Function to be called when the download happens with - * the downloaded body of the HTTP message as the only parameter - * @param what optional Object argument representing this for this call - * @return none - */ -var loadText = exports.loadText = function loadText(URL, cb_function, what) { - if (what === undefined) { // missing optional argument - what = this; - } - - var req = new xhrMod.XMLHttpRequest(); - req.open("GET", URL, true); - req.onreadystatechange = function (aEvt) { - if (req.readyState === 4) { - if (req.status === 200) { - cb_function.call(what, req.responseText); - } else { - throw "Getting " + URL + "failed!"; - } - } - }; - req.send(""); -}; - -/** - * Load JSON from URL - * - * @param URL String - * @param cb_function Function to be called when the download happens with - * the downloaded JSON as the only parameter - * @param what optional Object argument representing this for this call - * @return none - */ -exports.loadJSON = function loadJSON(URL, cb_function, what) { - if (what === undefined) { // missing optional argument - what = this; - } - - loadText(URL, function (text) { - var data = JSON.parse(text); - cb_function.call(what, data); - }, what); -}; - -/** - * run HTTP POST request - * - * @param URL String with URL; required - * @param data Object/String with data ; required - * @param cb_function Function called when the request succeeds, with - * the only parameter being request object ; required - * @param what Object which will represent this for the cb_function ; optional - * @param mimeData String with MIME type of data - * @param mimeGet String with MIME type expected on return - */ -exports.httpPOST = function httpPOST(URL, data, cb_function, what, mimeData, mimeGet) { - what = what === undefined ? this : what; - mimeData = mimeData === undefined ? "application/x-www-form-urlencoded" : mimeData; - mimeGet = mimeGet === undefined ? "text/plain" : mimeGet; - - var req = new xhrMod.XMLHttpRequest(); - console.log("req = " + req.toSource()); - req.open("POST", URL, true); - - req.overrideMimeType(mimeGet); - req.setRequestHeader("Content-type", mimeData); - req.onreadystatechange = function(aEvt) { - if (req.readyState === 4) { - if (req.status === 200) { - console.log("POST success!"); - cb_function.call(what, req); - } else { - console.error("POST failed!"); - } - } - }; - req.send(data); -}; +};
\ No newline at end of file diff --git a/package.json b/package.json index 2dc8d61..c304916 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "id": "jid0-uXmbeWgOltUUuqrHKhrR7hW3IQY", "dependencies": [ - "jetpack-core" + "jetpack-core" ], "fullName": "Help for triage on bugzilla", "description": "Additional buttons and other function helping in the triage on bugzilla", "author": "Matej Cepl (http://matej.ceplovi.cz)", "license": "MIT/X11 (http://opensource.org/licenses/mit-license.php)", - "version": "0.6" + "version": "0.7" } diff --git a/tests/test-util.js b/tests/test-util.js index 6292e84..c2214d6 100644 --- a/tests/test-util.js +++ b/tests/test-util.js @@ -169,36 +169,4 @@ exports.ensureCSVRemoveEmpty = function (test) { exports.ensureGetBugNo = function (test) { var bugNo = util.getBugNo("https://bugzilla.redhat.com/show_bug.cgi?id=597141"); test.assertEqual(bugNo, 597141, "getting bug number"); -}; - -//// testing util.loadText -exports.ensureLoadText = function (test) { - var url = "http://www.ceplovi.cz/matej/progs/data/doi.txt", text = ""; - test.waitUntilDone(); - util.loadText(url, function (txt) { - test.assertEqual(txt, testString); - test.done(); - }); -}; - -// exports.ensureLoadTextUnicode = function (test) { -// var url = "http://matej.ceplovi.cz/progs/data/pushkin.txt", text = ""; -// test.waitUntilDone(); -// util.loadText(url, function (txt) { -// console.log(txt); -// test.assertEqual(txt, pushkinTestString); -// test.done(); -// }); -// }; - -//// testing util.loadJSON -exports.ensureLoadJSON = function (test) { - var url = "http://www.ceplovi.cz/matej/progs/data/test.json", - date = {}; - test.waitUntilDone(); - util.loadJSON(url, function (data) { - test.assertEqual(JSON.stringify(data), - JSON.stringify([1, 2, 3])); - test.done(); - }); -}; +};
\ No newline at end of file |