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
每月 158 次下载
在 7 个包中使用 (4 个直接使用)
700KB
14K SLoC
ruma-client
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