aboutsummaryrefslogtreecommitdiffstats
path: root/bugzillaBugTriage.js
diff options
context:
space:
mode:
Diffstat (limited to 'bugzillaBugTriage.js')
-rw-r--r--bugzillaBugTriage.js195
1 files changed, 176 insertions, 19 deletions
diff --git a/bugzillaBugTriage.js b/bugzillaBugTriage.js
index 0eb2e63..594763e 100644
--- a/bugzillaBugTriage.js
+++ b/bugzillaBugTriage.js
@@ -156,25 +156,182 @@ loadJSON(PCIIDsURL,
//======== load external library ===============================
-var XMLRPCMessage = {};
-var req = new XMLHttpRequest();
-req.open("GET","http://mcepl.fedorapeople.org/scripts/xmlrpc.js",true);
-req.onreadystatechange = function (aEvt) {
- if (req.readyState == 4) {
- if (req.status == 200) {
- var thisDoc = jetpack.tabs.focused.contentDocument;
- var script = thisDoc.createElement("script");
- script.setAttribute("type","text/javascript");
- script.innerHTML = req.responseText;
- thisDoc.getElementsByTagName("head")[0].appendChild(script);
- XMLRPCMessage = jetpack.tabs.focused.contentWindow.wrappedJSObject.XMLRPCMessage;
- console.log("XMLHTTPRequest should be loaded.");
- console.log(XMLRPCMessage);
- }
- }
-};
-console.log("Now we are calling XMLHTTPRequest to load xmlrpc.js");
-req.send("");
+//var XMLRPCMessage = {};
+//var req = new XMLHttpRequest();
+//req.open("GET","http://mcepl.fedorapeople.org/scripts/xmlrpc.js",true);
+//req.onreadystatechange = function (aEvt) {
+// if (req.readyState == 4) {
+// if (req.status == 200) {
+// var thisDoc = jetpack.tabs.focused.contentDocument;
+// var script = thisDoc.createElement("script");
+// script.setAttribute("type","text/javascript");
+// script.innerHTML = req.responseText;
+// thisDoc.getElementsByTagName("head")[0].appendChild(script);
+// XMLRPCMessage = jetpack.tabs.focused.contentWindow.wrappedJSObject.XMLRPCMessage;
+// console.log("XMLHTTPRequest should be loaded.");
+// console.log(XMLRPCMessage);
+// }
+// }
+//};
+//console.log("Now we are calling XMLHTTPRequest to load xmlrpc.js");
+//req.send("");
+/*
+
+xmlrpc.js beta version 1
+Tool for creating XML-RPC formatted requests in JavaScript
+
+Copyright 2001 Scott Andrew LePera
+scott@scottandrew.com
+http://www.scottandrew.com/xml-rpc
+
+License:
+You are granted the right to use and/or redistribute this
+code only if this license and the copyright notice are included
+and you accept that no warranty of any kind is made or implied
+by the author.
+
+*/
+
+function XMLRPCMessage(methodname){
+ this.method = methodname||"system.listMethods";
+ this.params = [];
+ return this;
+}
+
+XMLRPCMessage.prototype.setMethod = function(methodName){
+ if (!methodName) return;
+ this.method = methodName;
+}
+
+XMLRPCMessage.prototype.addParameter = function(data){
+ if (arguments.length==0) return;
+ this.params[this.params.length] = data;
+}
+
+XMLRPCMessage.prototype.xml = function(){
+
+ var method = this.method;
+
+ // assemble the XML message header
+ var xml = "";
+
+ xml += "<?xml version=\"1.0\"?>\n";
+ xml += "<methodCall>\n";
+ xml += "<methodName>" + method+ "</methodName>\n";
+ xml += "<params>\n";
+
+ // do individual parameters
+ for (var i = 0; i < this.params.length; i++){
+ var data = this.params[i];
+ xml += "<param>\n";
+
+ xml += "<value>" + XMLRPCMessage.getParamXML(XMLRPCMessage.dataTypeOf(data),data) + "</value>\n";
+
+ xml += "</param>\n";
+ }
+
+ xml += "</params>\n";
+ xml += "</methodCall>";
+
+ return xml; // for now
+}
+
+XMLRPCMessage.dataTypeOf = function (o){
+ // identifies the data type
+ var type = typeof(o);
+ type = type.toLowerCase();
+ switch(type){
+ case "number":
+ if (Math.round(o) == o) type = "i4";
+ else type = "double";
+ break;
+ case "object":
+ var con = o.constructor;
+ if (con == Date) type = "date";
+ else if (con == Array) type = "array";
+ else type = "struct";
+ break;
+ }
+ return type;
+}
+
+XMLRPCMessage.doValueXML = function(type,data){
+ var xml = "<" + type + ">" + data + "</" + type + ">";
+ return xml;
+}
+
+XMLRPCMessage.doBooleanXML = function(data){
+ var value = (data==true)?1:0;
+ var xml = "<boolean>" + value + "</boolean>";
+ return xml;
+}
+
+XMLRPCMessage.doDateXML = function(data){
+ var xml = "<dateTime.iso8601>";
+ xml += dateToISO8601(data);
+ xml += "</dateTime.iso8601>";
+ return xml;
+}
+
+XMLRPCMessage.doArrayXML = function(data){
+ var xml = "<array><data>\n";
+ for (var i = 0; i < data.length; i++){
+ xml += "<value>" + XMLRPCMessage.getParamXML(XMLRPCMessage.dataTypeOf(data[i]),data[i]) + "</value>\n";
+ }
+ xml += "</data></array>\n";
+ return xml;
+}
+
+XMLRPCMessage.doStructXML = function(data){
+ var xml = "<struct>\n";
+ for (var i in data){
+ xml += "<member>\n";
+ xml += "<name>" + i + "</name>\n";
+ xml += "<value>" + XMLRPCMessage.getParamXML(XMLRPCMessage.dataTypeOf(data[i]),data[i]) + "</value>\n";
+ xml += "</member>\n";
+ }
+ xml += "</struct>\n";
+ return xml;
+}
+
+XMLRPCMessage.getParamXML = function(type,data){
+ var xml;
+ switch (type){
+ case "date":
+ xml = XMLRPCMessage.doDateXML(data);
+ break;
+ case "array":
+ xml = XMLRPCMessage.doArrayXML(data);
+ break;
+ case "struct":
+ xml = XMLRPCMessage.doStructXML(data);
+ break;
+ case "boolean":
+ xml = XMLRPCMessage.doBooleanXML(data);
+ break;
+ default:
+ xml = XMLRPCMessage.doValueXML(type,data);
+ break;
+ }
+ return xml;
+}
+
+function dateToISO8601(date){
+ // wow I hate working with the Date object
+ var year = new String(date.getYear());
+ var month = leadingZero(new String(date.getMonth()));
+ var day = leadingZero(new String(date.getDate()));
+ var time = leadingZero(new String(date.getHours())) + ":" + leadingZero(new String(date.getMinutes())) + ":" + leadingZero(new String(date.getSeconds()));
+
+ var converted = year+month+day+"T"+time;
+ return converted;
+}
+
+function leadingZero(n){
+ // pads a single number with a leading zero. Heh.
+ if (n.length==1) n = "0" + n;
+ return n;
+}
//==============================================================
/**