use super::*;
use anyhow::Error;
pub struct Utility<'a> {
rest: &'a RestClient,
}
impl<'a> Utility<'a> {
pub(crate) fn new(rest: &'a RestClient) -> Self {
Self { rest }
}
pub async fn get_time(&self) -> Result<TimeResponse, Error> {
let rest = &self.rest;
const URI: &str = "/v4/time";
let url = format!("{}{URI}", rest.config.endpoint);
let resp = rest
.client
.get(url)
.send()
.await?
.error_for_status()?
.json()
.await?;
Ok(resp)
}
pub async fn get_height(&self) -> Result<HeightResponse, Error> {
let rest = &self.rest;
const URI: &str = "/v4/height";
let url = format!("{}{URI}", rest.config.endpoint);
let resp = rest
.client
.get(url)
.send()
.await?
.error_for_status()?
.json()
.await?;
Ok(resp)
}
#[deprecated(since = "0.3.0", note = "Use `screen` instead")]
pub async fn get_screen(&self, query: &Address) -> Result<ComplianceResponse, Error> {
self.screen(query).await
}
pub async fn screen(&self, query: &Address) -> Result<ComplianceResponse, Error> {
let rest = &self.rest;
const URI: &str = "/v4/screen";
let url = format!("{}{URI}", rest.config.endpoint);
let resp = rest
.client
.get(url)
.query(&[("address", query)])
.send()
.await?
.error_for_status()?
.json()
.await?;
Ok(resp)
}
pub async fn compliance_screen(
&self,
address: &Address,
) -> Result<ComplianceV2Response, Error> {
let rest = &self.rest;
const URI: &str = "/v4/compliance/screen";
let url = format!("{}{URI}/{address}", rest.config.endpoint);
let resp = rest
.client
.get(url)
.send()
.await?
.error_for_status()?
.json()
.await?;
Ok(resp)
}
}