Skip to content

Commit 953bcaa

Browse files
committed
Add key/address/wildcard support to block, unblock, approve, revoke + permissions, ping methods
1 parent 1f54140 commit 953bcaa

1 file changed

Lines changed: 72 additions & 23 deletions

File tree

src/toq/_client.py

Lines changed: 72 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -117,30 +117,55 @@ def get_thread(self, thread_id: str) -> dict:
117117
def peers(self) -> list:
118118
return self._request("GET", "/v1/peers").json()["peers"]
119119

120-
def block(self, public_key: str) -> None:
121-
self._request("POST", "/v1/peers/%s/block" % quote(public_key, safe=""))
120+
def block(self, public_key: str = "", *, key: str = "", from_addr: str = "") -> None:
121+
if from_addr:
122+
self._request("POST", "/v1/block", json={"from": from_addr})
123+
elif key or public_key:
124+
self._request("POST", "/v1/block", json={"key": key or public_key})
122125

123-
def unblock(self, public_key: str) -> None:
124-
self._request("DELETE", "/v1/peers/%s/block" % quote(public_key, safe=""))
126+
def unblock(self, public_key: str = "", *, key: str = "", from_addr: str = "") -> None:
127+
if from_addr:
128+
self._request("DELETE", "/v1/block", json={"from": from_addr})
129+
elif key or public_key:
130+
self._request("DELETE", "/v1/block", json={"key": key or public_key})
125131

126132
# ── Approvals ────────────────────────────────────────
127133

128134
def approvals(self) -> list:
129135
return self._request("GET", "/v1/approvals").json()["approvals"]
130136

131-
def approve(self, approval_id: str) -> None:
132-
self._request(
133-
"POST", "/v1/approvals/%s" % quote(approval_id, safe=""), json={"decision": "approve"}
134-
)
137+
def approve(self, approval_id: str = "", *, key: str = "", from_addr: str = "") -> None:
138+
if from_addr:
139+
self._request("POST", "/v1/approve", json={"from": from_addr})
140+
elif key:
141+
self._request("POST", "/v1/approve", json={"key": key})
142+
elif approval_id:
143+
self._request(
144+
"POST", "/v1/approvals/%s" % quote(approval_id, safe=""), json={"decision": "approve"}
145+
)
135146

136147
def deny(self, approval_id: str) -> None:
137148
self._request(
138149
"POST", "/v1/approvals/%s" % quote(approval_id, safe=""), json={"decision": "deny"}
139150
)
140151

141-
def revoke(self, approval_id: str) -> None:
142-
self._request(
143-
"POST", "/v1/approvals/%s/revoke" % quote(approval_id, safe="")
152+
def revoke(self, approval_id: str = "", *, key: str = "", from_addr: str = "") -> None:
153+
if from_addr:
154+
self._request("POST", "/v1/revoke", json={"from": from_addr})
155+
elif key:
156+
self._request("POST", "/v1/revoke", json={"key": key})
157+
elif approval_id:
158+
self._request(
159+
"POST", "/v1/approvals/%s/revoke" % quote(approval_id, safe="")
160+
)
161+
162+
# ── Permissions ──────────────────────────────────────
163+
164+
def permissions(self) -> dict:
165+
return self._request("GET", "/v1/permissions").json()
166+
167+
def ping(self, address: str) -> dict:
168+
return self._request("POST", "/v1/ping", json={"address": address}).json()
144169
)
145170

146171
# ── History ──────────────────────────────────────────
@@ -359,31 +384,55 @@ async def get_thread(self, thread_id: str) -> dict:
359384
async def peers(self) -> list:
360385
return (await self._request("GET", "/v1/peers")).json()["peers"]
361386

362-
async def block(self, public_key: str) -> None:
363-
await self._request("POST", "/v1/peers/%s/block" % quote(public_key, safe=""))
387+
async def block(self, public_key: str = "", *, key: str = "", from_addr: str = "") -> None:
388+
if from_addr:
389+
await self._request("POST", "/v1/block", json={"from": from_addr})
390+
elif key or public_key:
391+
await self._request("POST", "/v1/block", json={"key": key or public_key})
364392

365-
async def unblock(self, public_key: str) -> None:
366-
await self._request("DELETE", "/v1/peers/%s/block" % quote(public_key, safe=""))
393+
async def unblock(self, public_key: str = "", *, key: str = "", from_addr: str = "") -> None:
394+
if from_addr:
395+
await self._request("DELETE", "/v1/block", json={"from": from_addr})
396+
elif key or public_key:
397+
await self._request("DELETE", "/v1/block", json={"key": key or public_key})
367398

368399
# ── Approvals ────────────────────────────────────────
369400

370401
async def approvals(self) -> list:
371402
return (await self._request("GET", "/v1/approvals")).json()["approvals"]
372403

373-
async def approve(self, approval_id: str) -> None:
374-
await self._request(
375-
"POST", "/v1/approvals/%s" % quote(approval_id, safe=""), json={"decision": "approve"}
376-
)
404+
async def approve(self, approval_id: str = "", *, key: str = "", from_addr: str = "") -> None:
405+
if from_addr:
406+
await self._request("POST", "/v1/approve", json={"from": from_addr})
407+
elif key:
408+
await self._request("POST", "/v1/approve", json={"key": key})
409+
elif approval_id:
410+
await self._request(
411+
"POST", "/v1/approvals/%s" % quote(approval_id, safe=""), json={"decision": "approve"}
412+
)
377413

378414
async def deny(self, approval_id: str) -> None:
379415
await self._request(
380416
"POST", "/v1/approvals/%s" % quote(approval_id, safe=""), json={"decision": "deny"}
381417
)
382418

383-
async def revoke(self, approval_id: str) -> None:
384-
await self._request(
385-
"POST", "/v1/approvals/%s/revoke" % quote(approval_id, safe="")
386-
)
419+
async def revoke(self, approval_id: str = "", *, key: str = "", from_addr: str = "") -> None:
420+
if from_addr:
421+
await self._request("POST", "/v1/revoke", json={"from": from_addr})
422+
elif key:
423+
await self._request("POST", "/v1/revoke", json={"key": key})
424+
elif approval_id:
425+
await self._request(
426+
"POST", "/v1/approvals/%s/revoke" % quote(approval_id, safe="")
427+
)
428+
429+
# ── Permissions ──────────────────────────────────────
430+
431+
async def permissions(self) -> dict:
432+
return (await self._request("GET", "/v1/permissions")).json()
433+
434+
async def ping(self, address: str) -> dict:
435+
return (await self._request("POST", "/v1/ping", json={"address": address})).json()
387436

388437
# ── History ──────────────────────────────────────────
389438

0 commit comments

Comments
 (0)