xmtp_api_d14n/endpoints/v3/mls/
query_welcome_messages.rs1use derive_builder::Builder;
2use prost::Message;
3use prost::bytes::Bytes;
4use std::borrow::Cow;
5use xmtp_proto::api::{BodyError, Endpoint, Pageable};
6use xmtp_proto::mls_v1::QueryWelcomeMessagesResponse;
7use xmtp_proto::xmtp::mls::api::v1::{PagingInfo, QueryWelcomeMessagesRequest};
8
9#[derive(Debug, Builder, Default)]
10#[builder(build_fn(error = "BodyError"))]
11pub struct QueryWelcomeMessages {
12 #[builder(setter(into))]
13 installation_key: Vec<u8>,
14 #[builder(setter(into), default)]
15 paging_info: Option<PagingInfo>,
16}
17
18impl QueryWelcomeMessages {
19 pub fn builder() -> QueryWelcomeMessagesBuilder {
20 Default::default()
21 }
22}
23
24impl Endpoint for QueryWelcomeMessages {
25 type Output = QueryWelcomeMessagesResponse;
26 fn grpc_endpoint(&self) -> Cow<'static, str> {
27 xmtp_proto::path_and_query::<QueryWelcomeMessagesRequest>()
28 }
29
30 fn body(&self) -> Result<Bytes, BodyError> {
31 Ok(QueryWelcomeMessagesRequest {
32 installation_key: self.installation_key.clone(),
33 paging_info: self.paging_info,
34 }
35 .encode_to_vec()
36 .into())
37 }
38}
39
40impl Pageable for QueryWelcomeMessages {
41 fn set_cursor(&mut self, cursor: u64) {
42 if let Some(ref mut p) = self.paging_info {
43 p.id_cursor = cursor;
44 }
45 }
46}
47
48#[cfg(test)]
49mod test {
50 use crate::v3::QueryWelcomeMessages;
51 use xmtp_api_grpc::test::NodeGoClient;
52 use xmtp_proto::prelude::*;
53 use xmtp_proto::xmtp::mls::api::v1::{
54 QueryWelcomeMessagesRequest, QueryWelcomeMessagesResponse,
55 };
56
57 #[xmtp_common::test]
58 fn test_file_descriptor() {
59 let pnq = xmtp_proto::path_and_query::<QueryWelcomeMessagesRequest>();
60 println!("{}", pnq);
61 }
62
63 #[xmtp_common::test]
64 fn test_grpc_endpoint_returns_correct_path() {
65 let endpoint = QueryWelcomeMessages::default();
66 assert_eq!(
67 endpoint.grpc_endpoint(),
68 "/xmtp.mls.api.v1.MlsApi/QueryWelcomeMessages"
69 );
70 }
71
72 #[xmtp_common::test]
73 async fn test_query_welcome_messages() {
74 let client = NodeGoClient::create();
75 let client = client.build().unwrap();
76 let mut endpoint = QueryWelcomeMessages::builder()
77 .installation_key(vec![1, 2, 3])
78 .build()
79 .unwrap();
80
81 let result: QueryWelcomeMessagesResponse = endpoint.query(&client).await.unwrap();
82 assert_eq!(result.messages.len(), 0);
83 }
84}