diff --git a/packages/gotify-ws/Cargo.toml b/packages/gotify-ws/Cargo.toml index 0b2ea66..9560bfd 100644 --- a/packages/gotify-ws/Cargo.toml +++ b/packages/gotify-ws/Cargo.toml @@ -7,5 +7,7 @@ edition = "2024" env_logger = "0.11.8" futures = "0.3.31" log = "0.4.27" +serde = { version = "1.0.219", features = ["derive"] } +serde_json = "1.0.133" tokio = { version = "1.47.0", features = ["full"] } tokio-tungstenite = { version = "0.27.0", features = ["native-tls"] } diff --git a/packages/gotify-ws/src/main.rs b/packages/gotify-ws/src/main.rs index 62ca78d..ae3cec1 100644 --- a/packages/gotify-ws/src/main.rs +++ b/packages/gotify-ws/src/main.rs @@ -1,9 +1,12 @@ mod utils; +mod model; use futures::StreamExt; use log::info; +use serde_json; use tokio_tungstenite::connect_async; use utils::logger; +use crate::model::ws::WsMessage; #[tokio::main] async fn main() { @@ -16,7 +19,26 @@ async fn main() { let (_, mut read) = stream.split(); while let Some(msg) = read.next().await { - info!("Received message: {msg:?}"); + match msg { + Ok(tokio_tungstenite::tungstenite::Message::Text(text)) => { + info!("Received text message: {}", text); + match serde_json::from_str::(&text) { + Ok(ws_msg) => { + info!("Parsed message: {ws_msg:?}"); + } + Err(e) => { + info!("Failed to parse message: {e}"); + } + } + } + Ok(other_msg) => { + info!("Received non-text message: {other_msg:?}"); + } + Err(e) => { + info!("Error receiving message: {e}"); + break; + } + } } } Err(e) => { diff --git a/packages/gotify-ws/src/model/mod.rs b/packages/gotify-ws/src/model/mod.rs new file mode 100644 index 0000000..b5da5ee --- /dev/null +++ b/packages/gotify-ws/src/model/mod.rs @@ -0,0 +1 @@ +pub mod ws; \ No newline at end of file diff --git a/packages/gotify-ws/src/model/ws.rs b/packages/gotify-ws/src/model/ws.rs new file mode 100644 index 0000000..e122233 --- /dev/null +++ b/packages/gotify-ws/src/model/ws.rs @@ -0,0 +1,9 @@ +#[derive(Debug, serde::Deserialize)] +pub struct WsMessage { + id: u64, + appid: u64, + message: String, + title: String, + priority: u64, + date: String, +}