From: MegaBrutal Date: Sat, 18 Feb 2023 03:25:00 +0000 (+0100) Subject: Consolidate results to one struct X-Git-Tag: v0.2.0~7 X-Git-Url: http://git.megabrutal.com/?p=hlquery.git;a=commitdiff_plain;h=d9facf526fc0f13449c9f11934e2380f673c09d9 Consolidate results to one struct --- diff --git a/src/main.rs b/src/main.rs index 468c5e2..7821521 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,11 +2,28 @@ use std::fmt; use std::fmt::Display; use std::error::Error; use std::env::args; -use std::net::{SocketAddr, ToSocketAddrs}; +use std::net::{SocketAddr, SocketAddrV4, ToSocketAddrs}; use serde::{Serialize, Serializer}; use a2s::A2SClient; use crate::HLQueryError::A2SError; +#[derive(Debug, Serialize)] +struct HLQueryResult { + info: Result, + rules: Result, HLQueryError>, + players: Result, HLQueryError> +} + +impl HLQueryResult { + fn new(a2s_client: &A2SClient, server: SocketAddrV4) -> Self { + Self { + info: a2s_client.info(server).map_err(From::from), + rules: a2s_client.rules(server).map_err(From::from), + players: a2s_client.players(server).map_err(From::from) + } + } +} + #[derive(Debug)] enum HLQueryError { A2SError(a2s::errors::Error) @@ -52,13 +69,7 @@ fn main() { println!("Querying address: {}", address); - let result: Result = client.info(address).map_err(From::from); - println!("{}\n", serde_json::to_string_pretty(&result).unwrap()); - - let result: Result, HLQueryError> = client.rules(address).map_err(From::from); - println!("{}\n", serde_json::to_string_pretty(&result).unwrap()); - - let result: Result, HLQueryError> = client.players(address).map_err(From::from); + let result = HLQueryResult::new(&client, address); println!("{}\n", serde_json::to_string_pretty(&result).unwrap()); }