fix: different muc hosts failure
+ add muc room list parser * update fetch_muc method to utilize room list parser This method scales lineraly. Therefore this is only a temporary fix until we find a better solution.
This commit is contained in:
parent
c42b0f8a51
commit
eaad51ad1a
21
calls.py
21
calls.py
|
@ -60,6 +60,16 @@ class EjabberdApiCalls(EjabberdApi):
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
# ghetto method until we have a better solution
|
||||||
|
@staticmethod
|
||||||
|
def _parse_muc_count(vhost, data: (list, dict)) -> int:
|
||||||
|
tmp = 0
|
||||||
|
|
||||||
|
for el in list(map(lambda x: x.split(sep="@"), data)):
|
||||||
|
if vhost in el[1]:
|
||||||
|
tmp += 1
|
||||||
|
return tmp
|
||||||
|
|
||||||
def fetch_onlineuser(self):
|
def fetch_onlineuser(self):
|
||||||
tmp = self.cmd("connected_users_info", {})
|
tmp = self.cmd("connected_users_info", {})
|
||||||
if "connected_users_info" not in tmp:
|
if "connected_users_info" not in tmp:
|
||||||
|
@ -141,12 +151,13 @@ class EjabberdApiCalls(EjabberdApi):
|
||||||
|
|
||||||
def fetch_muc_count(self, vhost=None, muc_host="conference"):
|
def fetch_muc_count(self, vhost=None, muc_host="conference"):
|
||||||
host = "global"
|
host = "global"
|
||||||
if vhost is not None:
|
|
||||||
if self.verstring.major >= 19:
|
|
||||||
host = ".".join([muc_host, vhost])
|
|
||||||
else:
|
|
||||||
host = vhost
|
|
||||||
result = self.cmd("muc_online_rooms", {"host": host})
|
result = self.cmd("muc_online_rooms", {"host": host})
|
||||||
|
if vhost is not None:
|
||||||
|
# if self.verstring.major >= 19:
|
||||||
|
# host = ".".join([muc_host, vhost])
|
||||||
|
# else:
|
||||||
|
# host = vhost
|
||||||
|
return self._parse_muc_count(vhost, result)
|
||||||
if "rooms" in result:
|
if "rooms" in result:
|
||||||
return len(result["rooms"])
|
return len(result["rooms"])
|
||||||
return len(result)
|
return len(result)
|
||||||
|
|
Loading…
Reference in New Issue