// Generated by LiveScript 1.6.0 (function(){ var bulma, h, AuthWS; bulma = require("maquette-bulma"); h = require('maquette').h; AuthWS = function(socketUrl){ var self, requestTypes, responseTypes, key, value; self = {}; requestTypes = { "get-token": 0, "add-user": 1, "get-user": 2, "get-user-by-credentials": 3, "mod-user": 4, "register": 5, "get-extra": 6, "set-extra": 7, "update-password": 8, "list-users": 9 }; responseTypes = { "error": 0, "token": 1, "user": 2, "user-added": 3, "user-edited": 4, "extra": 5, "extra-updated": 6, "users-list": 7 }; self.userOnSocketError = []; self.userOnSocketClose = []; self.callbacks = {}; for (key in responseTypes) { value = responseTypes[key]; self.callbacks[value] = []; } self.addEventListener = function(type, callback){ var ref$; type = responseTypes[type]; return (ref$ = self.callbacks)[type] = ref$[type].concat([callback]); }; self.openSocket = function(){ self.socket = new WebSocket(socketUrl); self.socket.onerror = function(event){ var i$, ref$, len$, f; for (i$ = 0, len$ = (ref$ = self.userOnSocketError).length; i$ < len$; ++i$) { f = ref$[i$]; f(event); } return self.socket.close(); }; self.socket.onclose = function(event){ var i$, ref$, len$, f, results$ = []; for (i$ = 0, len$ = (ref$ = self.userOnSocketClose).length; i$ < len$; ++i$) { f = ref$[i$]; results$.push(f(event)); } return results$; }; return self.socket.onmessage = function(event){ var message, i$, ref$, len$, f, results$ = []; message = JSON.parse(event.data); for (i$ = 0, len$ = (ref$ = self.callbacks[message.mtype]).length; i$ < len$; ++i$) { f = ref$[i$]; results$.push(f(JSON.parse(message.payload))); } return results$; }; }; self.reopen = function(){ self.socket.close(); return self.openSocket(); }; self.openSocket(); self.send = function(type, opts){ return self.socket.send(JSON.stringify({ mtype: type, payload: opts })); }; self.getToken = function(login, password){ return self.send(requestTypes['get-token'], JSON.stringify({ login: login, password: password })); }; self.getUserByCredentials = function(login, password){ return self.send(requestTypes['get-user-by-credentials'], JSON.stringify({ login: login, password: password })); }; self.login = function(login, password){ self.getToken(login, password); return self.getUserByCredentials(login, password); }; self.getUser = function(uid){ return self.send(requestTypes['get-user'], JSON.stringify({ uid: uid })); }; self.register = function(login, password){ return self.send(requestTypes['register'], JSON.stringify({ login: login, password: password })); }; self.getExtra = function(token, name){ return self.send(requestTypes['get-extra'], JSON.stringify({ token: token, name: name })); }; self.setExtra = function(token, name, extra){ return self.send(requestTypes['set-extra'], JSON.stringify({ token: token, name: name, extra: extra })); }; self.updatePassword = function(login, oldPassword, newPassword){ return self.send(requestTypes['update-password'], JSON.stringify({ login: login, old_password: oldPassword, new_password: newPassword })); }; self.listUsers = function(token){ return self.send(requestTypes['list-users'], JSON.stringify({ token: token })); }; return self; }; module.exports = AuthWS; }).call(this);