1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-02-07 04:05:47 +01:00

Add params and data parameters to util.httpRequest params object. Add docs.

This commit is contained in:
Kris Maglione
2011-09-27 17:36:57 -04:00
parent 9c609f24f2
commit 43421e8631
2 changed files with 47 additions and 4 deletions

View File

@@ -85,6 +85,7 @@ var Services = Module("Services", {
this.addClass("FileInStream", "@mozilla.org/network/file-input-stream;1", "nsIFileInputStream", "init", false);
this.addClass("FileOutStream","@mozilla.org/network/file-output-stream;1", "nsIFileOutputStream", "init", false);
this.addClass("Find", "@mozilla.org/embedcomp/rangefind;1", "nsIFind");
this.addClass("FormData", "@mozilla.org/files/formdata;1", "nsIDOMFormData");
this.addClass("HtmlConverter","@mozilla.org/widget/htmlformatconverter;1", "nsIFormatConverter");
this.addClass("HtmlEncoder", "@mozilla.org/layout/htmlCopyEncoder;1", "nsIDocumentEncoder");
this.addClass("InterfacePointer", "@mozilla.org/supports-interface-pointer;1", "nsISupportsInterfacePointer", "data");
@@ -116,7 +117,7 @@ var Services = Module("Services", {
let res = Cc[service.class][service.method || "getService"]();
if (!service.interfaces.length)
return res.wrappedJSObject;
return res.wrappedJSObject || res;
service.interfaces.forEach(function (iface) res.QueryInterface(Ci[iface]));
if (service.init && args.length) {

View File

@@ -665,7 +665,30 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
* argument.
*
* @param {string} url
* @param {function(XMLHttpRequest)} callback
* @param {object} params Optional parameters for this request:
* method: {string} The request method. @default "GET"
*
* params: {object} Parameters to append to *url*'s query string.
* data: {*} POST data to send to the server. Ordinary objects
* are converted to FormData objects, with one datum
* for each property/value pair.
*
* onload: {function(XMLHttpRequest, Event)} The request's load event handler.
* onerror: {function(XMLHttpRequest, Event)} The request's error event handler.
* callback: {function(XMLHttpRequest, Event)} An event handler
* called for either error or load events.
*
* background: {boolean} Whether to perform the request in the
* background. @default true
*
* mimeType: {string} Override the response mime type with the
* given value.
* responseType: {string} Override the type of the "response"
* property.
*
* user: {string} The user name to send via HTTP Authentication.
* pass: {string} The password to send via HTTP Authentication.
*
* @returns {XMLHttpRequest}
*/
httpGet: function httpGet(url, callback, self) {
@@ -675,13 +698,32 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
try {
let xmlhttp = services.Xmlhttp();
xmlhttp.mozBackgroundRequest = true;
xmlhttp.mozBackgroundRequest = Set.has(params, "background") ? params.background : true;
let async = params.callback || params.onload || params.onerror;
if (async) {
xmlhttp.onload = function handler(event) { util.trapErrors(params.onload || params.callback, params, xmlhttp, event) };
xmlhttp.onerror = function handler(event) { util.trapErrors(params.onerror || params.callback, params, xmlhttp, event) };
}
if (isObject(params.params)) {
let data = [encodeURIComponent(k) + "=" + encodeURIComponent(v)
for ([k, v] in iter(params.params))];
let uri = util.newURI(url);
uri.query += (uri.query ? "&" : "") + data.join("&");
url = uri.spec;
}
if (isObject(params.data) && !(params.data instanceof Ci.nsISupports)) {
let data = services.FormData();
for (let [k, v] in iter(params.data))
data.append(k, v);
params.data = data;
}
if (params.mimeType)
xmlhttp.overrideMimeType(params.mimeType);
@@ -691,7 +733,7 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
xmlhttp.open(params.method || "GET", url, async,
params.user, params.pass);
xmlhttp.send(null);
xmlhttp.send(params.data);
return xmlhttp;
}
catch (e) {