Matrix mxid lookup: paginate Cloudron users API (25/page) — was missing page 2+
This commit is contained in:
1 parent
f86ead8653
commit
29823e87d5
1 file changed
+19
-8
+19
-8
@@ -902,14 +902,25 @@ async def matrix_member_mxids(client: httpx.AsyncClient):
|
|||||||
"""
|
"""
|
||||||
extra = [m.strip() for m in os.environ.get("MATRIX_EXTRA_MXIDS", "").split(",") if m.strip()]
|
extra = [m.strip() for m in os.environ.get("MATRIX_EXTRA_MXIDS", "").split(",") if m.strip()]
|
||||||
seen: set[str] = set()
|
seen: set[str] = set()
|
||||||
r = await client.get(
|
# Cloudron paginates /api/v1/users at 25/page — walk every page.
|
||||||
f"{CLOUDRON_API}/api/v1/users",
|
users: dict[str, str] = {}
|
||||||
headers=cloudron_headers(),
|
page = 1
|
||||||
)
|
while True:
|
||||||
users = (
|
r = await client.get(
|
||||||
{u["email"].lower(): u["username"] for u in r.json().get("users", [])}
|
f"{CLOUDRON_API}/api/v1/users",
|
||||||
if r.status_code == 200 else {}
|
params={"page": page},
|
||||||
)
|
headers=cloudron_headers(),
|
||||||
|
)
|
||||||
|
if r.status_code != 200:
|
||||||
|
logger.warning("Cloudron users lookup page %s failed: %s", page, r.status_code)
|
||||||
|
break
|
||||||
|
batch = r.json().get("users", [])
|
||||||
|
for u in batch:
|
||||||
|
if u.get("email") and u.get("username"):
|
||||||
|
users[u["email"].lower()] = u["username"]
|
||||||
|
if len(batch) < 25:
|
||||||
|
break
|
||||||
|
page += 1
|
||||||
for email in await get_active_member_emails():
|
for email in await get_active_member_emails():
|
||||||
username = users.get(email.lower())
|
username = users.get(email.lower())
|
||||||
if username:
|
if username:
|
||||||
|
|||||||
Reference in new issue
Block a user