xmtp_api_d14n/endpoints/v3/identity/
get_identity_updates_v2.rs1use derive_builder::Builder;
2use prost::Message;
3use prost::bytes::Bytes;
4use std::borrow::Cow;
5use xmtp_proto::api::{BodyError, Endpoint};
6use xmtp_proto::identity_v1::GetIdentityUpdatesResponse;
7use xmtp_proto::xmtp::identity::api::v1::GetIdentityUpdatesRequest;
8use xmtp_proto::xmtp::identity::api::v1::get_identity_updates_request::Request;
9
10#[derive(Debug, Builder, Default)]
11#[builder(setter(strip_option), build_fn(error = "BodyError"))]
12pub struct GetIdentityUpdatesV2 {
13 #[builder(setter(into, each = "request"))]
14 pub requests: Vec<Request>,
15}
16
17impl GetIdentityUpdatesV2 {
18 pub fn builder() -> GetIdentityUpdatesV2Builder {
19 Default::default()
20 }
21}
22
23impl Endpoint for GetIdentityUpdatesV2 {
24 type Output = GetIdentityUpdatesResponse;
25 fn grpc_endpoint(&self) -> Cow<'static, str> {
26 xmtp_proto::path_and_query::<GetIdentityUpdatesRequest>()
27 }
28
29 fn body(&self) -> Result<Bytes, BodyError> {
30 Ok(GetIdentityUpdatesRequest {
31 requests: self.requests.clone(),
32 }
33 .encode_to_vec()
34 .into())
35 }
36}
37
38#[cfg(test)]
39mod test {
40 use super::*;
41 use xmtp_api_grpc::test::NodeGoClient;
42 use xmtp_proto::{identity_v1::GetIdentityUpdatesResponse, prelude::*};
43
44 #[xmtp_common::test]
45 fn test_file_descriptor() {
46 let pnq = xmtp_proto::path_and_query::<GetIdentityUpdatesRequest>();
47 println!("{}", pnq);
48 }
49
50 #[xmtp_common::test]
51 fn test_grpc_endpoint_returns_correct_path() {
52 let endpoint = GetIdentityUpdatesV2::default();
53 assert_eq!(
54 endpoint.grpc_endpoint(),
55 "/xmtp.identity.api.v1.IdentityApi/GetIdentityUpdates"
56 );
57 }
58
59 #[xmtp_common::test]
60 async fn test_get_identity_updates_v2() {
61 let client = NodeGoClient::create();
62 let client = client.build().unwrap();
63 let mut endpoint = GetIdentityUpdatesV2::builder()
64 .requests(vec![Request {
65 inbox_id: "".to_string(),
66 sequence_id: 0,
67 }])
68 .build()
69 .unwrap();
70
71 let result: GetIdentityUpdatesResponse = endpoint.query(&client).await.unwrap();
72 assert_eq!(result.responses.len(), 1);
73 }
74}