Skip to main content

Crate bark_rs

Crate bark_rs 

Source
Expand description

§Bark Rust 客户端

bark_rs 是一个功能完整的 Bark 推送服务 Rust 客户端库,采用清晰的模块化设计,支持所有官方 API 参数。

§🏗️ 架构设计

§三层架构

  1. 消息构建层 (BarkMessage) - 统一的消息构建,同步异步通用
  2. 同步客户端 (SyncBarkClient) - 专门处理同步发送,零运行时依赖
  3. 异步客户端 (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 - 启用异步功能和 AsyncBarkClient
  • native-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§

BarkClient
同步 Bark 推送客户端
BarkMessage
Bark 推送消息
BarkMessageBuilder
Bark 消息构建器
BarkResponse
Bark API 响应结构
SyncBarkClient
同步 Bark 推送客户端
SyncBarkMessageBuilder
同步 Bark 消息构建器

Enums§

BarkError
Level
推送通知的级别

Type Aliases§

Result