Skip to main content

mixed_usage/
mixed_usage.rs

1use bark_rs::{BarkMessage, Level, SyncBarkClient};
2
3#[cfg(feature = "async")]
4use bark_rs::AsyncBarkClient;
5
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7    println!("🔀 演示混合使用场景");
8
9    // 创建一个消息,可以被不同的客户端使用
10    let shared_message = BarkMessage::builder()
11        .device_key("QJ48vPutCAsPW2B6pE2A3a")
12        .title("共享消息")
13        .body("这个消息可以被同步和异步客户端共用")
14        .level(Level::Active)
15        .sound("telegraph")
16        .build();
17
18    // 使用同步客户端发送
19    let sync_client = SyncBarkClient::new("https://api.day.app");
20    let sync_response = sync_client.send(&shared_message)?;
21    println!("✅ 同步发送成功: {}", sync_response.message);
22
23    // 如果启用了异步功能,演示异步发送
24    #[cfg(feature = "async")]
25    {
26        println!("🔄 也可以在异步环境中使用...");
27        let rt = tokio::runtime::Runtime::new()?;
28        rt.block_on(async {
29            let async_client = AsyncBarkClient::new("https://api.day.app");
30            match async_client.send(&shared_message).await {
31                Ok(response) => println!("✅ 异步发送成功: {}", response.message),
32                Err(e) => println!("❌ 异步发送失败: {}", e),
33            }
34        });
35    }
36
37    #[cfg(not(feature = "async"))]
38    {
39        println!("ℹ️  如需异步功能,请启用 'async' feature");
40    }
41
42    // 演示消息复用
43    let another_client = SyncBarkClient::with_device_key("https://api.day.app", "default_key");
44
45    // 克隆消息并修改部分内容
46    let modified_message = BarkMessage::builder()
47        .title("修改后的消息")
48        .body("基于原消息修改的新消息")
49        .level(shared_message.level.clone().unwrap_or(Level::Active))
50        .sound(
51            &shared_message
52                .sound
53                .clone()
54                .unwrap_or_else(|| "default".to_string()),
55        )
56        .badge(5)
57        .build();
58
59    let response = another_client.send(&modified_message)?;
60    println!("✅ 修改消息发送成功: {}", response.message);
61
62    println!("🎉 混合使用演示完成!");
63
64    Ok(())
65}