xmtp_api_d14n/endpoints/d14n/
get_nodes.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::xmtpv4::payer_api::{GetNodesRequest, GetNodesResponse};
7
8#[derive(Debug, Builder, Default)]
9#[builder(setter(strip_option), build_fn(error = "BodyError"))]
10pub struct GetNodes {}
11
12impl GetNodes {
13 pub fn builder() -> GetNodesBuilder {
14 Default::default()
15 }
16}
17
18impl Endpoint for GetNodes {
19 type Output = GetNodesResponse;
20
21 fn grpc_endpoint(&self) -> Cow<'static, str> {
22 xmtp_proto::path_and_query::<GetNodesRequest>()
23 }
24
25 fn body(&self) -> Result<Bytes, BodyError> {
26 Ok(GetNodesRequest {}.encode_to_vec().into())
27 }
28}
29
30#[cfg(test)]
31mod test {
32 use super::*;
33 use crate::d14n::GetNodes;
34 use xmtp_api_grpc::test::{GatewayClient, XmtpdClient};
35 use xmtp_proto::prelude::*;
36
37 #[xmtp_common::test]
38 fn test_file_descriptor() {
39 let pnq = xmtp_proto::path_and_query::<GetNodesRequest>();
40 println!("{}", pnq);
41 }
42
43 #[xmtp_common::test]
44 async fn test_get_nodes() {
45 let mut endpoint = GetNodes::builder().build().unwrap();
46 let gateway_client = GatewayClient::create();
47 let client = gateway_client.build().unwrap();
48 assert!(endpoint.query(&client).await.is_ok());
49 }
50
51 #[xmtp_common::test]
52 async fn test_get_nodes_unimplemented() {
53 let mut endpoint = GetNodes::builder().build().unwrap();
55 let xmtpd_client = XmtpdClient::create();
56 let client = xmtpd_client.build().unwrap();
57 assert!(endpoint.query(&client).await.is_err());
58 }
59}