//Released under the MIT/X11 license //http://www.opensource.org/licenses/mit-license.php "use strict"; /* We should first login and then we shouldn't bother with it. It could be interesting to know how many logins per second are bad. */ function JSONRPCLogin(callback) { if (!constantData.passwordState.password) { return; } console.myDebug("JSONRPCLogin: passObj = " + constantData.passwordState.toSource()); makeJSONRPCCall("User.login", { login: getLogin(), password: constantData.passwordState.password, remember: false }, function(logResult) { callback(); }); }; // 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)); };