mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-16 03:55:42 -04:00
feat(ffi): expose server_versions on ClientBuilder
This commit is contained in:
committed by
Benjamin Kampmann
parent
053b609899
commit
0fea33de4d
@@ -2,7 +2,10 @@ use std::{fs, path::PathBuf, sync::Arc};
|
||||
|
||||
use anyhow::anyhow;
|
||||
use matrix_sdk::{
|
||||
ruma::{ServerName, UserId},
|
||||
ruma::{
|
||||
api::{error::UnknownVersionError, MatrixVersion},
|
||||
ServerName, UserId,
|
||||
},
|
||||
Client as MatrixClient, ClientBuilder as MatrixClientBuilder,
|
||||
};
|
||||
use sanitize_filename_reader_friendly::sanitize;
|
||||
@@ -17,6 +20,7 @@ pub struct ClientBuilder {
|
||||
username: Option<String>,
|
||||
server_name: Option<String>,
|
||||
homeserver_url: Option<String>,
|
||||
server_versions: Option<Vec<String>>,
|
||||
passphrase: Zeroizing<Option<String>>,
|
||||
user_agent: Option<String>,
|
||||
inner: MatrixClientBuilder,
|
||||
@@ -36,6 +40,12 @@ impl ClientBuilder {
|
||||
Arc::new(builder)
|
||||
}
|
||||
|
||||
pub fn server_versions(self: Arc<Self>, versions: Vec<String>) -> Arc<Self> {
|
||||
let mut builder = unwrap_or_clone_arc(self);
|
||||
builder.server_versions = Some(versions);
|
||||
Arc::new(builder)
|
||||
}
|
||||
|
||||
pub fn server_name(self: Arc<Self>, server_name: String) -> Arc<Self> {
|
||||
let mut builder = unwrap_or_clone_arc(self);
|
||||
builder.server_name = Some(server_name);
|
||||
@@ -68,6 +78,7 @@ impl ClientBuilder {
|
||||
username: None,
|
||||
server_name: None,
|
||||
homeserver_url: None,
|
||||
server_versions: None,
|
||||
passphrase: Zeroizing::new(None),
|
||||
user_agent: None,
|
||||
inner: MatrixClient::builder(),
|
||||
@@ -105,6 +116,15 @@ impl ClientBuilder {
|
||||
inner_builder = inner_builder.user_agent(user_agent);
|
||||
}
|
||||
|
||||
if let Some(server_versions) = builder.server_versions {
|
||||
inner_builder = inner_builder.server_versions(
|
||||
server_versions
|
||||
.iter()
|
||||
.map(|s| MatrixVersion::try_from(s.as_str()))
|
||||
.collect::<Result<Vec<MatrixVersion>, UnknownVersionError>>()?,
|
||||
);
|
||||
}
|
||||
|
||||
RUNTIME.block_on(async move {
|
||||
let client = inner_builder.build().await?;
|
||||
let c = Client::new(client, ClientState::default());
|
||||
|
||||
Reference in New Issue
Block a user