xmtp_api_d14n/endpoints/v3/mls/
send_group_messages.rs1use derive_builder::Builder;
2use prost::Message;
3use prost::bytes::Bytes;
4use std::borrow::Cow;
5use xmtp_proto::api::{BodyError, Endpoint};
6use xmtp_proto::xmtp::mls::api::v1::{GroupMessageInput, SendGroupMessagesRequest};
7
8#[derive(Debug, Builder, Default)]
9#[builder(setter(strip_option), build_fn(error = "BodyError"))]
10pub struct SendGroupMessages {
11 #[builder(setter(into))]
12 messages: Vec<GroupMessageInput>,
13}
14
15impl SendGroupMessages {
16 pub fn builder() -> SendGroupMessagesBuilder {
17 Default::default()
18 }
19}
20
21impl Endpoint for SendGroupMessages {
22 type Output = ();
23 fn grpc_endpoint(&self) -> Cow<'static, str> {
24 xmtp_proto::path_and_query::<SendGroupMessagesRequest>()
25 }
26
27 fn body(&self) -> Result<Bytes, BodyError> {
28 Ok(SendGroupMessagesRequest {
29 messages: self.messages.clone(),
30 }
31 .encode_to_vec()
32 .into())
33 }
34}
35
36#[cfg(test)]
37mod test {
38 use crate::v3::SendGroupMessages;
39 use xmtp_api_grpc::test::NodeGoClient;
40 use xmtp_proto::xmtp::mls::api::v1::*;
41 use xmtp_proto::{api, prelude::*};
42
43 #[xmtp_common::test]
44 fn test_file_descriptor() {
45 let pnq = xmtp_proto::path_and_query::<SendGroupMessagesRequest>();
46 println!("{}", pnq);
47 }
48
49 #[xmtp_common::test]
50 fn test_grpc_endpoint_returns_correct_path() {
51 let endpoint = SendGroupMessages::default();
52 assert_eq!(
53 endpoint.grpc_endpoint(),
54 "/xmtp.mls.api.v1.MlsApi/SendGroupMessages"
55 );
56 }
57
58 #[xmtp_common::test]
59 async fn test_send_group_messages() {
60 let client = NodeGoClient::create();
61 let client = client.build().unwrap();
62 let endpoint = SendGroupMessages::builder()
63 .messages(vec![GroupMessageInput::default()])
64 .build()
65 .unwrap();
66
67 let result = api::ignore(endpoint).query(&client).await;
68 assert!(result.is_err());
69 }
70}