node_client/
lib.rs

1pub mod builder;
2pub mod error;
3
4//Exporting
5pub use builder::NodeClientBuilder;
6pub use error::Error;
7pub use node_types::Status;
8
9use async_std::future::timeout;
10use std::time::Duration;
11
12pub type Result<T> = std::result::Result<T, Error>;
13
14pub struct NodeClient {
15    pub(crate) url: String,
16    pub(crate) timeout_millis: u64,
17}
18
19impl NodeClient {
20    pub fn builder(url: &str) -> NodeClientBuilder {
21        NodeClientBuilder::new(url)
22    }
23
24    pub async fn status(&self) -> Result<Status> {
25        let status: Status = timeout(
26            Duration::from_millis(self.timeout_millis),
27            surf::get(&self.url),
28        )
29        .await??
30        .body_json()
31        .await?;
32
33        Ok(status)
34    }
35}