22 个版本 (13 个重大变更)

0.13.0 2024 年 5 月 9 日
0.12.0 2023 年 10 月 5 日
0.11.0 2023 年 2 月 1 日
0.10.0 2022 年 9 月 12 日
0.0.0 2017 年 1 月 5 日

7#chat-client

Download history 4/week @ 2024-04-22 3/week @ 2024-04-29 145/week @ 2024-05-06 15/week @ 2024-05-13 12/week @ 2024-05-20 63/week @ 2024-05-27 73/week @ 2024-06-03 29/week @ 2024-06-10 45/week @ 2024-06-17 8/week @ 2024-06-24 116/week @ 2024-07-01 26/week @ 2024-07-08 4/week @ 2024-07-15 125/week @ 2024-07-29 28/week @ 2024-08-05

每月 158 次下载
7 个包中使用 (4 个直接使用)

MIT 许可证

700KB
14K SLoC

ruma-client

crates.io page docs.rs page license: MIT

ruma-client 是一个用于 Matrix 的 Rust 客户端库。

状态

该项目仍在开发中,尚未准备好用于生产。如果您正在寻找构建客户端应用程序或机器人,您可能会发现使用 Matrix Rust SDK 更为方便,它也建立在其他 Ruma 包之上,但提供了更高级的 API。


lib.rs:

一个最小的 Matrix 客户端库。

用法

首先创建一个 Client,选择 ruma_client::http_client 中的类型别名之一作为泛型参数。对于客户端 API,提供了登录和注册方法(功能 client-api)。

# // HACK: "ignore" the doctest here because client.log_in needs client-api feature.
// type HttpClient = ruma_client::http_client::_;
# type HttpClient = ruma_client::http_client::Dummy;
# let work = async {
let homeserver_url = "https://example.com".to_owned();
let client = ruma::Client::builder()
    .homeserver_url(homeserver_url)
    .build::<ruma_client::http_client::Dummy>()
    .await?;

let session = client
    .log_in("@alice:example.com", "secret", None, None)
    .await?;

// You're now logged in! Write the session to a file if you want to restore it later.
// Then start using the API!
# Result::<(), ruma_client::Error<_, _>>::Ok(())
# };

您也可以将现有的访问令牌传递给 Client 构造函数以恢复之前的会话,而不是调用 log_in。这也可以用于为不需要登录但直接使用 access_token 的应用程序服务创建会话。

#
let homeserver_url = "https://example.com".to_owned();
let client = ruma_client::Client::builder()
    .homeserver_url(homeserver_url)
    .access_token(Some("as_access_token".into()))
    .build::<HttpClient>()
    .await?;

// make calls to the API

Client 类型还提供了注册新账户的方法,如果您还没有给定 homeserver 上的账户。

除了这些基本便利方法之外,ruma-client 通过 request 方法提供了访问整个 Matrix 客户端-服务器 API 的权限。您可以传递任何在 ruma::api::* 中找到的 Request 类型,并从 homeserver 获取相应的响应。

例如


use ruma_client_api::alias::get_alias;
use ruma_common::{api::MatrixVersion, owned_room_alias_id, room_id};

let alias = owned_room_alias_id!("#example_room:example.com");
let response = client.send_request(get_alias::v3::Request::new(alias)).await?;

assert_eq!(response.room_id, room_id!("!n8f893n9:example.com"));

包功能

以下功能激活 http_client 模块中的 HTTP 客户端类型

  • hyper
  • hyper-native-tls
  • hyper-rustls
  • reqwest – 如果您已经使用 reqwest 库,激活此功能并直接在 reqwest 上配置 TLS 后端。如果您想使用 reqwest 但尚未依赖它,请使用子功能之一。有关这些功能的详细信息,请参阅 reqwest 的文档
    • reqwest-native-tls
    • reqwest-native-tls-alpn
    • reqwest-native-tls-vendored
    • reqwest-rustls-manual-roots
    • reqwest-rustls-webpki-roots
    • reqwest-rustls-native-roots

依赖

~9-26MB
~428K SLoC