#!/usr/bin/env python3 """List a user's groups, and whether a node serving each one is up.""" import sys import httpx from meshbay_session import auth_key HUB = "https://meshbay.org" USERNAME = "alice" PASSPHRASE = "your passphrase" def main() -> None: with httpx.Client(base_url=HUB, timeout=30) as hub: r = hub.post("/v1/users/login", json={"username": USERNAME, "auth_key": auth_key(USERNAME, PASSPHRASE)}) if r.status_code != 200: sys.exit(f"Sign-in refused: {r.text}") auth = {"Authorization": f"Bearer {r.json()['access_token']}"} groups = hub.get("/v1/groups/mine", headers=auth).json()["groups"] # "up" means a node serving the group is connected to the hub right now. # It does not prove that this machine can reach that node. for g in groups: state = "up" if g["node_online"] else "down" print(f"{state:<6}{g['name']} (@{g['owner_username']})") if __name__ == "__main__": main()