use crate::ServerSeekerClient;
use derive_builder::Builder;
use serde::{Deserialize, Serialize, Serializer};
use std::ops::{Range, RangeFrom};
use reqwest::Method;
#[derive(Serialize, Builder, Default)]
#[builder(name = "ServerInfoBuilder", public, setter(strip_option), default)]
pub struct ServerInfoParams {
#[builder(setter(into))]
pub ip: String,
pub port: Option<u16>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ServerInfoInfo {
pub cracked: Option<bool>,
pub description: String,
pub last_seen: i64,
pub max_players: u32,
pub online_players: u16,
pub protocol: i64,
pub version: String,
pub players: Vec<ServerInfoPlayer>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ServerInfoPlayer {
pub last_seen: i64,
pub name: String,
pub uuid: String,
}
impl ServerSeekerClient {
pub async fn server_info(
&self,
builder: &ServerInfoBuilder,
) -> anyhow::Result<ServerInfoInfo> {
let mut params = builder.build()?;
Ok(self
.request::<ServerInfoInfo, _, _>("/server_info", params, Method::POST)
.await?)
}
}