def get_permissions(self, mxid: UserID) -> Tuple[bool, bool, str]: permissions = self["bridge.permissions"] or {} if mxid in permissions: return self._get_permissions(mxid) homeserver = mxid[mxid.index(":") + 1:] if homeserver in permissions: return self._get_permissions(homeserver) return self._get_permissions("*")
def parse_user_id(cls, mxid: UserID) -> Tuple[str, str]: """ Parse the localpart and server name from a Matrix user ID. Args: mxid: The Matrix user ID. Returns: A tuple of (localpart, server_name). Raises: ValueError: if the given user ID is invalid. """ if len(mxid) == 0: raise ValueError("User ID is empty") elif mxid[0] != "@": raise ValueError("User IDs start with @") try: sep = mxid.index(":") except ValueError as e: raise ValueError("User ID must contain domain separator") from e if sep == len(mxid) - 1: raise ValueError("User ID must contain domain") return mxid[1:sep], mxid[sep + 1:]