Expand description
§Bark Rust 客户端
bark_rs 是一个功能完整的 Bark 推送服务 Rust 客户端库,采用清晰的模块化设计,支持所有官方 API 参数。
§🏗️ 架构设计
§三层架构
- 消息构建层 (
BarkMessage) - 统一的消息构建,同步异步通用 - 同步客户端 (
SyncBarkClient) - 专门处理同步发送,零运行时依赖 - 异步客户端 (
AsyncBarkClient) - 专门处理异步发送,可选功能
§设计优势
- 🧩 模块分离: 消息构建与发送客户端完全分离
- 🔄 灵活复用: 同一个消息可以用不同客户端发送
- 📦 按需引入: tokio 是可选依赖,只在需要异步功能时引入
- 🚫 无冲突: 同步和异步客户端各司其职,不会相互干扰
§功能特性
- 🚀 默认同步 - 无需外部运行时,开箱即用
- ⚡ 可选异步 - 通过 feature 启用异步功能
- 🛠️ Builder 模式 - 链式调用,易于使用
- 📱 完整 API 支持 - 支持所有 Bark API 参数
- 🔄 批量推送 - 支持向多个设备同时发送
- 🛡️ 完整错误处理 - 详细的错误类型和处理
- ✅ 全面测试 - 包含完整的测试用例
§快速开始
§同步使用(推荐)
use bark_rs::{SyncBarkClient, Level};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 创建同步客户端
let client = SyncBarkClient::with_device_key("https://api.day.app", "your_device_key");
// 发送推送
let response = client
.message()
.title("测试标题")
.body("这是一个测试消息")
.send()?;
println!("推送成功: {}", response.message);
Ok(())
}§异步使用
// Cargo.toml: bark_rs = { version = "0.1.0", features = ["async"] }
use bark_rs::{AsyncBarkClient, Level};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = AsyncBarkClient::with_device_key("https://api.day.app", "your_device_key");
let response = client
.message()
.title("异步测试")
.body("这是一个异步消息")
.send()
.await?;
println!("异步推送成功: {}", response.message);
Ok(())
}§消息构建与发送分离
use bark_rs::{SyncBarkClient, BarkMessage, Level};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 构建消息(与发送客户端无关)
let message = BarkMessage::builder()
.title("独立消息")
.body("消息构建与发送完全分离")
.level(Level::Critical)
.sound("alarm")
.badge(1)
.build();
// 创建同步客户端并发送
let sync_client = SyncBarkClient::with_device_key("https://api.day.app", "your_key");
let response = sync_client.send(&message)?;
println!("发送成功: {}", response.message);
Ok(())
}§通知级别说明
§Features
async- 启用异步功能和AsyncBarkClientnative-tls- 使用系统原生TLS实现(默认启用)rustls- 使用pure-Rust的rustls TLS实现,更轻量且无需系统依赖
§TLS 支持
库支持两种TLS实现:
§native-tls(默认)
[dependencies]
bark_rs = "0.1.2" # 默认使用 native-tls§rustls
[dependencies]
bark_rs = { version = "0.1.2", default-features = false, features = ["rustls"] }rustls是纯Rust实现的TLS库,具有更小的编译产物和更好的性能,推荐用于新项目。
Structs§
- Bark
Client - 同步 Bark 推送客户端
- Bark
Message - Bark 推送消息
- Bark
Message Builder - Bark 消息构建器
- Bark
Response - Bark API 响应结构
- Sync
Bark Client - 同步 Bark 推送客户端
- Sync
Bark Message Builder - 同步 Bark 消息构建器