From b1c4fb838fc92ea3b4b49671227e9d11339d8e64 Mon Sep 17 00:00:00 2001
From: huangzhe <3451701311@qq.com>
Date: Sat, 2 Aug 2025 08:32:38 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=AD=A3=E5=88=99?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=A4=84=E7=90=86,=20=E5=BF=83=E8=B7=B3?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=8D=95=E7=8B=AC=E5=A4=84=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/dataSources.xml | 15 +++++++++++++++
.idea/dictionaries/project.xml | 1 +
packages/gotify-ws/Cargo.toml | 1 +
packages/gotify-ws/src/main.rs | 22 ++++++++++++++--------
packages/gotify-ws/src/tests/mod.rs | 11 +++++++++++
5 files changed, 42 insertions(+), 8 deletions(-)
create mode 100644 packages/gotify-ws/src/tests/mod.rs
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)
+ }
+}