7个不稳定版本

0.6.1 2024年4月19日
0.5.2 2023年8月25日
0.5.1 2023年6月15日
0.4.0 2022年12月19日
0.3.0 2022年10月6日

#63HTTP客户端

Download history 11/week @ 2024-04-26 14/week @ 2024-05-17 11/week @ 2024-05-24 2/week @ 2024-05-31 8/week @ 2024-06-07 11/week @ 2024-06-14 4/week @ 2024-06-21 3/week @ 2024-06-28 11/week @ 2024-07-05 13/week @ 2024-07-19 62/week @ 2024-07-26 8/week @ 2024-08-02 8/week @ 2024-08-09

每月91次下载

Apache-2.0 OR MIT

425KB
9K SLoC

Infobip API Rust SDK

Workflow Crates.io Crates.io Downloads Crates.io Minimum Rust Version

使用纯Rust调用Infobip API的客户端SDK。

此crate使您能够使用多个Infobip通信渠道,如短信、双因素认证、WhatsApp、电子邮件等。它抽象了所需的HTTP调用、模型和验证有效负载以及模型错误。模块结构按通信渠道划分。


📡 支持的渠道

目前,我们支持以下渠道

未来还将添加更多渠道!

🔐 认证

要使用此库,您需要设置一个Infobip账户。然后,您可以使用您的API密钥和自定义基本URL调用端点。您可以使用Configuration::from_env_api_key()方法从环境加载配置。为此,设置IB_API_KEYIB_BASE_URL变量。

📦 安装

要在您的项目根目录下安装库,请运行以下命令

cargo add infobip_sdk

或者,您可以将依赖项添加到项目的Cargo.toml

[dependencies]
infobip_sdk = "<version>"

<version>替换为库的最新(或所需的)版本。例如0.5.0

🚀 使用

要使用此库,请导入客户端和特定通道的模型。然后创建一个客户端并调用相关函数。例如,要发送短信,可以这样做

use infobip_sdk::model::sms::{Destination, Message, SendRequestBody};
use infobip_sdk::api::sms::SmsClient;
use infobip_sdk::configuration::Configuration;

#[tokio::main]
async fn main() {
    // Build SMS client with configuration from the environment.
    let sms_client = SmsClient::with_configuration(
        // Load IB_API_KEY and IB_BASE_URL environment variables.
        Configuration::from_env_api_key().unwrap()
    );

    // Create a message.
    let message = Message{
        destinations: Some(vec![Destination::new("123456789012")]),
        text: Some("Your message text".to_string()),
        ..Default::default()
    };

    // Create the SendRequestBody instance.
    let request_body = SendRequestBody::new(vec![message]);

    // Send the SMS.
    let response = sms_client.send(request_body).await.unwrap();

    // Do what you want with the response.
    assert_eq!(response.status, reqwest::StatusCode::OK);
    println!("Response body:\n{}", serde_json::to_string(&response.body).unwrap());
}

👀 示例

学习如何使用库的最佳方式是查看官方 docs.rs 文档,其中包含如何使用每个端点的简单示例。您还可以查看 测试 目录下的集成测试,它们在实际场景中的使用方式类似。

🗒 注意事项

构建有效负载模型

表示模型的结构体具有公共字段,因此您可以使用提供的 new() 函数、使用 serde_json::from_str() 或使用真正的构造函数来构建它们。例如,要构建一个 Message 实例,您可以这样做

let message = Message{
    destinations: Some(vec![Destination::new("123456789012")]),
    text: Some("Your message text".to_string()),
    ..Default::default()
}

或者这样

let message: Message = serde_json::from_str(
    r#"
        {
          "destinations": [
            {
              "to": "123456789012"
            }
          ],
          "text": "Your message text"
        }
    "#,
)
.unwrap();

或者这样

let destination = Destination {
    message_id: None,
    to: "41793026727".to_string()
};

let message = Message {
    destinations: Some(vec![destination]),
    ..Default::default()
};

模型验证

一些模型有必填字段。可选字段被包装在 Option 枚举中。模型还包含额外的检查,以确保字段具有有效的值(如果可能的话)。当调用端点时,验证会自动执行,或者您可以调用模型的 .validate() 方法。

使用特性

您可以通过仅将所需通道作为库特性来加快编译时间。例如,要仅构建短信,添加依赖项如下

infobip_sdk = { version = "0.5", features = ["sms"] }

您可以在项目的 Cargo.toml 中查看特性列表的完整列表。特性名称遵循通道名称。

🧡 贡献

如果您想帮助本项目改进,请查看我们的 贡献指南行为准则

⚖️ 许可证

此项目可根据您的选择使用以下任一许可证

任选其一。

依赖项

~9–25MB
~407K SLoC