kanidm_cli/system_config/
message.rs1use kanidm_proto::cli::OpType;
2
3use crate::{KanidmClientParser, MessageOpt, OutputMode};
4impl MessageOpt {
7 pub async fn exec(&self, opt: KanidmClientParser) {
8 match self {
9 MessageOpt::List => {
10 let client = opt.to_client(OpType::Read).await;
11 let query = None;
12
13 match client.idm_message_list(query).await {
14 Ok(list) => match opt.output_mode {
15 OutputMode::Json => {
16 let json = serde_json::to_string(&list)
17 .expect("Failed to serialise list to JSON!");
18 println!("{json}");
19 }
20 OutputMode::Text => {
21 list.resources.iter().for_each(|entry| {
23 println!("message_id: {}", entry.header.id);
24 println!("send_after: {}", entry.send_after.date_time);
25 println!(
26 "sent_at: {}",
27 entry
28 .sent_at
29 .as_ref()
30 .map(|sdt| sdt.date_time.to_string())
31 .unwrap_or_else(|| "queued".into())
32 );
33 println!("delete_after: {}", entry.delete_after.date_time);
34 println!("template: {}", entry.message_template.display_type());
35
36 for mail in entry.mail_destination.iter() {
37 println!("to: {}", mail.value);
38 }
39
40 println!();
41 });
42 eprintln!("--");
43 eprintln!("Success");
44 }
45 },
46 Err(e) => crate::handle_client_error(e, opt.output_mode),
47 }
48 }
49
50 MessageOpt::Get { message_id } => {
51 let client = opt.to_client(OpType::Read).await;
52
53 match client.idm_message_get(*message_id).await {
54 Ok(entry) => match opt.output_mode {
55 OutputMode::Json => {
56 let json = serde_json::to_string(&entry)
57 .expect("Failed to serialise entry to JSON!");
58 println!("{json}");
59 }
60 OutputMode::Text => {
61 println!("message_id: {}", entry.header.id);
62 println!("send_after: {}", entry.send_after.date_time);
63 println!(
64 "sent_at: {}",
65 entry
66 .sent_at
67 .as_ref()
68 .map(|sdt| sdt.date_time.to_string())
69 .unwrap_or_else(|| "queued".into())
70 );
71 println!("delete_after: {}", entry.delete_after.date_time);
72
73 println!("template: {}", entry.message_template.display_type());
74
75 for mail in entry.mail_destination.iter() {
76 println!("to: {}", mail.value);
77 }
78 println!();
79 eprintln!("--");
80 eprintln!("Success");
81 }
82 },
83 Err(err) => {
84 crate::handle_client_error(err, opt.output_mode);
85 }
86 }
87 }
88
89 MessageOpt::MarkAsSent { message_id } => {
90 let client = opt.to_client(OpType::Write).await;
91
92 if let Err(e) = client.idm_message_mark_sent(*message_id).await {
93 crate::handle_client_error(e, opt.output_mode);
94 } else {
95 opt.output_mode.print_message("Message Marked as Sent");
96 }
97 }
98
99 MessageOpt::SendTestMessage { to } => {
100 let client = opt.to_client(OpType::Write).await;
101
102 if let Err(e) = client.idm_message_send_test(to).await {
103 crate::handle_client_error(e, opt.output_mode);
104 } else {
105 opt.output_mode.print_message("Message Queued");
106 }
107 }
108 }
109 }
110}