tuwunel_admin/media/
mod.rs1#![expect(rustdoc::broken_intra_doc_links)]
2mod delete;
3mod delete_all_from_server;
4mod delete_all_from_user;
5mod delete_by_event;
6mod delete_list;
7mod delete_range;
8mod get_file_info;
9mod get_remote_file;
10mod get_remote_thumbnail;
11mod preview;
12
13use clap::{ArgGroup, Subcommand};
14use ruma::{OwnedEventId, OwnedMxcUri, OwnedServerName};
15use tuwunel_core::Result;
16use url::Url;
17
18use crate::admin_command_dispatch;
19
20#[admin_command_dispatch]
21#[derive(Debug, Subcommand)]
22pub(super) enum MediaCommand {
23 Delete {
26 #[arg(long)]
28 mxc: OwnedMxcUri,
29 },
30
31 DeleteByEvent {
33 #[arg(long)]
35 event_id: OwnedEventId,
36 },
37
38 DeleteList,
41
42 #[command(group(
46 ArgGroup::new("direction")
47 .required(true)
48 .args(["older_than", "newer_than"]),
49 ))]
50 DeleteRange {
51 duration: String,
53
54 #[arg(long, short)]
56 older_than: bool,
57
58 #[arg(long, short)]
60 newer_than: bool,
61
62 #[arg(long)]
64 yes_i_want_to_delete_local_media: bool,
65 },
66
67 DeleteAllFromUser {
70 username: String,
71 },
72
73 DeleteAllFromServer {
76 server_name: OwnedServerName,
77
78 #[arg(long)]
80 yes_i_want_to_delete_local_media: bool,
81 },
82
83 GetFileInfo {
84 mxc: OwnedMxcUri,
86 },
87
88 GetRemoteFile {
89 mxc: OwnedMxcUri,
91
92 #[arg(short, long)]
93 server: Option<OwnedServerName>,
94
95 #[arg(short, long, default_value("10000"))]
96 timeout: u32,
97 },
98
99 GetRemoteThumbnail {
100 mxc: OwnedMxcUri,
102
103 #[arg(short, long)]
104 server: Option<OwnedServerName>,
105
106 #[arg(short, long, default_value("10000"))]
107 timeout: u32,
108
109 #[arg(long, default_value("800"))]
110 width: u32,
111
112 #[arg(long, default_value("800"))]
113 height: u32,
114 },
115
116 Preview {
117 url: Url,
118
119 #[arg(short, long)]
121 no_cache: bool,
122 },
123}