added some events to the API, like failure.
[apps/agl-service-data-persistence.git] / ll-auth-binding / htdocs / IdentityBinding.js
1     var afb = new AFB("api", "mysecret");
2     var ws;
3     var evtidx=0;
4
5     function getParameterByName(name, url) {
6         if (!url) {
7           url = window.location.href;
8         }
9         name = name.replace(/[\[\]]/g, "\\$&");
10         var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
11             results = regex.exec(url);
12         if (!results) return null;
13         if (!results[2]) return '';
14         return decodeURIComponent(results[2].replace(/\+/g, " "));
15     }
16
17     // default soundcard is "PCH"
18     var devid=getParameterByName("devid");
19     if (!devid) devid="hw:0";
20
21     var sndname=getParameterByName("sndname");
22     if (!sndname) sndname="PCH";
23
24     var quiet=getParameterByName("quiet");
25     if (!quiet) quiet="99";
26
27     function init() {
28             ws = new afb.ws(onopen, onabort);
29     }
30
31     function onopen() {
32             document.getElementById("main").style.visibility = "visible";
33             document.getElementById("connected").innerHTML = "Binder WS Active";
34             document.getElementById("connected").style.background  = "lightgreen";
35             ws.onevent("*", gotevent);
36     }
37
38     function onabort() {
39             document.getElementById("main").style.visibility = "hidden";
40             document.getElementById("connected").innerHTML = "Connected Closed";
41             document.getElementById("connected").style.background  = "red";
42
43     }
44
45     function replyok(obj) {
46             console.log("replyok:" + JSON.stringify(obj));
47             document.getElementById("output").innerHTML = "OK: "+JSON.stringify(obj);
48     }
49
50     function replyerr(obj) {
51             console.log("replyerr:" + JSON.stringify(obj));
52             document.getElementById("output").innerHTML = "ERROR: "+JSON.stringify(obj);
53     }
54
55     function gotevent(obj) {
56         console.log("gotevent:" + JSON.stringify(obj));
57         document.getElementById("outevt").innerHTML = (evtidx++) +": "+JSON.stringify(obj);
58
59         document.getElementById("message").innerHTML = "";
60
61         if (obj.event == "ll-auth/login") {
62            document.getElementById("userid").innerHTML = obj.data.user;
63            document.getElementById("device").innerHTML = obj.data.device;
64         }
65
66         if (obj.event == "ll-auth/logout") {
67                 document.getElementById("userid").innerHTML = "";
68                 document.getElementById("device").innerHTML = "";
69         }
70
71         if (obj.event == "ll-auth/failed") {
72                 document.getElementById("message").innerHTML = obj.data.message;
73         }
74     }
75
76     function send(message) {
77             var api = document.getElementById("api").value;
78             var verb = document.getElementById("verb").value;
79             document.getElementById("question").innerHTML = "subscribe: "+api+"/"+verb + " (" + JSON.stringify(message) +")";
80             ws.call(api+"/"+verb, {data:message}).then(replyok, replyerr);
81     }
82
83
84     function callbinder(api, verb, query) {
85             console.log ("subscribe api="+api+" verb="+verb+" query=" +query);
86             document.getElementById("question").innerHTML = "apicall: " + api+"/"+verb +" ("+ JSON.stringify(query)+")";
87             ws.call(api+"/"+verb, query).then(replyok, replyerr);
88     }