41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
from sleekxmpp import ET
|
|
"""
|
|
Module used to provide fixes for sleekxmpp functions not yet fixed
|
|
upstream.
|
|
|
|
TODO: Check that they are fixed and remove those hacks
|
|
"""
|
|
|
|
|
|
def get_version(xmpp, jid, callback=None, **kwargs):
|
|
def handle_result(res):
|
|
if res and res['type'] != 'error':
|
|
ret = res['software_version'].values
|
|
else:
|
|
ret = False
|
|
if callback:
|
|
callback(ret)
|
|
return ret
|
|
iq = xmpp.make_iq_get(ito=jid)
|
|
iq['query'] = 'jabber:iq:version'
|
|
result = iq.send(callback=handle_result if callback else None)
|
|
if not callback:
|
|
return handle_result(result)
|
|
|
|
|
|
def get_room_form(xmpp, room):
|
|
iq = xmpp.make_iq_get(ito=room)
|
|
query = ET.Element('{http://jabber.org/protocol/muc#owner}query')
|
|
iq.append(query)
|
|
try:
|
|
result = iq.send()
|
|
except:
|
|
return False
|
|
xform = result.xml.find('{http://jabber.org/protocol/muc#owner}query/{jabber:x:data}x')
|
|
if xform is None:
|
|
return False
|
|
form = xmpp.plugin['xep_0004'].buildForm(xform)
|
|
return form
|
|
|
|
|
|
|