59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
|
#!/usr/bin/python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
from asyncio import TimeoutError
|
||
|
from datetime import datetime
|
||
|
from slixmpp.exceptions import IqError, IqTimeout, PresenceError
|
||
|
|
||
|
class XmppXep0045:
|
||
|
|
||
|
async def get_room_information(self, jid, alias, maxchars=None, maxstanzas=None, seconds=None):
|
||
|
#logger.info('Joining groupchat\nJID : {}\n'.format(jid))
|
||
|
#jid_from = str(self.boundjid) if self.is_component else None
|
||
|
if not maxchars: maxchars = 1000
|
||
|
if not maxstanzas: maxstanzas = 50
|
||
|
if not seconds: seconds = 864000
|
||
|
try:
|
||
|
error = False
|
||
|
condition = text = ''
|
||
|
#since = datetime.fromtimestamp(time.time()-seconds)
|
||
|
iq = await self['xep_0045'].join_muc_wait(
|
||
|
jid,
|
||
|
alias,
|
||
|
#maxchars=maxchars,
|
||
|
maxstanzas=maxstanzas,
|
||
|
#password=None,
|
||
|
#presence_options = {"pfrom" : jid_from},
|
||
|
#seconds=seconds,
|
||
|
#since=since,
|
||
|
timeout=10
|
||
|
)
|
||
|
except TimeoutError as e:
|
||
|
#raise HTTPException(status_code=504, detail='request-timeout-reached')
|
||
|
error = True
|
||
|
iq = e
|
||
|
condition = 'Request timeout reached'
|
||
|
text = str(e)
|
||
|
except (IqError, IqTimeout, PresenceError) as e:
|
||
|
error = True
|
||
|
iq = e
|
||
|
condition = e.iq['error']['condition']
|
||
|
text = e.iq['error']['text']
|
||
|
result = {
|
||
|
'error' : error,
|
||
|
'condition' : condition,
|
||
|
'text' : text,
|
||
|
'iq' : iq}
|
||
|
return result
|
||
|
|
||
|
async def get_room_data(self, jid_bare):
|
||
|
return await self['xep_0045'].get_room_config(jid_bare)
|
||
|
|
||
|
async def get_room_participants(self, jid_bare):
|
||
|
return await self['xep_0045'].get_roster(jid_bare)
|
||
|
|
||
|
|
||
|
# NOTE: "Item not found", yet is a group chat
|
||
|
# That is, JID has no vcard
|
||
|
# messaging-off@conference.movim.eu
|