aboutsummaryrefslogtreecommitdiffstats
path: root/data/lib/rpcutils.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/lib/rpcutils.js')
-rw-r--r--data/lib/rpcutils.js63
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));
+};
+