@@ -47,22 +47,48 @@ module SGXcatapult
end
end
- iq do |i|
+ iq '/iq/ns:query', :ns =>
+ 'http://jabber.org/protocol/disco#items' do |i, xpath_result|
+
puts "IQ: #{i.inspect}"
- if i.type == :set
- puts "received set, likely for jabber:iq:register"
+ msg = Blather::Stanza::Iq::DiscoItems.new
+ msg.id = i.id
+ msg.to = i.from
+ msg.type = 'result'
+
+ puts "RESPONSE0: #{msg.inspect}"
+ write_to_stream msg
+ puts "SENT"
+ end
- # TODO: resilient error handling; what if no query node?
+ iq '/iq/ns:query', :ns =>
+ 'http://jabber.org/protocol/disco#info' do |i, xpath_result|
- qn = i.children.find { |v| v.element_name == "query" }
- # TODO: add below check - as-written has unmatched end
- i #if qn.namespace.href != 'jabber:iq:register'
- # # TODO: error
- # puts "weird xmlns: " + qn.namespace.href
- # next
- #end
+ puts "IQ: #{i.inspect}"
+
+ msg = Blather::Stanza::Iq::DiscoInfo.new
+ msg.id = i.id
+ msg.to = i.from
+ msg.type = 'result'
+
+ msg.identities = [{:name =>
+ 'Soprani.ca Gateway to XMPP - Catapult',
+ :type => 'sms-ctplt', :category => 'gateway'}]
+ msg.features = ["jabber:iq:register",
+ "jabber:iq:gateway", "jabber:iq:private",
+ "http://jabber.org/protocol/disco#info",
+ "http://jabber.org/protocol/commands",
+ "http://jabber.org/protocol/muc"]
+ puts "RESPONSE1: #{msg.inspect}"
+ write_to_stream msg
+ puts "SENT"
+ end
+ iq '/iq/ns:query', :ns => 'jabber:iq:register' do |i, qn|
+ puts "IQ: #{i.inspect}"
+
+ if i.type == :set
xn = qn.children.find { |v| v.element_name == "x" }
if xn.nil?
@@ -110,42 +136,7 @@ module SGXcatapult
write_to_stream msg
puts "SENT"
- # TODO: implement this (verify/save data, return result)
- next
- end
-
- query_node = i.children.find { |v| v.element_name == "query" }
- if query_node.namespace.href ==
- 'http://jabber.org/protocol/disco#items'
-
- msg = Blather::Stanza::Iq::DiscoItems.new
- msg.id = i.id
- msg.to = i.from
- msg.type = 'result'
-
- puts "RESPONSE0: #{msg.inspect}"
- write_to_stream msg
- puts "SENT"
- elsif query_node.namespace.href ==
- 'http://jabber.org/protocol/disco#info'
-
- msg = Blather::Stanza::Iq::DiscoInfo.new
- msg.id = i.id
- msg.to = i.from
- msg.type = 'result'
-
- msg.identities = [{:name =>
- 'Soprani.ca Gateway to XMPP - Catapult',
- :type => 'sms-ctplt', :category => 'gateway'}]
- msg.features = ["jabber:iq:register",
- "jabber:iq:gateway", "jabber:iq:private",
- "http://jabber.org/protocol/disco#info",
- "http://jabber.org/protocol/commands",
- "http://jabber.org/protocol/muc"]
- puts "RESPONSE1: #{msg.inspect}"
- write_to_stream msg
- puts "SENT"
- elsif query_node.namespace.href == 'jabber:iq:register'
+ elsif i.type == :get
orig = Blather::Stanza::Iq.new
orig.id = i.id
orig.to = i.from