mirror of
https://github.com/youwen5/iamb.git
synced 2025-06-20 05:39:52 -07:00
Support following the .well-known entries for a username's domain (#209)
This commit is contained in:
parent
c5999bffc8
commit
84bc6be822
4 changed files with 29 additions and 8 deletions
15
README.md
15
README.md
|
@ -61,6 +61,20 @@ nix profile install "github:ulyssa/iamb"
|
||||||
|
|
||||||
You can create a basic configuration in `$CONFIG_DIR/iamb/config.json` that looks like:
|
You can create a basic configuration in `$CONFIG_DIR/iamb/config.json` that looks like:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"profiles": {
|
||||||
|
"example.com": {
|
||||||
|
"user_id": "@user:example.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
If you homeserver is located on a different domain than the server part of the
|
||||||
|
`user_id` and you don't have a [`/.well-known`][well_known_entry] entry, then
|
||||||
|
you can explicitly specify the homeserver URL to use:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"profiles": {
|
"profiles": {
|
||||||
|
@ -122,6 +136,7 @@ iamb is released under the [Apache License, Version 2.0].
|
||||||
[iamb.chat]: https://iamb.chat
|
[iamb.chat]: https://iamb.chat
|
||||||
[gomuks]: https://github.com/tulir/gomuks
|
[gomuks]: https://github.com/tulir/gomuks
|
||||||
[weechat-matrix]: https://github.com/poljar/weechat-matrix
|
[weechat-matrix]: https://github.com/poljar/weechat-matrix
|
||||||
|
[well_known_entry]: https://spec.matrix.org/latest/client-server-api/#getwell-knownmatrixclient
|
||||||
[#8]: https://github.com/ulyssa/iamb/issues/8
|
[#8]: https://github.com/ulyssa/iamb/issues/8
|
||||||
[#14]: https://github.com/ulyssa/iamb/issues/14
|
[#14]: https://github.com/ulyssa/iamb/issues/14
|
||||||
[#16]: https://github.com/ulyssa/iamb/issues/16
|
[#16]: https://github.com/ulyssa/iamb/issues/16
|
||||||
|
|
|
@ -505,7 +505,7 @@ pub enum Layout {
|
||||||
#[derive(Clone, Deserialize)]
|
#[derive(Clone, Deserialize)]
|
||||||
pub struct ProfileConfig {
|
pub struct ProfileConfig {
|
||||||
pub user_id: OwnedUserId,
|
pub user_id: OwnedUserId,
|
||||||
pub url: Url,
|
pub url: Option<Url>,
|
||||||
pub settings: Option<Tunables>,
|
pub settings: Option<Tunables>,
|
||||||
pub dirs: Option<Directories>,
|
pub dirs: Option<Directories>,
|
||||||
pub layout: Option<Layout>,
|
pub layout: Option<Layout>,
|
||||||
|
|
|
@ -209,7 +209,7 @@ pub fn mock_settings() -> ApplicationSettings {
|
||||||
profile_name: "test".into(),
|
profile_name: "test".into(),
|
||||||
profile: ProfileConfig {
|
profile: ProfileConfig {
|
||||||
user_id: user_id!("@user:example.com").to_owned(),
|
user_id: user_id!("@user:example.com").to_owned(),
|
||||||
url: Url::parse("https://example.com").unwrap(),
|
url: None,
|
||||||
settings: None,
|
settings: None,
|
||||||
dirs: None,
|
dirs: None,
|
||||||
layout: None,
|
layout: None,
|
||||||
|
|
|
@ -738,15 +738,21 @@ impl ClientWorker {
|
||||||
let req_config = RequestConfig::new().timeout(req_timeout).retry_timeout(req_timeout);
|
let req_config = RequestConfig::new().timeout(req_timeout).retry_timeout(req_timeout);
|
||||||
|
|
||||||
// Set up the Matrix client for the selected profile.
|
// Set up the Matrix client for the selected profile.
|
||||||
let client = Client::builder()
|
let builder = Client::builder()
|
||||||
.http_client(Arc::new(http))
|
.http_client(Arc::new(http))
|
||||||
.homeserver_url(account.url.clone())
|
|
||||||
.sled_store(settings.matrix_dir.as_path(), None)
|
.sled_store(settings.matrix_dir.as_path(), None)
|
||||||
.expect("Failed to setup up sled store for Matrix SDK")
|
.expect("Failed to setup up sled store for Matrix SDK")
|
||||||
.request_config(req_config)
|
.request_config(req_config);
|
||||||
.build()
|
|
||||||
.await
|
let builder = if let Some(url) = account.url.as_ref() {
|
||||||
.expect("Failed to instantiate Matrix client");
|
// Use the explicitly specified homeserver.
|
||||||
|
builder.homeserver_url(url.as_str())
|
||||||
|
} else {
|
||||||
|
// Try to discover the homeserver from the user ID.
|
||||||
|
builder.server_name(account.user_id.server_name())
|
||||||
|
};
|
||||||
|
|
||||||
|
let client = builder.build().await.expect("Failed to instantiate Matrix client");
|
||||||
|
|
||||||
let mut worker = ClientWorker {
|
let mut worker = ClientWorker {
|
||||||
initialized: false,
|
initialized: false,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue