use std::time::{Duration, Instant};
use polyoxide_core::HttpClient;
use serde::Deserialize;
use crate::{
error::BinanceError,
usdm::{request::WeightedRequest, types::ServerTime},
weight::{Route, WeightBudget},
};
#[derive(Debug, Clone)]
pub struct Health {
pub(crate) http: HttpClient,
pub(crate) budget: WeightBudget,
}
#[derive(Deserialize)]
struct Empty {}
impl Health {
pub async fn ping(&self) -> Result<Duration, BinanceError> {
let start = Instant::now();
WeightedRequest::<Empty>::new(&self.http, &self.budget, Route::Ping)
.send()
.await?;
Ok(start.elapsed())
}
pub fn time(&self) -> WeightedRequest<ServerTime> {
WeightedRequest::new(&self.http, &self.budget, Route::Time)
}
}