1pub mod builder;
2pub mod error;
3
4pub 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}