Sha256: 223c5edd6e041bddf54a70ec0c1d18a6189f0b7fba03959c4cb9071010e69ee1

Contents?: true

Size: 1.95 KB

Versions: 1

Compression:

Stored size: 1.95 KB

Contents

require 'ruby_bosh'
require 'xmpp4r'
require 'xmpp4r/muc/helper/mucclient'
require 'xmpp4r/muc/helper/simplemucclient'

class JegolController < ApplicationController
  def new_boshsession
    username = session[:user_jid].nil? ? get_jid() : session[:user_jid]
    password = session[:user_password].nil? ? JEGOL_CONFIG['default_pwd'] : session[:user_password]
    
    xmpp_server = JEGOL_CONFIG['xmpp_server']
    xmpp_bosh_port = JEGOL_CONFIG['xmpp_bosh_port']
    jid = "#{username}@#{xmpp_server}"
    server_url = "http://#{xmpp_server}:#{xmpp_bosh_port}/http-bind/"
    room = "#{params[:room_jid]}@#{JEGOL_CONFIG['muc_namespace']}"
    nickname = "#{username}:~:#{Time.new.tv_sec}" #append timestamp to make sure nickname is unique
    
    @session_jid, @session_id, @session_random_id = RubyBOSH.initialize_session(jid,
                                                                                password,
                                                                                server_url,
                                                                                {:timeout => 20})
  
    render :json => {:jid=>@session_jid, :sid=>@session_id, :rid=>@session_random_id, :room => room, :nickname => nickname}
  end
  
  def get_jid
    if(session[:user_jid].nil?)
      session[:user_jid] = "#{JEGOL_CONFIG['guest_jid']}#{rand(9999)}"
      create_jid(session[:user_jid])
    end
    session[:user_jid]
  end

  def create_jid(username)
    jid = "#{username}@#{JEGOL_CONFIG['xmpp_server']}"
    client = Jabber::Client.new(jid)
    client.connect(nil, JEGOL_CONFIG['c2s_port'].to_i)
    client.register(JEGOL_CONFIG['default_pwd'])
    
    client.close
    return username
  end
  
  def demo
    @room = 'demo_room'
    @active = true
    @room = params[:room] if !params[:room].nil? && !params[:room].empty?
    @active = !params[:active].nil? && params[:active].downcase == 'true' 
    
    respond_to do |format|
      format.html #demo.html.erb
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jegolize-0.1.9 app/controllers/jegol_controller.rb