blob: 70943114970f4af889c8492dafaea17a8c98df9c (
plain) (
tree)
|
|
//Released under the MIT/X11 license
//http://www.opensource.org/licenses/mit-license.php
"use strict";
// Make a JSONL-RPC call ... most of the business logic should stay in the
// content script
// http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html
function makeJSONRPCCall(method, params, callback) {
var msg = {
"version": "1.1",
"method": method,
"params": params
};
console.myDebug("makeJSONRPCCall(" + method +
"): out = " + JSON.stringify(msg));
var req = new XMLHttpRequest();
req.open('POST', "/jsonrpc.cgi", true);
req.onreadystatechange = function (aEvt) {
if (req.readyState == 4) {
if(req.status == 200) {
console.myDebug("makeJSONRPCCall (" + method +
"): in = " + req.responseText);
var JSONresponse = JSON.parse(req.responseText);
if ("error" in JSONresponse) {
throw new Error("Error in JSON-RPC call:\n" +
JSONresponse.error);
}
callback(JSONresponse);
}
else {
console.error('Error', req.statusText);
}
}
};
req.setRequestHeader('Content-Type', "application/json");
req.send(JSON.stringify(msg));
};
//vim: set ts=2 et sw=2 textwidth=80:
|