class WsRosterController < WebsocketRails::BaseController require 'xmpp4r/roster' require 'xmpp4r/vcard' def initialize super @storages = [:contacts, :clients, :rosters] end def initialize_storage @storages.each do |storage| connection_store[storage] = {} if connection_store[storage].nil? connection_store[storage][client_id] = [] end end def connect initialize_storage() clients = Token.fing_user_accounts_having_to_token(session[:token]) clients.each do |credentials| begin client = Signin.try_login(credentials["jid"], credentials["pass"]) client.send(Jabber::Presence.new.set_type(:available)) connection_store[:clients][client_id] << client connection_store[:rosters][client_id] << Jabber::Roster::Helper.new(client) rescue Signin::LoginError trigger_failure msg: credentials["jid"] end end end ## # Vrat vsetkych priatelov v rosteri def get_contacts all_contacts = [] connection_store[:rosters][client_id].each do |roster| roster.wait_for_roster roster.get_roster() roster.items.each do |jid, contact| all_contacts << { jid: jid.to_s } end end trigger_success contacts: all_contacts end def disconnect if connection_store[:clients][client_id] connection_store[:clients][client_id].each do |client| client.send(Jabber::Presence.new.set_type(:unavailable)) end end @storages.each do |storage| connection_store.delete(storage) end end ## # Pridaj noveho priatela do zoznamu def add_friend(data) end end