Protocol: Minecraft: Rename java's response struct to JavaResponse

This commit is contained in:
CosminPerRam 2023-01-17 01:21:17 +02:00
parent f2ae81002e
commit 21a27fd9cc
7 changed files with 32 additions and 32 deletions

View file

@ -1,15 +1,15 @@
use crate::{GDError, GDResult}; use crate::{GDError, GDResult};
use crate::protocols::minecraft; use crate::protocols::minecraft;
use crate::protocols::minecraft::{Response, LegacyGroup, BedrockResponse}; use crate::protocols::minecraft::{JavaResponse, LegacyGroup, BedrockResponse};
/// Query with all the protocol variants one by one (Java -> Bedrock -> Legacy (1.6 -> 1.4 -> Beta 1.8)). /// Query with all the protocol variants one by one (Java -> Bedrock -> Legacy (1.6 -> 1.4 -> Beta 1.8)).
pub fn query(address: &str, port: Option<u16>) -> GDResult<Response> { pub fn query(address: &str, port: Option<u16>) -> GDResult<JavaResponse> {
if let Ok(response) = query_java(address, port) { if let Ok(response) = query_java(address, port) {
return Ok(response); return Ok(response);
} }
if let Ok(response) = query_bedrock(address, port) { if let Ok(response) = query_bedrock(address, port) {
return Ok(Response::from_bedrock_response(response)); return Ok(JavaResponse::from_bedrock_response(response));
} }
if let Ok(response) = query_legacy(address, port) { if let Ok(response) = query_legacy(address, port) {
@ -20,17 +20,17 @@ pub fn query(address: &str, port: Option<u16>) -> GDResult<Response> {
} }
/// Query a Java Server. /// Query a Java Server.
pub fn query_java(address: &str, port: Option<u16>) -> GDResult<Response> { pub fn query_java(address: &str, port: Option<u16>) -> GDResult<JavaResponse> {
minecraft::query_java(address, port_or_java_default(port), None) minecraft::query_java(address, port_or_java_default(port), None)
} }
/// Query a (Java) Legacy Server (1.6 -> 1.4 -> Beta 1.8). /// Query a (Java) Legacy Server (1.6 -> 1.4 -> Beta 1.8).
pub fn query_legacy(address: &str, port: Option<u16>) -> GDResult<Response> { pub fn query_legacy(address: &str, port: Option<u16>) -> GDResult<JavaResponse> {
minecraft::query_legacy(address, port_or_java_default(port), None) minecraft::query_legacy(address, port_or_java_default(port), None)
} }
/// Query a specific (Java) Legacy Server. /// Query a specific (Java) Legacy Server.
pub fn query_legacy_specific(group: LegacyGroup, address: &str, port: Option<u16>) -> GDResult<Response> { pub fn query_legacy_specific(group: LegacyGroup, address: &str, port: Option<u16>) -> GDResult<JavaResponse> {
minecraft::query_legacy_specific(group, address, port_or_java_default(port), None) minecraft::query_legacy_specific(group, address, port_or_java_default(port), None)
} }

View file

@ -2,7 +2,7 @@ use serde_json::Value;
use crate::GDResult; use crate::GDResult;
use crate::GDError::{JsonParse, PacketBad}; use crate::GDError::{JsonParse, PacketBad};
use crate::bufferer::{Bufferer, Endianess}; use crate::bufferer::{Bufferer, Endianess};
use crate::protocols::minecraft::{as_varint, get_string, get_varint, Player, Response, Server}; use crate::protocols::minecraft::{as_varint, get_string, get_varint, Player, JavaResponse, Server};
use crate::protocols::types::TimeoutSettings; use crate::protocols::types::TimeoutSettings;
use crate::socket::{Socket, TcpSocket}; use crate::socket::{Socket, TcpSocket};
@ -65,7 +65,7 @@ impl Java {
Ok(()) Ok(())
} }
fn get_info(&mut self) -> GDResult<Response> { fn get_info(&mut self) -> GDResult<JavaResponse> {
self.send_handshake()?; self.send_handshake()?;
self.send_status_request()?; self.send_status_request()?;
self.send_ping_request()?; self.send_ping_request()?;
@ -107,7 +107,7 @@ impl Java {
}) })
}; };
Ok(Response { Ok(JavaResponse {
version_name, version_name,
version_protocol, version_protocol,
players_maximum: max_players, players_maximum: max_players,
@ -121,7 +121,7 @@ impl Java {
}) })
} }
pub fn query(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> { pub fn query(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
Java::new(address, port, timeout_settings)?.get_info() Java::new(address, port, timeout_settings)?.get_info()
} }
} }

View file

@ -2,7 +2,7 @@
use crate::GDResult; use crate::GDResult;
use crate::bufferer::{Bufferer, Endianess}; use crate::bufferer::{Bufferer, Endianess};
use crate::GDError::{PacketBad, ProtocolFormat}; use crate::GDError::{PacketBad, ProtocolFormat};
use crate::protocols::minecraft::{LegacyGroup, Response, Server}; use crate::protocols::minecraft::{LegacyGroup, JavaResponse, Server};
use crate::protocols::types::TimeoutSettings; use crate::protocols::types::TimeoutSettings;
use crate::socket::{Socket, TcpSocket}; use crate::socket::{Socket, TcpSocket};
use crate::utils::error_by_expected_size; use crate::utils::error_by_expected_size;
@ -25,7 +25,7 @@ impl LegacyBV1_8 {
self.socket.send(&[0xFE]) self.socket.send(&[0xFE])
} }
fn get_info(&mut self) -> GDResult<Response> { fn get_info(&mut self) -> GDResult<JavaResponse> {
self.send_initial_request()?; self.send_initial_request()?;
let mut buffer = Bufferer::new_with_data(Endianess::Big, &self.socket.receive(None)?); let mut buffer = Bufferer::new_with_data(Endianess::Big, &self.socket.receive(None)?);
@ -48,7 +48,7 @@ impl LegacyBV1_8 {
let max_players = split[2].parse() let max_players = split[2].parse()
.map_err(|_| PacketBad)?; .map_err(|_| PacketBad)?;
Ok(Response { Ok(JavaResponse {
version_name: "Beta 1.8+".to_string(), version_name: "Beta 1.8+".to_string(),
version_protocol: -1, version_protocol: -1,
players_maximum: max_players, players_maximum: max_players,
@ -62,7 +62,7 @@ impl LegacyBV1_8 {
}) })
} }
pub fn query(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> { pub fn query(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
LegacyBV1_8::new(address, port, timeout_settings)?.get_info() LegacyBV1_8::new(address, port, timeout_settings)?.get_info()
} }
} }

View file

@ -2,7 +2,7 @@
use crate::GDResult; use crate::GDResult;
use crate::bufferer::{Bufferer, Endianess}; use crate::bufferer::{Bufferer, Endianess};
use crate::GDError::{PacketBad, ProtocolFormat}; use crate::GDError::{PacketBad, ProtocolFormat};
use crate::protocols::minecraft::{LegacyGroup, Response, Server}; use crate::protocols::minecraft::{LegacyGroup, JavaResponse, Server};
use crate::protocols::minecraft::protocol::legacy_v1_6::LegacyV1_6; use crate::protocols::minecraft::protocol::legacy_v1_6::LegacyV1_6;
use crate::protocols::types::TimeoutSettings; use crate::protocols::types::TimeoutSettings;
use crate::socket::{Socket, TcpSocket}; use crate::socket::{Socket, TcpSocket};
@ -26,7 +26,7 @@ impl LegacyV1_4 {
self.socket.send(&[0xFE, 0x01]) self.socket.send(&[0xFE, 0x01])
} }
fn get_info(&mut self) -> GDResult<Response> { fn get_info(&mut self) -> GDResult<JavaResponse> {
self.send_initial_request()?; self.send_initial_request()?;
let mut buffer = Bufferer::new_with_data(Endianess::Big, &self.socket.receive(None)?); let mut buffer = Bufferer::new_with_data(Endianess::Big, &self.socket.receive(None)?);
@ -53,7 +53,7 @@ impl LegacyV1_4 {
let max_players = split[2].parse() let max_players = split[2].parse()
.map_err(|_| PacketBad)?; .map_err(|_| PacketBad)?;
Ok(Response { Ok(JavaResponse {
version_name: "1.4+".to_string(), version_name: "1.4+".to_string(),
version_protocol: -1, version_protocol: -1,
players_maximum: max_players, players_maximum: max_players,
@ -67,7 +67,7 @@ impl LegacyV1_4 {
}) })
} }
pub fn query(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> { pub fn query(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
LegacyV1_4::new(address, port, timeout_settings)?.get_info() LegacyV1_4::new(address, port, timeout_settings)?.get_info()
} }
} }

View file

@ -1,7 +1,7 @@
use crate::GDResult; use crate::GDResult;
use crate::GDError::{PacketBad, ProtocolFormat}; use crate::GDError::{PacketBad, ProtocolFormat};
use crate::bufferer::{Bufferer, Endianess}; use crate::bufferer::{Bufferer, Endianess};
use crate::protocols::minecraft::{LegacyGroup, Response, Server}; use crate::protocols::minecraft::{LegacyGroup, JavaResponse, Server};
use crate::protocols::types::TimeoutSettings; use crate::protocols::types::TimeoutSettings;
use crate::socket::{Socket, TcpSocket}; use crate::socket::{Socket, TcpSocket};
use crate::utils::error_by_expected_size; use crate::utils::error_by_expected_size;
@ -46,7 +46,7 @@ impl LegacyV1_6 {
Ok(state) Ok(state)
} }
pub fn get_response(buffer: &mut Bufferer) -> GDResult<Response> { pub fn get_response(buffer: &mut Bufferer) -> GDResult<JavaResponse> {
let packet_string = buffer.get_string_utf16()?; let packet_string = buffer.get_string_utf16()?;
let split: Vec<&str> = packet_string.split("\x00").collect(); let split: Vec<&str> = packet_string.split("\x00").collect();
@ -61,7 +61,7 @@ impl LegacyV1_6 {
let max_players = split[4].parse() let max_players = split[4].parse()
.map_err(|_| PacketBad)?; .map_err(|_| PacketBad)?;
Ok(Response { Ok(JavaResponse {
version_name, version_name,
version_protocol, version_protocol,
players_maximum: max_players, players_maximum: max_players,
@ -75,7 +75,7 @@ impl LegacyV1_6 {
}) })
} }
fn get_info(&mut self) -> GDResult<Response> { fn get_info(&mut self) -> GDResult<JavaResponse> {
self.send_initial_request()?; self.send_initial_request()?;
let mut buffer = Bufferer::new_with_data(Endianess::Big, &self.socket.receive(None)?); let mut buffer = Bufferer::new_with_data(Endianess::Big, &self.socket.receive(None)?);
@ -94,7 +94,7 @@ impl LegacyV1_6 {
LegacyV1_6::get_response(&mut buffer) LegacyV1_6::get_response(&mut buffer)
} }
pub fn query(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> { pub fn query(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
LegacyV1_6::new(address, port, timeout_settings)?.get_info() LegacyV1_6::new(address, port, timeout_settings)?.get_info()
} }
} }

View file

@ -1,6 +1,6 @@
use crate::GDError::AutoQuery; use crate::GDError::AutoQuery;
use crate::GDResult; use crate::GDResult;
use crate::protocols::minecraft::{BedrockResponse, LegacyGroup, Response}; use crate::protocols::minecraft::{BedrockResponse, LegacyGroup, JavaResponse};
use crate::protocols::minecraft::protocol::bedrock::Bedrock; use crate::protocols::minecraft::protocol::bedrock::Bedrock;
use crate::protocols::minecraft::protocol::java::Java; use crate::protocols::minecraft::protocol::java::Java;
use crate::protocols::minecraft::protocol::legacy_v1_4::LegacyV1_4; use crate::protocols::minecraft::protocol::legacy_v1_4::LegacyV1_4;
@ -15,13 +15,13 @@ mod legacy_bv1_8;
mod bedrock; mod bedrock;
/// Queries a Minecraft server with all the protocol variants one by one (Java -> Bedrock -> Legacy (1.6 -> 1.4 -> Beta 1.8)). /// Queries a Minecraft server with all the protocol variants one by one (Java -> Bedrock -> Legacy (1.6 -> 1.4 -> Beta 1.8)).
pub fn query(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> { pub fn query(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
if let Ok(response) = query_java(address, port, timeout_settings.clone()) { if let Ok(response) = query_java(address, port, timeout_settings.clone()) {
return Ok(response); return Ok(response);
} }
if let Ok(response) = query_bedrock(address, port, timeout_settings.clone()) { if let Ok(response) = query_bedrock(address, port, timeout_settings.clone()) {
return Ok(Response::from_bedrock_response(response)); return Ok(JavaResponse::from_bedrock_response(response));
} }
if let Ok(response) = query_legacy(address, port, timeout_settings) { if let Ok(response) = query_legacy(address, port, timeout_settings) {
@ -32,12 +32,12 @@ pub fn query(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>
} }
/// Query a Java Server. /// Query a Java Server.
pub fn query_java(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> { pub fn query_java(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
Java::query(address, port, timeout_settings) Java::query(address, port, timeout_settings)
} }
/// Query a (Java) Legacy Server (1.6 -> 1.4 -> Beta 1.8). /// Query a (Java) Legacy Server (1.6 -> 1.4 -> Beta 1.8).
pub fn query_legacy(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> { pub fn query_legacy(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
if let Ok(response) = query_legacy_specific(LegacyGroup::V1_6, address, port, timeout_settings.clone()) { if let Ok(response) = query_legacy_specific(LegacyGroup::V1_6, address, port, timeout_settings.clone()) {
return Ok(response); return Ok(response);
} }
@ -54,7 +54,7 @@ pub fn query_legacy(address: &str, port: u16, timeout_settings: Option<TimeoutSe
} }
/// Query a specific (Java) Legacy Server. /// Query a specific (Java) Legacy Server.
pub fn query_legacy_specific(group: LegacyGroup, address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> { pub fn query_legacy_specific(group: LegacyGroup, address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
match group { match group {
LegacyGroup::V1_6 => LegacyV1_6::query(address, port, timeout_settings), LegacyGroup::V1_6 => LegacyV1_6::query(address, port, timeout_settings),
LegacyGroup::V1_4 => LegacyV1_4::query(address, port, timeout_settings), LegacyGroup::V1_4 => LegacyV1_4::query(address, port, timeout_settings),

View file

@ -38,9 +38,9 @@ pub struct Player {
pub id: String pub id: String
} }
/// A query response. /// A Java query response.
#[derive(Debug)] #[derive(Debug)]
pub struct Response { pub struct JavaResponse {
/// Version name, example: "1.19.2". /// Version name, example: "1.19.2".
pub version_name: String, pub version_name: String,
/// Version protocol, example: 760 (for 1.19.2). /// Version protocol, example: 760 (for 1.19.2).
@ -88,7 +88,7 @@ pub struct BedrockResponse {
pub server_type: Server pub server_type: Server
} }
impl Response { impl JavaResponse {
pub fn from_bedrock_response(response: BedrockResponse) -> Self { pub fn from_bedrock_response(response: BedrockResponse) -> Self {
Self { Self {
version_name: response.version_name, version_name: response.version_name,