From d9facf526fc0f13449c9f11934e2380f673c09d9 Mon Sep 17 00:00:00 2001 From: MegaBrutal Date: Sat, 18 Feb 2023 04:25:00 +0100 Subject: [PATCH] Consolidate results to one struct --- src/main.rs | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) 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()); } -- 2.34.1