diff options
-rw-r--r-- | test/AfbAngular.js | 204 | ||||
-rw-r--r-- | test/angular.html | 21 | ||||
-rw-r--r-- | test/index.html | 4 | ||||
-rw-r--r-- | test/websock.html | 41 | ||||
-rw-r--r-- | test/websock.js | 117 |
5 files changed, 0 insertions, 387 deletions
diff --git a/test/AfbAngular.js b/test/AfbAngular.js deleted file mode 100644 index 71338cf9..00000000 --- a/test/AfbAngular.js +++ /dev/null @@ -1,204 +0,0 @@ -(function (){'use strict'; - - // some default values - // note that how default values are defined/used may change - var defaults = { - token: '123456789', - api: '/api' - }; - - var CALL = 2; - var RETOK = 3; - var RETERR = 4; - var EVENT = 5; - - var PROTO1 = "x-afb-ws-json1"; - - // Definition of the Angular module - var AfbClientModule = angular.module('AfbClient', []); - - // The instanciation of the module - AfbClientModule.factory('AfbClient', [ '$location', function ($location) { - var refid = $location.host(); - var params = $location.search(); - return clients[refid] || (client[refid] = new AfbContext(refid, params)); - }]); - - // prototype for handling context by uuid and token - function AfbContext(refid, params) { - this.refid = refid; - this.api = params.api || defaults.api; - this.uhttp = params.uhttp || this.api+'/'; - this.uws = params.uws || this.api; - this.token = params.token || defaults.token; - this.uuid = params.uuid; - this.ws = null; - } - - // prototype of functions linked to AfbContext object - AfbContext.prototype = { - // call using websockets - call: function(method, query) { return getws(this).call(method, query); }, - - // call using get - get: function(method, query) { return $http.get(this.uhttp+method, mixtu(this, query)); }, - - // call using post - post: function(method, query) { return $http.post(this.uhttp+method, mixtu(this, query)); } - }; - - // get the current websocket - function getws(ctxt) { - return ctxt.ws || (ctxt.ws = new AfbWebSocket(ctxt)); - } - - // inserts the current token in the answer - function mixtu(ctxt, query) { - return ("token" in query) ? query : angular.extend({token:ctxt.token},query); - } - - // prototype for websocket - function AfbWebSocket(ctxt) { - var protos = [ PROTO1 ]; - this.context = ctxt; - var url = "ws:" + ctxt.refid + ctxt.uws; - var q = ctxt.uuid ? ("?x-afb-uuid=" + ctxt.uuid) : ""; - if (ctxt.token) - q = (q ? (q + "&") : "?") + ("x-afb-token=" + ctxt.token); - this.pendings = {}; - this.awaitens = {}; - this.counter = 0; - this.ws = new WebSocket(url + q, protos); - this.ws.onopen = onopen.bind(this); - this.ws.onerror = onerror.bind(this); - this.ws.onclose = onclose.bind(this); - this.ws.onmessage = onmessage.bind(this); - this.onopen = onopen; - this.onabort = onabort; - } - - AfbWebSocket.prototype = { - call: function(method, query) { - return new Promise((function(resolve, reject){ - var id = String(this.counter = 4095 & (this.counter + 1)); - while (id in this.pendings) id = String(this.counter = 4095 & (this.counter + 1)); - this.pendings[id] = [ resolve, reject ]; - var arr = [CALL, id, method, request ]; - var tok = this.context.token; if (tok) arr.push(tok); - this.ws.send(angular.toJson(arr, 0)); - }).bind(this)); - }, - addEvent: function (name, handler) { - (this.awaitens[name] || (this.awaitens[name] = [])).push(handler); - }, - removeEvent: function (name, handler) { - var a = this.awaitens[name]; - if (a) { - var i = a.indexOf(handler); - if (i >= 0) a.splice(i, 1); - } - } - - }; - - function onmessage(ev) { - var obj = angular.fromJson(ev.data); - var id = obj[1]; - var ans = obj[2]; - if (obj[3]) - this.context.token = obj[3]; - switch (obj[0]) { - case RETOK: reply(this.pendings, id, ans, 0); break; - case RETERR: reply(this.pendings, id, ans, 1); break; - case EVENT: fire(this.awaitens, id, ans); break; - - } - } - - function fire(awaitens, name, data) { - var a = awaitens[name]; - if (a) a.forEach(function(handler){handler(data);}); - var i = name.indexOf("/"); - if (i >= 0) { - a = awaitens[name.substring(0,i)]; - if (a) a.forEach(function(handler){handler(data);}); - } - a = awaitens["*"]; - if (a) a.forEach(function(handler){handler(data);}); - } - - function reply(pendings, id, ans, offset) { - if (id in pendings) { - var p = pendings[id]; - delete pendings[id]; - var f = p[offset]; - if (f) f(ans); - } - } - - - - -/* - - - - - - - AFB_websocket = function(onopen, onabort) { - } - - function onerror(event) { - var f = this.onabort; - if (f) { - delete this.onopen; - delete this.onabort; - f && f(this); - } - this.onerror && this.onerror(this); - } - - function onopen(event) { - var f = this.onopen; - delete this.onopen; - delete this.onabort; - f && f(this); - } - - function onclose(event) { - for (var id in this.pendings) { - var ferr = this.pendings[id].onerror; - ferr && ferr(null, this); - } - this.pendings = {}; - this.onclose && this.onclose(); - } - - function close() { - this.ws.close(); - } - - function call(method, request) { - } - -*/ - -/* - // Factory is a singleton and share its context within all instances. - AfbClientModule.factory('AppCall', function ($http, AppConfig, $log) { - var myCalls = { - get : function(plugin, action, query, callback) { - if (!query.token) query.token = AppConfig.session.token; // add token to provided query - $http.get('/api/' + plugin + '/' + action , {params: query}).then (callback, callback); - } - }; - return myCalls; - }); -*/ - - - - - -})(); diff --git a/test/angular.html b/test/angular.html deleted file mode 100644 index f7e25756..00000000 --- a/test/angular.html +++ /dev/null @@ -1,21 +0,0 @@ -<!doctype html> -<html> -<body> - <div ng-controller="MyController"> - Hello {{greetMe}}! - </div> - <script src="http://code.angularjs.org/1.5.5/angular.js"></script> - <script src="AfbAngular.js"></script> - - <script> - angular.module('myApp', []) - .controller('MyController', ['$scope', function ($scope) { - $scope.greetMe = 'World'; - }]); - - angular.element(document).ready(function() { - angular.bootstrap(document, ['myApp']); - }); - </script> -</body> -</html> diff --git a/test/index.html b/test/index.html index 6a8e220e..869ae8fc 100644 --- a/test/index.html +++ b/test/index.html @@ -9,7 +9,3 @@ <li><a href="sample-post.html">Sample post</a> <li><a href="AFB.html">AFB.js</a> <li><a href="monitoring/monitor.html" target="_blank">Monitoring</a> -<!-- - <li><a href="websock.html">websockets</a> - <li><a href="angular.html">AfbAngular.js</a> ---> diff --git a/test/websock.html b/test/websock.html deleted file mode 100644 index 2ebb90bf..00000000 --- a/test/websock.html +++ /dev/null @@ -1,41 +0,0 @@ -<html> -<head> - <title>WebSocket Echo</title> - <script type="text/javascript" src="websock.js"></script> - <script type="text/javascript"> - var ws; - - function onopen() { - document.getElementById("main").style.visibility = "visible"; - document.getElementById("connected").innerHTML = "Connected to WebSocket server"; - } - function onabort() { - document.getElementById("main").style.visibility = "hidden"; - document.getElementById("connected").innerHTML = "Connected Closed"; - } - function init() { - ws = new AfbWsItf("api", onopen, onabort, new AfbCtxItf("hello")); - } - function replyok(obj) { - document.getElementById("output").innerHTML = "OK: "+JSON.stringify(obj); - } - function replyerr(obj) { - document.getElementById("output").innerHTML = "ERROR: "+JSON.stringify(obj); - } - function send(message) { - var api = document.getElementById("api").value; - var verb = document.getElementById("verb").value; - ws.call(api, verb, {data:message}, replyok, replyerr); - } - </script> - -<body onload="init();"> - <h1>WebSocket Echo</h1> - <div id="connected">Not Connected</div> - <div id="main" style="visibility:hidden"> - API: <input type="text" id="api" value="hello" size="80"/><br/> - VERB: <input type="text" id="verb" value="ping" size="80"/><br/> - Enter Message: <input type="text" name="message" value="" size="80" onchange="send(this.value)"/><br/> - Server says... <div id="output"></div> - </div> - diff --git a/test/websock.js b/test/websock.js deleted file mode 100644 index c4295536..00000000 --- a/test/websock.js +++ /dev/null @@ -1,117 +0,0 @@ - -AfbCtxItf = (function(){ - - var UUID = undefined; - var TOKEN = undefined; - - function AfbCtxItf(token, uuid) { - this.token = token; - this.uuid = uuid; - } - - AfbCtxItf.prototype = { - get token() {return TOKEN;}, - set token(tok) {if(tok) TOKEN=tok;}, - get uuid() {return UUID;}, - set uuid(id) {if(id) UUID=id;} - }; - - return AfbCtxItf; -})(); - - -AfbWsItf = (function(){ - - var CALL = 2; - var RETOK = 3; - var RETERR = 4; - - function AfbWsItf(base, onopen, onabort, ctx) { - ctx = ctx || new AfbCtxItf(); - var wl = window.location; - var u = "ws://"+wl.host+"/"+base; - if (ctx.token) { - u = u + '?x-afb-token=' + ctx.token; - if (ctx.uuid) - u = u + '&x-afb-uuid=' + ctx.uuid; - } - this.ws = new (WebSocket || MozWebSocket)(u, [ "x-afb-ws-json1" ]); - this.pendings = {}; - this.counter = 0; - this.ctx = ctx; - this.ws.onopen = onopen.bind(this); - this.ws.onerror = onerror.bind(this); - this.ws.onclose = onclose.bind(this); - this.ws.onmessage = onmessage.bind(this); - this.onopen = onopen; - this.onabort = onabort; - } - - function onerror(event) { - var f = this.onabort; - if (f) { - delete this.onopen; - delete this.onabort; - f && f(this); - } - this.onerror && this.onerror(this); - } - - function onopen(event) { - var f = this.onopen; - delete this.onopen; - delete this.onabort; - f && f(this); - } - - function onclose(event) { - for (var id in this.pendings) { - var ferr = this.pendings[id].onerror; - ferr && ferr(null, this); - } - this.pendings = {}; - this.onclose && this.onclose(); - } - - function onmessage(event) { - var obj = JSON.parse(event.data); - var code = obj[0]; - var id = obj[1]; - var ans = obj[2]; - this.ctx.token = obj[3]; - var pend; - if (id && id in this.pendings) { - pend = this.pendings[id]; - delete this.pendings[id]; - } - switch (code) { - case RETOK: - pend && pend.onsuccess && pend.onsuccess(ans, this); - break; - case RETERR: - default: - pend && pend.onerror && pend.onerror(ans, this); - break; - } - } - - function close() { - this.ws.close(); - } - - function call(api, verb, request, onsuccess, onerror) { - var id = String(++this.counter); - this.pendings[id] = { onsuccess: onsuccess, onerror: onerror }; - var arr = [CALL, id, api+"/"+verb, request ]; - if (this.ctx.token) arr.push(this.ctx.token); - this.ws.send(JSON.stringify(arr)); - } - - AfbWsItf.prototype = { - close: close, - call: call - }; - - return AfbWsItf; -})(); - |