Skip to content
This repository was archived by the owner on Apr 4, 2025. It is now read-only.

Commit 4bdcdf7

Browse files
Merge pull request #113 from JacksonChen666/room-delete-v2
Implement room delete v2 API
2 parents 630f31f + d0785a0 commit 4bdcdf7

File tree

2 files changed

+69
-4
lines changed

2 files changed

+69
-4
lines changed

synadm/api.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,32 @@ def room_delete(self, room_id, new_room_user_id, room_name, message,
853853
return self.query("delete", "v1/rooms/{room_id}", data=data,
854854
room_id=room_id)
855855

856+
def room_delete_v2(self, room_id, new_room_user_id, room_name, message,
857+
block, purge):
858+
""" Delete a room asynchronously and purge it if requested
859+
"""
860+
data = {
861+
"block": block, # data with proper defaults from cli
862+
"purge": purge
863+
}
864+
# everything else is optional and shouldn't even exist in post body
865+
if new_room_user_id:
866+
data.update({"new_room_user_id": new_room_user_id})
867+
if room_name:
868+
data.update({"room_name": room_name})
869+
if message:
870+
data.update({"message": message})
871+
return self.query("delete", "v2/rooms/{room_id}", data=data,
872+
room_id=room_id)
873+
874+
def room_delete_v2_status_by_room_id(self, room_id):
875+
return self.query("get", "v2/rooms/{room_id}/delete_status",
876+
room_id=room_id)
877+
878+
def room_delete_v2_status_by_delete_id(self, delete_id):
879+
return self.query("get", "v2/rooms/delete_status/{delete_id}",
880+
delete_id=delete_id)
881+
856882
def block_room(self, room_id, block):
857883
""" Block or unblock a room.
858884

synadm/cli/room.py

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"""
2020

2121
import click
22+
from click_option_group import RequiredMutuallyExclusiveOptionGroup, optgroup
2223

2324
from synadm import cli
2425

@@ -245,10 +246,13 @@ def members(helper, room_id):
245246
"--no-purge", is_flag=True, default=False, show_default=True,
246247
help="""Prevent removing of all traces of the room from your
247248
database.""")
249+
@click.option(
250+
"--v1", is_flag=True, default=False, show_default=True,
251+
help="""Use version 1 of the room delete API instead of version 2""")
248252
@click.pass_obj
249253
@click.pass_context
250254
def delete(ctx, helper, room_id, new_room_user_id, room_name, message, block,
251-
no_purge):
255+
no_purge, v1):
252256
""" Delete and possibly purge a room.
253257
"""
254258
room_details = helper.api.room_details(room_id)
@@ -269,9 +273,14 @@ def delete(ctx, helper, room_id, new_room_user_id, room_name, message, block,
269273
)
270274
if sure:
271275
mxid = helper.generate_mxid(new_room_user_id)
272-
room_del = helper.api.room_delete(
273-
room_id, mxid, room_name,
274-
message, block, no_purge)
276+
if v1:
277+
room_del = helper.api.room_delete(
278+
room_id, mxid, room_name,
279+
message, block, no_purge)
280+
else:
281+
room_del = helper.api.room_delete_v2(
282+
room_id, mxid, room_name,
283+
message, block, not bool(no_purge))
275284
if room_del is None:
276285
click.echo("Room not deleted.")
277286
raise SystemExit(1)
@@ -280,6 +289,36 @@ def delete(ctx, helper, room_id, new_room_user_id, room_name, message, block,
280289
click.echo("Abort.")
281290

282291

292+
@room.command(name="delete-status")
293+
@optgroup.group(
294+
"Query type", cls=RequiredMutuallyExclusiveOptionGroup,
295+
help="Query room deletion status via either Room ID or Deletion ID"
296+
)
297+
@optgroup.option(
298+
"--room-id", "-r", type=str,
299+
help="""The Room ID to query the deletion status for""")
300+
@optgroup.option(
301+
"--delete-id", "-d", type=str,
302+
help="""The Delete ID to query the deletion status for""")
303+
@click.pass_obj
304+
def delete_status(helper, room_id, delete_id):
305+
""" Get room deletion status via either the room ID or the delete ID.
306+
307+
This requires the usage of the Room Delete v2 API. If you used v1 of the
308+
Room Delete API, this is irrelevant.
309+
"""
310+
output = None
311+
if room_id:
312+
output = helper.api.room_delete_v2_status_by_room_id(
313+
room_id
314+
)
315+
if delete_id:
316+
output = helper.api.room_delete_v2_status_by_delete_id(
317+
delete_id
318+
)
319+
helper.output(output)
320+
321+
283322
@room.command(name="search")
284323
@click.argument("search-term", type=str)
285324
@click.option(

0 commit comments

Comments
 (0)