It started working!
This commit is contained in:
parent
fb42d4affd
commit
903647c8df
54
src/main.rs
54
src/main.rs
@ -1,5 +1,35 @@
|
|||||||
use futures_util::stream::TryStreamExt;
|
use futures_util::stream::TryStreamExt;
|
||||||
use zbus::{Connection, Result};
|
use std::collections::HashMap;
|
||||||
|
use zbus::{message::Body, Connection, Result};
|
||||||
|
use zvariant::OwnedValue;
|
||||||
|
|
||||||
|
fn print_notif(msg_body: Body) -> Result<()> {
|
||||||
|
// Deserialize the message body to the expected tuple
|
||||||
|
let (app_name, replace_id, icon, summary, body, actions, hints, expir_timeout): (
|
||||||
|
String,
|
||||||
|
u32,
|
||||||
|
String,
|
||||||
|
String,
|
||||||
|
String,
|
||||||
|
Vec<String>,
|
||||||
|
HashMap<String, OwnedValue>,
|
||||||
|
i32,
|
||||||
|
) = msg_body.deserialize()?;
|
||||||
|
// Print the notification details
|
||||||
|
println!("App Name: {app_name}");
|
||||||
|
println!("Replace ID: {replace_id}");
|
||||||
|
println!("Icon: {icon}");
|
||||||
|
println!("Summary: {summary}");
|
||||||
|
println!("Body: {body}");
|
||||||
|
println!("Actions: {actions:?}");
|
||||||
|
println!("Hints:");
|
||||||
|
for (key, value) in hints {
|
||||||
|
println!(" {key}: {value:?}");
|
||||||
|
}
|
||||||
|
println!("Expiration Timeout: {expir_timeout} seconds");
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> Result<()> {
|
async fn main() -> Result<()> {
|
||||||
@ -13,19 +43,27 @@ async fn main() -> Result<()> {
|
|||||||
while let Some(msg) = stream.try_next().await? {
|
while let Some(msg) = stream.try_next().await? {
|
||||||
// Check if the message is a method call to the "Notify" method
|
// Check if the message is a method call to the "Notify" method
|
||||||
if let Some(member) = msg.header().member().map(|m| m.as_str()) {
|
if let Some(member) = msg.header().member().map(|m| m.as_str()) {
|
||||||
if member == "GetServerInformation" {
|
match member {
|
||||||
println!("Member is: {}", member);
|
"GetServerInformation" => {
|
||||||
|
println!("Member is: {member}");
|
||||||
// Respond with server information
|
// Respond with server information
|
||||||
let response = ("SNot", "candifloss.cc", "0.1.0", "1.0"); // (name, vendor, version, spec_version)
|
let response = ("SNot", "candifloss.cc", "0.1.0", "1.0"); // (name, vendor, version, spec_version)
|
||||||
connection.reply(&msg, &response).await?;
|
connection.reply(&msg, &response).await?;
|
||||||
} else if member == "Notify" {
|
}
|
||||||
println!("Member is: {}", member);
|
"Notify" => {
|
||||||
// Respond with a notification ID (usually a unique number)
|
println!("Member is: {member}");
|
||||||
|
// Handle notif
|
||||||
|
let msg_body = msg.body();
|
||||||
|
// get the app_name, summary, body, etc. from the msg_body and print it
|
||||||
|
let _ = print_notif(msg_body);
|
||||||
|
// Done. Respond with a notification ID
|
||||||
let notification_id: u32 = 1; // This could be incremented or generated
|
let notification_id: u32 = 1; // This could be incremented or generated
|
||||||
connection.reply(&msg, ¬ification_id).await?;
|
connection.reply(&msg, ¬ification_id).await?;
|
||||||
} else {
|
|
||||||
println!("Unhandled method: {}", member);
|
|
||||||
}
|
}
|
||||||
|
_ => {
|
||||||
|
println!("Unhandled method: {member}");
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user