xmtp_api_d14n/endpoints/v3/identity/
verify_smart_contract_wallet_signatures.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::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}