diff options
Diffstat (limited to 'data/lib/rpcutils.js')
-rw-r--r-- | data/lib/rpcutils.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/data/lib/rpcutils.js b/data/lib/rpcutils.js new file mode 100644 index 0000000..d29fd68 --- /dev/null +++ b/data/lib/rpcutils.js @@ -0,0 +1,63 @@ +//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)); +}; + |