cosmos_client/client/
auth.rs1use crate::error::CosmosClient;
2use crate::error::CosmosClient::{ProstDecodeError, RpcError};
3use cosmos_sdk_proto::cosmos::auth::v1beta1::{
4 QueryAccountRequest, QueryAccountResponse, QueryAccountsRequest, QueryAccountsResponse,
5 QueryParamsRequest, QueryParamsResponse,
6};
7use cosmos_sdk_proto::cosmos::base::query::v1beta1::PageRequest;
8use prost::Message;
9use std::rc::Rc;
10use tendermint::abci::Code;
11use tendermint_rpc::{Client, HttpClient};
12
13pub struct Module {
14 rpc: Rc<HttpClient>,
15}
16
17impl Module {
18 pub fn new(rpc: Rc<HttpClient>) -> Self {
19 Module { rpc }
20 }
21
22 pub async fn accounts(
29 &self,
30 pagination: Option<PageRequest>,
31 ) -> Result<QueryAccountsResponse, CosmosClient> {
32 let query = QueryAccountsRequest { pagination };
33 let query = self
34 .rpc
35 .abci_query(
36 Some("/cosmos.auth.v1beta1.Query/Accounts".to_string()),
37 query.encode_to_vec(),
38 None,
39 false,
40 )
41 .await?;
42
43 if query.code != Code::Ok {
44 return Err(RpcError(query.log));
45 }
46 QueryAccountsResponse::decode(query.value.as_slice()).map_err(ProstDecodeError)
47 }
48
49 pub async fn account(&self, address: &str) -> Result<QueryAccountResponse, CosmosClient> {
56 let query = QueryAccountRequest {
57 address: address.to_string(),
58 };
59 let query = self
60 .rpc
61 .abci_query(
62 Some("/cosmos.auth.v1beta1.Query/Account".to_string()),
63 query.encode_to_vec(),
64 None,
65 false,
66 )
67 .await?;
68
69 if query.code != Code::Ok {
70 return Err(RpcError(query.log));
71 }
72 QueryAccountResponse::decode(query.value.as_slice()).map_err(ProstDecodeError)
73 }
74
75 pub async fn params(&self) -> Result<QueryParamsResponse, CosmosClient> {
82 let query = QueryParamsRequest {};
83 let query = self
84 .rpc
85 .abci_query(
86 Some("/cosmos.auth.v1beta1.Query/Params".to_string()),
87 query.encode_to_vec(),
88 None,
89 false,
90 )
91 .await?;
92
93 if query.code != Code::Ok {
94 return Err(RpcError(query.log));
95 }
96 QueryParamsResponse::decode(query.value.as_slice()).map_err(ProstDecodeError)
97 }
98}