diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index b6a716b..58d5838 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -37,5 +37,20 @@ + + sqlite.xerial + true + org.sqlite.JDBC + jdbc:sqlite:D:\dev\code\mine\home-api\db.sqlite + $ProjectFileDir$ + + + file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.45.1/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar + + + file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.45.1/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar + + + \ No newline at end of file diff --git a/.idea/dictionaries/project.xml b/.idea/dictionaries/project.xml index 65f4cb9..e064d0a 100644 --- a/.idea/dictionaries/project.xml +++ b/.idea/dictionaries/project.xml @@ -2,6 +2,7 @@ gotify + hzer \ No newline at end of file diff --git a/packages/gotify-ws/Cargo.toml b/packages/gotify-ws/Cargo.toml index 3eec402..85d2d48 100644 --- a/packages/gotify-ws/Cargo.toml +++ b/packages/gotify-ws/Cargo.toml @@ -15,3 +15,4 @@ serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.142" tokio = { version = "1.47.0", features = ["full"] } tokio-tungstenite = { version = "0.27.0", features = ["native-tls"] } +regex = "1.11.1" diff --git a/packages/gotify-ws/src/main.rs b/packages/gotify-ws/src/main.rs index 40eedcb..b4d45ad 100644 --- a/packages/gotify-ws/src/main.rs +++ b/packages/gotify-ws/src/main.rs @@ -1,33 +1,39 @@ mod model; +mod tests; mod utils; use crate::model::ws::WsMessage; use futures::StreamExt; -use log::info; -use serde_json; +use log::{info, warn}; use tokio_tungstenite::connect_async; +use utils::logger; use utils::sql::sqlite::SqliteDB; -use utils::{logger, sql}; #[tokio::main] async fn main() { logger::init_logger(); const ADDR: &str = "wss://home.hzer.xyz/gotify/stream?token=CDIwYlYJuxWxVr5"; let (stream, _) = connect_async(ADDR).await.unwrap(); info!("Connected to Gotify server {ADDR}"); + let db = SqliteDB::new("db.sqlite").unwrap(); + db.create_table(); let (_, mut read) = stream.split(); while let Some(msg) = read.next().await { match msg { Ok(msg) => { let str = msg.to_text().unwrap(); - match serde_json::from_str::(&str) { + info!("Got message: {}", str); + if str.trim().is_empty() { + info!("监听到心跳{}", &msg); + continue; + } + + match serde_json::from_str::(str) { Ok(ws) => { info!("Got {} from Gotify", ws.message); - let db = SqliteDB::new("db.sqlite").unwrap(); - db.create_table(); } - Err(_) => { - info!("监听到心跳{}", &msg) + Err(e) => { + warn!("转换json失败{} -- {e}", &msg) } } } diff --git a/packages/gotify-ws/src/tests/mod.rs b/packages/gotify-ws/src/tests/mod.rs new file mode 100644 index 0000000..f663be3 --- /dev/null +++ b/packages/gotify-ws/src/tests/mod.rs @@ -0,0 +1,11 @@ +#[cfg(test)] +mod tests { + use regex::Regex; + + #[test] + fn validate_block_str() { + let regex = Regex::new(r"^\s+$").unwrap(); + assert_eq!(regex.is_match(" "), true); + assert_eq!(" ".trim().is_empty(), true) + } +}