Compare commits

..

1 Commits

Author SHA1 Message Date
nico eaad51ad1a 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.
2021-04-17 19:59:29 +02:00
1 changed files with 16 additions and 5 deletions

View File

@ -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)