Оно работает!

Почищу код позже...
This commit is contained in:
Shiroyasha 2024-05-17 11:00:37 +03:00
parent 3fd49300db
commit b280da2742
Signed by: shiroyashik
GPG key ID: E4953D3940D7860A
14 changed files with 659 additions and 114 deletions

View file

@ -8,7 +8,8 @@ edition = "2021"
[dependencies]
anyhow = "1.0.83"
log = "0.4.21"
reqwest = "0.12.4"
reqwest = { version = "0.12.4" }
serde = { version = "1.0.201", features = ["derive"] }
serde_json = "1.0.117"
tokio = { version = "1.37.0", features = ["full"] }
uuid = "1.8.0"

View file

@ -1,14 +1,20 @@
use anyhow::{anyhow, Result};
use log::debug;
use serde_json::Value;
use uuid::Uuid;
pub async fn has_joined(server_id: &str, username: &str) -> Result<bool> {
pub async fn has_joined(server_id: &str, username: &str) -> Result<Option<Uuid>> {
let client = reqwest::Client::new();
let res = client.get(
format!("http://minecraft.ely.by/session/hasJoined?serverId={server_id}&username={username}")).send().await?;
debug!("{res:?}");
match res.status().as_u16() {
200 => Ok(true),
401 => Ok(false),
200 => {
let json = serde_json::from_str::<Value>(&res.text().await?)?;
let uuid = Uuid::parse_str(json["id"].as_str().unwrap())?;
Ok(Some(uuid))
},
401 => Ok(None),
_ => Err(anyhow!("Unknown code: {}", res.status().as_u16()))
}
}
@ -16,7 +22,7 @@ pub async fn has_joined(server_id: &str, username: &str) -> Result<bool> {
#[tokio::test]
async fn test_has_joined() {
let result = has_joined("0f8fef917f1f62b963804d822b67fe6f59aad7d", "test").await.unwrap();
assert_eq!(result, false)
assert_eq!(result, None)
}
// #[cfg(test)]