xmpp4r и Iq.new_register для внутриполосной регистрации - PullRequest
1 голос
/ 01 февраля 2011

У меня были проблемы с использованием xmpp4r для внутриполосной регистрации в соответствии с потоком SO здесь:

Транспорт XMPP по другому протоколу

Проблема сводится кк этому я получаю ошибку исключения NoMethodError для new_register, когда запускаю следующий код:

require "xmpp4r"
require "xmpp4r/client" 
require "xmpp4r/iq"

def in_band_reg

     chat_name = 'testChatName'
     password  = 'pword'

     reg    = Jabber::Iq.new_register(chat_name, password)

end

NoMethodError Exception: undefined method `new_register' for Jabber::Iq:Class

В геме xmpp4r в файле iq.rb я вижу метод new_register, определенный как:

 def Iq.new_register(username=nil, password=nil)
        ...
 end

но когда я изучаю методы класса, я не могу увидеть метод new_register.IE

Jabber::Iq.singleton_methods(false)
["new_authset", "new_rosterget", "new_vcard", "new_rosterset", "import",    "new_authset_digest", "new_query", "add_elementclass", "new_browseget"]

Jabber::Iq.public_instance_methods(false)
 ["query=", "queryns", "set_type", "type", "typed_add", "type=", "query", "vcard"]

Jabber::Iq.respond_to?("new_register")
false

Есть идеи, почему я не могу получить доступ к методу new_register в 'xmpp4r / iq'?

Ответы [ 2 ]

2 голосов
/ 07 мая 2011

Я получил это, просто кодируя его сам.Сначала подключите клиент, который может внутриполосно регистрировать новых пользователей:

jid = JID::new('admin@ejabberd.server.com/res')
client = Client::new(jid, false)
client.connect
client.auth("admin_password")

, затем этот клиент зарегистрирует нового пользователя, отправив внутриполосное сообщение

iqr = Iq.new(:set)
qr = IqQuery.new
qr.add_namespace('jabber:iq:register')
username = 'new_user'
password = 'new_user_password'
qr.add(REXML::Element.new('username').add_text(username))
qr.add(REXML::Element.new('password').add_text(password))
iqr.add(qr)
client.send iqr
0 голосов
/ 02 февраля 2011

Какую версию xmpp4r вы используете?Вы пробовали версию GitHub?

gem sources -a http://gems.github.com (you only need to do this once!)
gem install ln-xmpp4r
...