use serde::{Deserialize, Serialize};
use crate::error::Result;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServerInfo {
pub description: ServerDescription,
pub players: ServerPlayers,
pub version: ServerVersion,
pub favicon: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServerDescription {
pub text: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServerPlayers {
pub max: i32,
pub online: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServerVersion {
pub name: String,
pub protocol: i32,
}
#[derive(Debug, Clone)]
pub struct PingResult {
pub server_info: ServerInfo,
pub latency: u64,
}
pub struct StatusClient;
impl StatusClient {
pub fn ping(host: &str, port: u16) -> Result<PingResult> {
Ok(PingResult {
server_info: ServerInfo {
description: ServerDescription {
text: "Servidor de ejemplo".to_string(),
},
players: ServerPlayers {
max: 100,
online: 50,
},
version: ServerVersion {
name: "1.20.4".to_string(),
protocol: 765,
},
favicon: None,
},
latency: 50,
})
}
}
pub fn ping_server(host: &str, port: u16) -> Result<PingResult> {
StatusClient::ping(host, port)
}