Crate ruma_client
source ·Expand description
A minimal Matrix client library.
§Usage
Begin by creating a Client, selecting one of the type aliases from ruma_client::http_client
for the generic parameter. For the client API, there are login and registration methods
provided for the client (feature client-api):
// type HttpClient = ruma_client::http_client::_;
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!You can also pass an existing access token to the Client constructor to restore a previous
session rather than calling log_in. This can also be used to create a session for an
application service that does not need to log in, but uses the access_token directly:
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 APIThe Client type also provides methods for registering a new account if you don’t already have
one with the given homeserver.
Beyond these basic convenience methods, ruma-client gives you access to the entire Matrix
client-server API via the request method. You can pass it any of the Request types found in
ruma::api::* and get back a corresponding response from the homeserver.
For example:
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"));§Crate features
The following features activate http client types in the http_client module:
hyperhyper-native-tlshyper-rustlsreqwest– if you use thereqwestlibrary already, activate this feature and configure the TLS backend onreqwestdirectly. If you want to usereqwestbut don’t depend on it already, use one of the sub-features instead. For details on the meaning of these, see reqwest’s documentation:reqwest-native-tlsreqwest-native-tls-alpnreqwest-native-tls-vendoredreqwest-rustls-manual-rootsreqwest-rustls-webpki-rootsreqwest-rustls-native-roots
Re-exports§
pub use self::http_client::DefaultConstructibleHttpClient;pub use self::http_client::HttpClient;pub use self::http_client::HttpClientExt;
Modules§
- This module contains an abstraction for HTTP clients as well as friendly-named re-exports of client types that implement this trait.
Structs§
- Client
client-apiA client for the Matrix client-server API. - ClientBuilder
client-apiAClientbuilder.
Enums§
- An error that can occur during client operations.
Type Aliases§
- The error type for sending the request
Rwith the http clientC. - The result of sending the request
Rwith the http clientC.