use crate::ServerSeekerClient;
use derive_builder::Builder;
use reqwest::Method;
use serde::{Deserialize, Serialize, Serializer};
#[derive(Serialize, Builder, Default)]
#[builder(name = "WhereisBuilder", public, setter(strip_option), default)]
pub struct WhereisParams {
#[builder(setter(into))]
pub name: Option<String>,
#[builder(setter(into))]
pub uuid: Option<String>,
}
#[derive(Deserialize, Debug)]
pub struct WhereisServer {
pub last_seen: i64,
pub name: String,
pub server: String,
pub uuid: String,
}
#[derive(Deserialize, Debug)]
pub(crate) struct WhereisData {
pub data: Vec<WhereisServer>,
}
impl ServerSeekerClient {
pub async fn whereis(
&self,
builder: &WhereisBuilder,
) -> anyhow::Result<Vec<WhereisServer>> {
let mut params = builder.build()?;
Ok(self
.request::<WhereisData, _, _>("/whereis", params, Method::POST)
.await?
.data)
}
}