rust-gamedig/crates/lib/src/games/eco/protocol.rs
CosminPerRam 6e53ef0c22
feat(http): add per-request headers option (#196)
* http: Add per-request headers option

* http: Improve tests

---------

Co-authored-by: Douile <douile@douile.com>
2024-03-16 17:57:07 +02:00

37 lines
1.1 KiB
Rust

use crate::eco::{EcoRequestSettings, Response, Root};
use crate::http::HttpClient;
use crate::{GDResult, TimeoutSettings};
use std::net::{IpAddr, SocketAddr};
/// Query an eco server.
#[inline]
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<Response> { query_with_timeout(address, port, &None) }
/// Query an eco server.
#[inline]
pub fn query_with_timeout(
address: &IpAddr,
port: Option<u16>,
timeout_settings: &Option<TimeoutSettings>,
) -> GDResult<Response> {
query_with_timeout_and_extra_settings(address, port, timeout_settings, None)
}
/// Query an eco server.
pub fn query_with_timeout_and_extra_settings(
address: &IpAddr,
port: Option<u16>,
timeout_settings: &Option<TimeoutSettings>,
extra_settings: Option<EcoRequestSettings>,
) -> GDResult<Response> {
let address = &SocketAddr::new(*address, port.unwrap_or(3001));
let mut client = HttpClient::new(
address,
timeout_settings,
extra_settings.unwrap_or_default().into(),
)?;
let response = client.get_json::<Root>("/frontpage", None)?;
Ok(response.into())
}