terra_rust_api/client/
rpc.rs1use crate::client::rpc_types::{RPCNetInfo, RPCResult, RPCStatus, RPCUnconfirmedTXS};
2use crate::tendermint_types::{BlockResult, BlockResultsResult};
3use crate::Terra;
4pub struct RPC<'a> {
5 terra: &'a Terra,
6 rpc_url: &'a str,
7}
8impl RPC<'_> {
9 pub fn create<'a>(terra: &'a Terra, tendermint_url: &'a str) -> RPC<'a> {
10 RPC {
11 terra,
12 rpc_url: tendermint_url,
13 }
14 }
15 pub async fn status(&self) -> anyhow::Result<RPCStatus> {
16 Ok(self
17 .terra
18 .send_cmd_url::<RPCResult<RPCStatus>>(self.rpc_url, "/status", None)
19 .await?
20 .result)
21 }
22 pub async fn net_info(&self) -> anyhow::Result<RPCNetInfo> {
23 Ok(self
24 .terra
25 .send_cmd_url::<RPCResult<RPCNetInfo>>(self.rpc_url, "/net_info", None)
26 .await?
27 .result)
28 }
29 pub async fn unconfirmed_txs(&self) -> anyhow::Result<RPCUnconfirmedTXS> {
30 Ok(self
31 .terra
32 .send_cmd_url::<RPCResult<RPCUnconfirmedTXS>>(self.rpc_url, "/unconfirmed_txs", None)
33 .await?
34 .result)
35 }
36 pub async fn block(&self) -> anyhow::Result<BlockResult> {
37 Ok(self
38 .terra
39 .send_cmd_url::<RPCResult<BlockResult>>(self.rpc_url, "/block", None)
40 .await?
41 .result)
42 }
43 pub async fn block_at_height(&self, height: u64) -> anyhow::Result<BlockResult> {
44 Ok(self
45 .terra
46 .send_cmd_url::<RPCResult<BlockResult>>(
47 self.rpc_url,
48 &format!("/block?height={}", height),
49 None,
50 )
51 .await?
52 .result)
53 }
54 pub async fn block_results(&self) -> anyhow::Result<BlockResultsResult> {
55 Ok(self
56 .terra
57 .send_cmd_url::<RPCResult<BlockResultsResult>>(self.rpc_url, "/block_results", None)
58 .await?
59 .result)
60 }
61 pub async fn block_results_at_height(&self, height: u64) -> anyhow::Result<BlockResultsResult> {
62 Ok(self
63 .terra
64 .send_cmd_url::<RPCResult<BlockResultsResult>>(
65 self.rpc_url,
66 &format!("/block_results?height={}", height),
67 None,
68 )
69 .await?
70 .result)
71 }
72}