xmtp_api_d14n/endpoints/v3/identity/
verify_smart_contract_wallet_signatures.rs

1use 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::VerifySmartContractWalletSignaturesResponse;
7use xmtp_proto::xmtp::identity::api::v1::{
8    VerifySmartContractWalletSignatureRequestSignature, VerifySmartContractWalletSignaturesRequest,
9};
10
11#[derive(Debug, Builder, Default)]
12#[builder(setter(strip_option), build_fn(error = "BodyError"))]
13pub struct VerifySmartContractWalletSignatures {
14    #[builder(setter(into))]
15    pub signatures: Vec<VerifySmartContractWalletSignatureRequestSignature>,
16}
17
18impl VerifySmartContractWalletSignatures {
19    pub fn builder() -> VerifySmartContractWalletSignaturesBuilder {
20        Default::default()
21    }
22}
23
24impl Endpoint for VerifySmartContractWalletSignatures {
25    type Output = VerifySmartContractWalletSignaturesResponse;
26    fn grpc_endpoint(&self) -> Cow<'static, str> {
27        xmtp_proto::path_and_query::<VerifySmartContractWalletSignaturesRequest>()
28    }
29
30    fn body(&self) -> Result<Bytes, BodyError> {
31        Ok(VerifySmartContractWalletSignaturesRequest {
32            signatures: self.signatures.clone(),
33        }
34        .encode_to_vec()
35        .into())
36    }
37}
38
39#[cfg(test)]
40mod test {
41    use super::*;
42    use xmtp_api_grpc::test::NodeGoClient;
43    use xmtp_proto::{api, prelude::*};
44
45    #[xmtp_common::test]
46    fn test_file_descriptor() {
47        let pnq = xmtp_proto::path_and_query::<VerifySmartContractWalletSignaturesRequest>();
48        println!("{}", pnq);
49    }
50
51    #[xmtp_common::test]
52    fn test_grpc_endpoint_returns_correct_path() {
53        let endpoint = VerifySmartContractWalletSignatures::default();
54        assert_eq!(
55            endpoint.grpc_endpoint(),
56            "/xmtp.identity.api.v1.IdentityApi/VerifySmartContractWalletSignatures"
57        );
58    }
59
60    #[xmtp_common::test]
61    async fn test_verify_smart_contract_wallet_signatures() {
62        let client = NodeGoClient::create();
63        let client = client.build().unwrap();
64        let endpoint = VerifySmartContractWalletSignatures::builder()
65            .signatures(vec![VerifySmartContractWalletSignatureRequestSignature {
66                account_id: "".into(),
67                block_number: None,
68                hash: vec![],
69                signature: vec![],
70            }])
71            .build()
72            .unwrap();
73        api::ignore(endpoint).query(&client).await.unwrap();
74    }
75}