From 88a4c821585982925582205ed6d24656b43847bc Mon Sep 17 00:00:00 2001 From: cosminperram Date: Sat, 22 Oct 2022 23:50:32 +0300 Subject: [PATCH] Removed examples, added a master_querant change gather_settings to none (representing all) --- .gitignore | 3 +++ examples/asrd.rs | 10 ---------- examples/csgo.rs | 10 ---------- examples/css.rs | 10 ---------- examples/dods.rs | 10 ---------- examples/gm.rs | 10 ---------- examples/hl2dm.rs | 10 ---------- examples/ins.rs | 10 ---------- examples/inss.rs | 10 ---------- examples/l4d.rs | 10 ---------- examples/l4d2.rs | 10 ---------- examples/master_querant.rs | 41 ++++++++++++++++++++++++++++++++++++++ examples/tf2.rs | 2 +- examples/ts.rs | 10 ---------- src/games/aliens.rs | 7 ++----- src/games/asrd.rs | 7 ++----- src/games/csgo.rs | 4 ++-- src/games/css.rs | 7 ++----- src/games/dods.rs | 7 ++----- src/games/gm.rs | 7 ++----- src/games/hl2dm.rs | 7 ++----- src/games/ins.rs | 7 ++----- src/games/inss.rs | 7 ++----- src/games/l4d.rs | 7 ++----- src/games/l4d2.rs | 7 ++----- src/games/tf2.rs | 7 ++----- src/games/ts.rs | 7 ++----- src/protocols/valve.rs | 15 +++++++++++--- 28 files changed, 83 insertions(+), 176 deletions(-) delete mode 100644 examples/asrd.rs delete mode 100644 examples/csgo.rs delete mode 100644 examples/css.rs delete mode 100644 examples/dods.rs delete mode 100644 examples/gm.rs delete mode 100644 examples/hl2dm.rs delete mode 100644 examples/ins.rs delete mode 100644 examples/inss.rs delete mode 100644 examples/l4d.rs delete mode 100644 examples/l4d2.rs create mode 100644 examples/master_querant.rs delete mode 100644 examples/ts.rs diff --git a/.gitignore b/.gitignore index 579ce9a..23f7216 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ Cargo.lock # Others .idea/ +.venv/ + +test_everything.py diff --git a/examples/asrd.rs b/examples/asrd.rs deleted file mode 100644 index d0256a3..0000000 --- a/examples/asrd.rs +++ /dev/null @@ -1,10 +0,0 @@ - -use gamedig::games::asrd; - -fn main() { - let response = asrd::query("5.199.135.237", Some(30000)); - match response { - Err(error) => println!("Couldn't query, error: {error}"), - Ok(r) => println!("{:?}", r) - } -} diff --git a/examples/csgo.rs b/examples/csgo.rs deleted file mode 100644 index ca3512e..0000000 --- a/examples/csgo.rs +++ /dev/null @@ -1,10 +0,0 @@ - -use gamedig::games::csgo; - -fn main() { - let response = csgo::query("216.52.148.47", None); - match response { - Err(error) => println!("Couldn't query, error: {error}"), - Ok(r) => println!("{:?}", r) - } -} diff --git a/examples/css.rs b/examples/css.rs deleted file mode 100644 index 53aea99..0000000 --- a/examples/css.rs +++ /dev/null @@ -1,10 +0,0 @@ - -use gamedig::games::css; - -fn main() { - let response = css::query("104.128.58.206", None); - match response { - Err(error) => println!("Couldn't query, error: {error}"), - Ok(r) => println!("{:?}", r) - } -} diff --git a/examples/dods.rs b/examples/dods.rs deleted file mode 100644 index d5ebf40..0000000 --- a/examples/dods.rs +++ /dev/null @@ -1,10 +0,0 @@ - -use gamedig::games::dods; - -fn main() { - let response = dods::query("88.99.28.151", Some(27055)); - match response { - Err(error) => println!("Couldn't query, error: {error}"), - Ok(r) => println!("{:?}", r) - } -} diff --git a/examples/gm.rs b/examples/gm.rs deleted file mode 100644 index 0ce21bb..0000000 --- a/examples/gm.rs +++ /dev/null @@ -1,10 +0,0 @@ - -use gamedig::games::gm; - -fn main() { - let response = gm::query("148.59.74.84", None); - match response { - Err(error) => println!("Couldn't query, error: {error}"), - Ok(r) => println!("{:?}", r) - } -} diff --git a/examples/hl2dm.rs b/examples/hl2dm.rs deleted file mode 100644 index 49d642e..0000000 --- a/examples/hl2dm.rs +++ /dev/null @@ -1,10 +0,0 @@ - -use gamedig::games::hl2dm; - -fn main() { - let response = hl2dm::query("74.91.118.209", None); - match response { - Err(error) => println!("Couldn't query, error: {error}"), - Ok(r) => println!("{:?}", r) - } -} diff --git a/examples/ins.rs b/examples/ins.rs deleted file mode 100644 index 5eb9882..0000000 --- a/examples/ins.rs +++ /dev/null @@ -1,10 +0,0 @@ - -use gamedig::games::ins; - -fn main() { - let response = ins::query("101.100.139.94", Some(27016)); - match response { - Err(error) => println!("Couldn't query, error: {error}"), - Ok(r) => println!("{:?}", r) - } -} diff --git a/examples/inss.rs b/examples/inss.rs deleted file mode 100644 index ce88c6e..0000000 --- a/examples/inss.rs +++ /dev/null @@ -1,10 +0,0 @@ - -use gamedig::games::inss; - -fn main() { - let response = inss::query("109.195.19.160", None); //The query port, not the server port - match response { - Err(error) => println!("Couldn't query, error: {error}"), - Ok(r) => println!("{:?}", r) - } -} diff --git a/examples/l4d.rs b/examples/l4d.rs deleted file mode 100644 index 4c0895d..0000000 --- a/examples/l4d.rs +++ /dev/null @@ -1,10 +0,0 @@ - -use gamedig::games::l4d; - -fn main() { - let response = l4d::query("207.246.72.170", Some(26999)); - match response { - Err(error) => println!("Couldn't query, error: {error}"), - Ok(r) => println!("{:?}", r) - } -} diff --git a/examples/l4d2.rs b/examples/l4d2.rs deleted file mode 100644 index 754815b..0000000 --- a/examples/l4d2.rs +++ /dev/null @@ -1,10 +0,0 @@ - -use gamedig::games::l4d2; - -fn main() { - let response = l4d2::query("74.91.124.246", None); - match response { - Err(error) => println!("Couldn't query, error: {error}"), - Ok(r) => println!("{:?}", r) - } -} diff --git a/examples/master_querant.rs b/examples/master_querant.rs new file mode 100644 index 0000000..7be4b89 --- /dev/null +++ b/examples/master_querant.rs @@ -0,0 +1,41 @@ + +use std::env; +use gamedig::{aliens, asrd, csgo, css, dods, gm, hl2dm, ins, inss, l4d, l4d2, tf2, ts}; + +fn main() { + let args: Vec = env::args().collect(); + + if args.len() == 1 || args[1] == "help".to_string() { + println!("Usage: "); + println!(" - any game, example: tf2"); + println!(" - an ip, example: 192.168.0.0"); + println!(" - an port, optional, example: 27015"); + return; + } else if args.len() < 3 { + println!("Minimum number of arguments: 3, try 'help' to see the details."); + return; + } + + let ip = args[2].as_str(); + let port = match args.len() == 4 { + false => None, + true => Some(args[3].parse::().expect("Invalid port!")) + }; + + match args[1].as_str() { + "aliens" => println!("{:?}", aliens::query(ip, port)), + "asrd" => println!("{:?}", asrd::query(ip, port)), + "csgo" => println!("{:?}", csgo::query(ip, port)), + "css" => println!("{:?}", css::query(ip, port)), + "dods" => println!("{:?}", dods::query(ip, port)), + "gm" => println!("{:?}", gm::query(ip, port)), + "hl2dm" => println!("{:?}", hl2dm::query(ip, port)), + "tf2" => println!("{:?}", tf2::query(ip, port)), + "ins" => println!("{:?}", ins::query(ip, port)), + "inss" => println!("{:?}", inss::query(ip, port)), + "l4d" => println!("{:?}", l4d::query(ip, port)), + "l4d2" => println!("{:?}", l4d2::query(ip, port)), + "ts" => println!("{:?}", ts::query(ip, port)), + _ => panic!("Undefined game: {}", args[1]) + }; +} diff --git a/examples/tf2.rs b/examples/tf2.rs index f0fc2ec..eb8c70a 100644 --- a/examples/tf2.rs +++ b/examples/tf2.rs @@ -2,7 +2,7 @@ use gamedig::games::tf2; fn main() { - let response = tf2::query("91.216.250.10", None); //or Some(27015), None is the default protocol port + let response = tf2::query("cosminperram.com", None); //or Some(27015), None is the default protocol port (which is 27015) match response { Err(error) => println!("Couldn't query, error: {error}"), Ok(r) => println!("{:?}", r) diff --git a/examples/ts.rs b/examples/ts.rs deleted file mode 100644 index 5c97974..0000000 --- a/examples/ts.rs +++ /dev/null @@ -1,10 +0,0 @@ - -use gamedig::games::ts; - -fn main() { - let response = ts::query("46.4.48.226", Some(27017)); - match response { - Err(error) => println!("Couldn't query, error: {error}"), - Ok(r) => println!("{:?}", r) - } -} diff --git a/src/games/aliens.rs b/src/games/aliens.rs index 17838cc..6daa58f 100644 --- a/src/games/aliens.rs +++ b/src/games/aliens.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, Server, ServerRule, ServerPlayer}; +use crate::valve::{ValveProtocol, App, Server, ServerRule, ServerPlayer}; #[derive(Debug)] pub struct Player { @@ -74,10 +74,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::ALIENS, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/asrd.rs b/src/games/asrd.rs index a3d3963..6849381 100644 --- a/src/games/asrd.rs +++ b/src/games/asrd.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, Server, ServerRule, ServerPlayer}; +use crate::valve::{ValveProtocol, App, Server, ServerRule, ServerPlayer}; #[derive(Debug)] pub struct Player { @@ -74,10 +74,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::ASRD, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/csgo.rs b/src/games/csgo.rs index 3419228..1de0abb 100644 --- a/src/games/csgo.rs +++ b/src/games/csgo.rs @@ -72,10 +72,10 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::CSGO, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { + }, Some(GatheringSettings { players: true, rules: false // cause csgo doesnt reply with rules anymore - })?; + }))?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/css.rs b/src/games/css.rs index 9e23ad6..11d6341 100644 --- a/src/games/css.rs +++ b/src/games/css.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, Server, ServerRule, ServerPlayer}; +use crate::valve::{ValveProtocol, App, Server, ServerRule, ServerPlayer}; #[derive(Debug)] pub struct Player { @@ -74,10 +74,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::CSS, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/dods.rs b/src/games/dods.rs index e535a3c..9a2eff5 100644 --- a/src/games/dods.rs +++ b/src/games/dods.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, Server, ServerRule, ServerPlayer}; +use crate::valve::{ValveProtocol, App, Server, ServerRule, ServerPlayer}; #[derive(Debug)] pub struct Player { @@ -74,10 +74,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::DODS, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/gm.rs b/src/games/gm.rs index 12c4a90..fcd5d08 100644 --- a/src/games/gm.rs +++ b/src/games/gm.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, Server, ServerRule, ServerPlayer}; +use crate::valve::{ValveProtocol, App, Server, ServerRule, ServerPlayer}; #[derive(Debug)] pub struct Player { @@ -74,10 +74,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::GM, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/hl2dm.rs b/src/games/hl2dm.rs index 2ddf874..2f45195 100644 --- a/src/games/hl2dm.rs +++ b/src/games/hl2dm.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, Server, ServerRule, ServerPlayer}; +use crate::valve::{ValveProtocol, App, Server, ServerRule, ServerPlayer}; #[derive(Debug)] pub struct Player { @@ -74,10 +74,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::HL2DM, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/ins.rs b/src/games/ins.rs index 627ade8..07f2f43 100644 --- a/src/games/ins.rs +++ b/src/games/ins.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, Server, ServerRule, ServerPlayer}; +use crate::valve::{ValveProtocol, App, Server, ServerRule, ServerPlayer}; #[derive(Debug)] pub struct Player { @@ -74,10 +74,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::INS, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/inss.rs b/src/games/inss.rs index af844d3..3cd1325 100644 --- a/src/games/inss.rs +++ b/src/games/inss.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, Server, ServerRule, ServerPlayer}; +use crate::valve::{ValveProtocol, App, Server, ServerRule, ServerPlayer}; #[derive(Debug)] pub struct Player { @@ -74,10 +74,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::INSS, address, match port { None => 27131, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/l4d.rs b/src/games/l4d.rs index deb42e5..38e652c 100644 --- a/src/games/l4d.rs +++ b/src/games/l4d.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, Server, ServerRule, ServerPlayer}; +use crate::valve::{ValveProtocol, App, Server, ServerRule, ServerPlayer}; #[derive(Debug)] pub struct Player { @@ -74,10 +74,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::L4D, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/l4d2.rs b/src/games/l4d2.rs index 45a3e43..20f046d 100644 --- a/src/games/l4d2.rs +++ b/src/games/l4d2.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, Server, ServerRule, ServerPlayer}; +use crate::valve::{ValveProtocol, App, Server, ServerRule, ServerPlayer}; #[derive(Debug)] pub struct Player { @@ -74,10 +74,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::L4D2, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/tf2.rs b/src/games/tf2.rs index 56a5c1e..1af77c7 100644 --- a/src/games/tf2.rs +++ b/src/games/tf2.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, Server, ServerRule, ServerPlayer}; +use crate::valve::{ValveProtocol, App, Server, ServerRule, ServerPlayer}; #[derive(Debug)] pub struct Player { @@ -74,10 +74,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::TF2, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/games/ts.rs b/src/games/ts.rs index d9195eb..7ede50b 100644 --- a/src/games/ts.rs +++ b/src/games/ts.rs @@ -1,5 +1,5 @@ use crate::{GDResult, valve}; -use crate::valve::{ValveProtocol, App, GatheringSettings, ServerPlayer, Server, ServerRule}; +use crate::valve::{ValveProtocol, App, ServerPlayer, Server, ServerRule}; #[derive(Debug)] pub struct Player { @@ -86,10 +86,7 @@ pub fn query(address: &str, port: Option) -> GDResult { let valve_response = ValveProtocol::query(App::TS, address, match port { None => 27015, Some(port) => port - }, GatheringSettings { - players: true, - rules: true - })?; + }, None)?; Ok(Response::new_from_valve_response(valve_response)) } diff --git a/src/protocols/valve.rs b/src/protocols/valve.rs index f36a07b..053bed6 100644 --- a/src/protocols/valve.rs +++ b/src/protocols/valve.rs @@ -499,7 +499,8 @@ impl ValveProtocol { Ok(Some(rules)) } - pub(crate) fn query(app: App, address: &str, port: u16, gather: GatheringSettings) -> Result { + /// Query any app. + pub fn query(app: App, address: &str, port: u16, gather_settings: Option) -> Result { let client = ValveProtocol::new(address, port)?; let info = client.get_server_info(&app)?; @@ -509,13 +510,21 @@ impl ValveProtocol { return Err(GDError::BadGame(format!("Expected {}, found {} instead!", query_app_id, info.appid))); } + let (gather_players, gather_rules) = match gather_settings.is_some() { + false => (true, true), + true => { + let settings = gather_settings.unwrap(); + (settings.players, settings.rules) + } + }; + Ok(Response { info, - players: match gather.players { + players: match gather_players { false => None, true => Some(client.get_server_players(&app)?) }, - rules: match gather.rules { + rules: match gather_rules { false => None, true => client.get_server_rules(&app)? }