mirror of
https://github.com/tribufu/rust-gamedig
synced 2026-05-18 09:35:50 +00:00
* http: Add per-request headers option * http: Improve tests --------- Co-authored-by: Douile <douile@douile.com>
37 lines
1.1 KiB
Rust
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())
|
|
}
|