[fractal] Integrate matrix-rust-sdk and making it log in
- From: Alexandre Franke <afranke src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal] Integrate matrix-rust-sdk and making it log in
- Date: Tue, 1 Dec 2020 20:21:59 +0000 (UTC)
commit 9757df278614e353604baa4b823a3031f3a241de
Author: Alejandro DomÃnguez <adomu net-c com>
Date: Fri Jul 24 12:38:10 2020 +0200
Integrate matrix-rust-sdk and making it log in
Cargo.lock | 998 ++++++++++++++++++++-
fractal-gtk/Cargo.toml | 2 +
fractal-gtk/src/actions/account_settings.rs | 2 +-
fractal-gtk/src/app/connect/language.rs | 2 +-
fractal-gtk/src/appop/account.rs | 28 +-
fractal-gtk/src/appop/directory.rs | 7 +-
fractal-gtk/src/appop/invite.rs | 11 +-
fractal-gtk/src/appop/login.rs | 31 +-
fractal-gtk/src/appop/media_viewer.rs | 4 +-
fractal-gtk/src/appop/member.rs | 6 +-
fractal-gtk/src/appop/message.rs | 31 +-
fractal-gtk/src/appop/mod.rs | 21 +-
fractal-gtk/src/appop/notify.rs | 5 +-
fractal-gtk/src/appop/room.rs | 44 +-
fractal-gtk/src/appop/room_settings.rs | 2 +-
fractal-gtk/src/appop/start_chat.rs | 2 +-
fractal-gtk/src/appop/sync.rs | 2 +-
fractal-gtk/src/appop/user.rs | 12 +-
fractal-gtk/src/backend/mod.rs | 16 +-
fractal-gtk/src/backend/register.rs | 2 +-
fractal-gtk/src/backend/sync.rs | 2 +-
fractal-gtk/src/client.rs | 111 ++-
fractal-gtk/src/widgets/address.rs | 2 +-
fractal-gtk/src/widgets/member.rs | 4 +-
fractal-gtk/src/widgets/room.rs | 2 +-
fractal-gtk/src/widgets/room_history.rs | 2 +-
fractal-matrix-api/Cargo.toml | 6 +-
fractal-matrix-api/src/lib.rs | 4 +-
fractal-matrix-api/src/meson.build | 1 -
fractal-matrix-api/src/r0/account/login.rs | 6 +-
fractal-matrix-api/src/r0/account/register.rs | 4 +-
.../src/r0/config/get_global_account_data.rs | 2 +-
.../src/r0/config/set_global_account_data.rs | 2 +-
.../src/r0/config/set_room_account_data.rs | 2 +-
fractal-matrix-api/src/r0/context/get_context.rs | 2 +-
.../src/r0/directory/post_public_rooms.rs | 4 +-
.../src/r0/membership/invite_user.rs | 2 +-
.../src/r0/membership/join_room_by_id_or_alias.rs | 2 +-
fractal-matrix-api/src/r0/membership/leave_room.rs | 2 +-
.../src/r0/message/create_message_event.rs | 2 +-
.../src/r0/message/get_message_events.rs | 2 +-
.../src/r0/profile/get_display_name.rs | 2 +-
fractal-matrix-api/src/r0/profile/get_profile.rs | 2 +-
.../src/r0/profile/set_avatar_url.rs | 2 +-
.../src/r0/profile/set_display_name.rs | 2 +-
.../src/r0/pushrules/delete_room_rules.rs | 2 +-
.../src/r0/pushrules/get_room_rules.rs | 2 +-
.../src/r0/pushrules/set_room_rules.rs | 2 +-
.../src/r0/read_marker/set_read_marker.rs | 2 +-
fractal-matrix-api/src/r0/redact/redact_event.rs | 2 +-
fractal-matrix-api/src/r0/room/create_room.rs | 2 +-
fractal-matrix-api/src/r0/search/user.rs | 2 +-
.../src/r0/state/create_state_events_for_key.rs | 2 +-
.../src/r0/state/get_state_events_for_key.rs | 2 +-
.../src/r0/sync/get_joined_members.rs | 2 +-
fractal-matrix-api/src/r0/sync/sync_events.rs | 2 +-
fractal-matrix-api/src/r0/tag/create_tag.rs | 2 +-
fractal-matrix-api/src/r0/tag/delete_tag.rs | 2 +-
fractal-matrix-api/src/r0/typing.rs | 2 +-
fractal-matrix-api/src/util.rs | 4 -
60 files changed, 1254 insertions(+), 180 deletions(-)
---
diff --git a/Cargo.lock b/Cargo.lock
index ba3110f6..11c452e4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -12,11 +12,23 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7001367fde4c768a19d1029f0a8be5abd9308e1119846d5bd9ad26297b8faf5"
dependencies = [
- "aes-soft",
- "aesni",
+ "aes-soft 0.4.0",
+ "aesni 0.7.0",
"block-cipher",
]
+[[package]]
+name = "aes-ctr"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7729c3cde54d67063be556aeac75a81330d802f0259500ca40cb52967f975763"
+dependencies = [
+ "aes-soft 0.6.4",
+ "aesni 0.10.0",
+ "cipher",
+ "ctr",
+]
+
[[package]]
name = "aes-soft"
version = "0.4.0"
@@ -28,6 +40,16 @@ dependencies = [
"opaque-debug 0.2.3",
]
+[[package]]
+name = "aes-soft"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072"
+dependencies = [
+ "cipher",
+ "opaque-debug 0.3.0",
+]
+
[[package]]
name = "aesni"
version = "0.7.0"
@@ -38,6 +60,25 @@ dependencies = [
"opaque-debug 0.2.3",
]
+[[package]]
+name = "aesni"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce"
+dependencies = [
+ "cipher",
+ "opaque-debug 0.3.0",
+]
+
+[[package]]
+name = "ahash"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8fd72866655d1904d6b0997d0b07ba561047d070fbe29de039031c641b61217"
+dependencies = [
+ "const-random",
+]
+
[[package]]
name = "aho-corasick"
version = "0.7.15"
@@ -98,6 +139,12 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
+[[package]]
+name = "assign"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4af5687fe33aec5e70ef14caac5e0d363e335e5e5d6385fb75978d0c241b1d67"
+
[[package]]
name = "async-compression"
version = "0.3.6"
@@ -111,6 +158,50 @@ dependencies = [
"pin-project-lite 0.1.11",
]
+[[package]]
+name = "async-native-tls"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e9e7a929bd34c68a82d58a4de7f86fffdaf97fb2af850162a7bb19dd7269b33"
+dependencies = [
+ "native-tls",
+ "thiserror",
+ "tokio",
+ "url",
+]
+
+[[package]]
+name = "async-stream"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22068c0c19514942eefcfd4daf8976ef1aad84e61539f95cd200c35202f80af5"
+dependencies = [
+ "async-stream-impl",
+ "futures-core",
+]
+
+[[package]]
+name = "async-stream-impl"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25f9db3b38af870bf7e5cc649167533b493928e50744e2c30ae350230b414670"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "async-trait"
+version = "0.1.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d3a45e77e34375a7923b1e8febb049bb011f064714a8e17a1a616fef01da13d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "atk"
version = "0.9.0"
@@ -137,6 +228,15 @@ dependencies = [
"system-deps",
]
+[[package]]
+name = "atomic"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3410529e8288c463bedb5930f82833bc0c90e5d2fe639a56582a4d09220b281"
+dependencies = [
+ "autocfg 1.0.1",
+]
+
[[package]]
name = "atty"
version = "0.2.14"
@@ -160,6 +260,12 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
+[[package]]
+name = "base-x"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b"
+
[[package]]
name = "base64"
version = "0.13.0"
@@ -182,6 +288,18 @@ version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+[[package]]
+name = "bitvec"
+version = "0.19.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7ba35e9565969edb811639dbebfe34edc0368e472c5018474c8eb2543397f81"
+dependencies = [
+ "funty",
+ "radium",
+ "tap",
+ "wyz",
+]
+
[[package]]
name = "blake2b_simd"
version = "0.5.11"
@@ -330,10 +448,19 @@ dependencies = [
"num-integer",
"num-traits",
"serde",
- "time",
+ "time 0.1.44",
"winapi 0.3.9",
]
+[[package]]
+name = "cipher"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801"
+dependencies = [
+ "generic-array 0.14.4",
+]
+
[[package]]
name = "clap"
version = "2.33.3"
@@ -358,6 +485,15 @@ dependencies = [
"bitflags",
]
+[[package]]
+name = "cmake"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855"
+dependencies = [
+ "cc",
+]
+
[[package]]
name = "comrak"
version = "0.7.0"
@@ -385,6 +521,34 @@ dependencies = [
"wasm-bindgen",
]
+[[package]]
+name = "const-random"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "486d435a7351580347279f374cb8a3c16937485441db80181357b7c4d70f17ed"
+dependencies = [
+ "const-random-macro",
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "const-random-macro"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49a84d8ff70e3ec52311109b019c27672b4c1929e4cf7c18bcf0cd9fb5e230be"
+dependencies = [
+ "getrandom 0.2.0",
+ "lazy_static",
+ "proc-macro-hack",
+ "tiny-keccak",
+]
+
+[[package]]
+name = "const_fn"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c478836e029dcef17fb47c89023448c64f781a046e0300e257ad8225ae59afab"
+
[[package]]
name = "constant_time_eq"
version = "0.1.5"
@@ -422,6 +586,28 @@ dependencies = [
"cfg-if 1.0.0",
]
+[[package]]
+name = "crossbeam-queue"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570"
+dependencies = [
+ "cfg-if 0.1.10",
+ "crossbeam-utils 0.7.2",
+ "maybe-uninit",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
+dependencies = [
+ "autocfg 1.0.1",
+ "cfg-if 0.1.10",
+ "lazy_static",
+]
+
[[package]]
name = "crossbeam-utils"
version = "0.8.1"
@@ -433,6 +619,12 @@ dependencies = [
"lazy_static",
]
+[[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
[[package]]
name = "crypto-mac"
version = "0.8.0"
@@ -443,6 +635,36 @@ dependencies = [
"subtle",
]
+[[package]]
+name = "crypto-mac"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6"
+dependencies = [
+ "generic-array 0.14.4",
+ "subtle",
+]
+
+[[package]]
+name = "ctr"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f"
+dependencies = [
+ "cipher",
+]
+
+[[package]]
+name = "dashmap"
+version = "3.11.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f260e2fc850179ef410018660006951c1b55b79e8087e87111a2c388994b9b5"
+dependencies = [
+ "ahash",
+ "cfg-if 0.1.10",
+ "num_cpus",
+]
+
[[package]]
name = "dbus"
version = "0.2.3"
@@ -501,6 +723,18 @@ dependencies = [
"winapi 0.3.9",
]
+[[package]]
+name = "discard"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0"
+
+[[package]]
+name = "dotenv"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
+
[[package]]
name = "either"
version = "1.5.99"
@@ -584,6 +818,7 @@ name = "fractal-gtk"
version = "4.4.0"
dependencies = [
"anyhow",
+ "async-trait",
"cairo-rs",
"chrono",
"clap",
@@ -605,6 +840,7 @@ dependencies = [
"gtk",
"gtk-sys",
"html2pango",
+ "http",
"itertools 0.8.2",
"lazy_static",
"libhandy",
@@ -627,8 +863,8 @@ name = "fractal-matrix-api"
version = "4.4.0"
dependencies = [
"gio",
+ "matrix-sdk",
"reqwest",
- "ruma-identifiers",
"serde",
"serde_json",
"url",
@@ -662,6 +898,12 @@ version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
+[[package]]
+name = "funty"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ba62103ce691c2fd80fbae2213dfdda9ce60804973ac6b6e97de818ea7f52c8"
+
[[package]]
name = "futf"
version = "0.1.4"
@@ -720,6 +962,15 @@ version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb"
+[[package]]
+name = "futures-locks"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50c4e684ddb2d8a4db5ca8a02b35156da129674ba4412b6f528698d58c594954"
+dependencies = [
+ "futures",
+]
+
[[package]]
name = "futures-macro"
version = "0.3.8"
@@ -747,6 +998,16 @@ dependencies = [
"once_cell",
]
+[[package]]
+name = "futures-timer"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
+dependencies = [
+ "gloo-timers",
+ "send_wrapper",
+]
+
[[package]]
name = "futures-util"
version = "0.3.8"
@@ -856,6 +1117,18 @@ name = "getrandom"
version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6"
+dependencies = [
+ "cfg-if 0.1.10",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4"
dependencies = [
"cfg-if 0.1.10",
"libc",
@@ -958,6 +1231,19 @@ dependencies = [
"system-deps",
]
+[[package]]
+name = "gloo-timers"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
[[package]]
name = "gobject-sys"
version = "0.10.0"
@@ -1272,6 +1558,12 @@ dependencies = [
"libc",
]
+[[package]]
+name = "hex"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35"
+
[[package]]
name = "hkdf"
version = "0.9.0"
@@ -1279,7 +1571,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe1149865383e4526a43aee8495f9a325f0b806c63ce6427d06336a590abbbc9"
dependencies = [
"digest 0.9.0",
- "hmac",
+ "hmac 0.8.1",
]
[[package]]
@@ -1288,7 +1580,17 @@ version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840"
dependencies = [
- "crypto-mac",
+ "crypto-mac 0.8.0",
+ "digest 0.9.0",
+]
+
+[[package]]
+name = "hmac"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15"
+dependencies = [
+ "crypto-mac 0.10.0",
"digest 0.9.0",
]
@@ -1413,6 +1715,19 @@ dependencies = [
"hashbrown",
]
+[[package]]
+name = "instant"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec"
+dependencies = [
+ "cfg-if 1.0.0",
+ "js-sys",
+ "time 0.2.23",
+ "wasm-bindgen",
+ "web-sys",
+]
+
[[package]]
name = "iovec"
version = "0.1.4"
@@ -1461,6 +1776,15 @@ dependencies = [
"wasm-bindgen",
]
+[[package]]
+name = "js_int"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b96797f53235a1d6dc985f244a69de54b04c45b7e0e357a35c85a45a847d92f2"
+dependencies = [
+ "serde",
+]
+
[[package]]
name = "kernel32-sys"
version = "0.2.2"
@@ -1477,6 +1801,19 @@ version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+[[package]]
+name = "lexical-core"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db65c6da02e61f55dae90a0ae427b2a5f6b3e8db09f58d10efab23af92592616"
+dependencies = [
+ "arrayvec",
+ "bitflags",
+ "cfg-if 0.1.10",
+ "ryu",
+ "static_assertions",
+]
+
[[package]]
name = "libc"
version = "0.2.80"
@@ -1527,6 +1864,17 @@ dependencies = [
"system-deps",
]
+[[package]]
+name = "libsqlite3-sys"
+version = "0.17.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56d90181c2904c287e5390186be820e5ef311a3c62edebb7d6ca3d6a48ce041d"
+dependencies = [
+ "cc",
+ "pkg-config",
+ "vcpkg",
+]
+
[[package]]
name = "linkify"
version = "0.4.0"
@@ -1637,20 +1985,116 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
[[package]]
-name = "md5"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
-
-[[package]]
-name = "mdl"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9408becfeee133226be6df86aee4018565e6e26f746510467d0f5a0f38bc5bd5"
+name = "matrix-sdk"
+version = "0.1.0"
+source =
"git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=0422bae92485b033d4f9b56f2331909653655609#0422bae92485b033d4f9b56f2331909653655609"
dependencies = [
- "anyhow",
- "bincode",
- "lmdb",
+ "async-trait",
+ "dashmap",
+ "futures-timer",
+ "http",
+ "matrix-sdk-base",
+ "matrix-sdk-common",
+ "matrix-sdk-common-macros",
+ "mime",
+ "reqwest",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "tracing-futures",
+ "url",
+ "zeroize",
+]
+
+[[package]]
+name = "matrix-sdk-base"
+version = "0.1.0"
+source =
"git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=0422bae92485b033d4f9b56f2331909653655609#0422bae92485b033d4f9b56f2331909653655609"
+dependencies = [
+ "async-trait",
+ "matrix-sdk-common",
+ "matrix-sdk-common-macros",
+ "matrix-sdk-crypto",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "zeroize",
+]
+
+[[package]]
+name = "matrix-sdk-common"
+version = "0.1.0"
+source =
"git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=0422bae92485b033d4f9b56f2331909653655609#0422bae92485b033d4f9b56f2331909653655609"
+dependencies = [
+ "assign",
+ "futures-locks",
+ "instant",
+ "js_int",
+ "ruma",
+ "tokio",
+ "uuid",
+]
+
+[[package]]
+name = "matrix-sdk-common-macros"
+version = "0.1.0"
+source =
"git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=0422bae92485b033d4f9b56f2331909653655609#0422bae92485b033d4f9b56f2331909653655609"
+dependencies = [
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "matrix-sdk-crypto"
+version = "0.1.0"
+source =
"git+https://github.com/matrix-org/matrix-rust-sdk.git?rev=0422bae92485b033d4f9b56f2331909653655609#0422bae92485b033d4f9b56f2331909653655609"
+dependencies = [
+ "aes-ctr",
+ "async-trait",
+ "atomic",
+ "base64",
+ "byteorder",
+ "dashmap",
+ "getrandom 0.2.0",
+ "hmac 0.10.1",
+ "matrix-sdk-common",
+ "matrix-sdk-common-macros",
+ "olm-rs",
+ "pbkdf2",
+ "serde",
+ "serde_json",
+ "sha2",
+ "sqlx",
+ "thiserror",
+ "tracing",
+ "url",
+ "zeroize",
+]
+
+[[package]]
+name = "maybe-uninit"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
+
+[[package]]
+name = "md5"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
+
+[[package]]
+name = "mdl"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9408becfeee133226be6df86aee4018565e6e26f746510467d0f5a0f38bc5bd5"
+dependencies = [
+ "anyhow",
+ "bincode",
+ "lmdb",
"serde",
]
@@ -1758,6 +2202,18 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
+[[package]]
+name = "nom"
+version = "6.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88034cfd6b4a0d54dd14f4a507eceee36c0b70e5a02236c4e4df571102be17f0"
+dependencies = [
+ "bitvec",
+ "lexical-core",
+ "memchr",
+ "version_check",
+]
+
[[package]]
name = "num"
version = "0.3.1"
@@ -1844,6 +2300,28 @@ dependencies = [
"libc",
]
+[[package]]
+name = "olm-rs"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daab4abdd728e5e77ec15888fc12688c0b821c81fca621f1bb28dbe489cbc404"
+dependencies = [
+ "getrandom 0.2.0",
+ "olm-sys",
+ "serde",
+ "serde_json",
+ "zeroize",
+]
+
+[[package]]
+name = "olm-sys"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87fa74f77d7ce49231025de2a26df4e71228a9ea5bd5b0a3edc8d6bb05e3d420"
+dependencies = [
+ "cmake",
+]
+
[[package]]
name = "once_cell"
version = "1.5.2"
@@ -1928,6 +2406,15 @@ version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7151b083b0664ed58ed669fcdd92f01c3d2fdbf10af4931a301474950b52bfa9"
+[[package]]
+name = "pbkdf2"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3b8c0d71734018084da0c0354193a5edfb81b20d2d57a92c5b154aefc554a4a"
+dependencies = [
+ "crypto-mac 0.10.0",
+]
+
[[package]]
name = "percent-encoding"
version = "2.1.0"
@@ -2160,6 +2647,12 @@ dependencies = [
"proc-macro2",
]
+[[package]]
+name = "radium"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8"
+
[[package]]
name = "rand"
version = "0.6.5"
@@ -2185,7 +2678,7 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
dependencies = [
- "getrandom",
+ "getrandom 0.1.15",
"libc",
"rand_chacha 0.2.2",
"rand_core 0.5.1",
@@ -2234,7 +2727,7 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
dependencies = [
- "getrandom",
+ "getrandom 0.1.15",
]
[[package]]
@@ -2338,7 +2831,7 @@ version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d"
dependencies = [
- "getrandom",
+ "getrandom 0.1.15",
"redox_syscall",
"rust-argon2",
]
@@ -2409,23 +2902,148 @@ dependencies = [
"winreg",
]
+[[package]]
+name = "ruma"
+version = "0.0.1"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
+dependencies = [
+ "assign",
+ "js_int",
+ "ruma-api",
+ "ruma-client-api",
+ "ruma-common",
+ "ruma-events",
+ "ruma-federation-api",
+ "ruma-identifiers",
+ "ruma-serde",
+]
+
+[[package]]
+name = "ruma-api"
+version = "0.17.0-alpha.1"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
+dependencies = [
+ "http",
+ "percent-encoding",
+ "ruma-api-macros",
+ "ruma-common",
+ "ruma-identifiers",
+ "ruma-serde",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
+name = "ruma-api-macros"
+version = "0.17.0-alpha.1"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "ruma-client-api"
+version = "0.10.0-alpha.1"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
+dependencies = [
+ "assign",
+ "http",
+ "js_int",
+ "maplit",
+ "percent-encoding",
+ "ruma-api",
+ "ruma-common",
+ "ruma-events",
+ "ruma-identifiers",
+ "ruma-serde",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "ruma-common"
+version = "0.2.0"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
+dependencies = [
+ "js_int",
+ "ruma-common-macros",
+ "ruma-identifiers",
+ "ruma-serde",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "ruma-common-macros"
+version = "0.2.0"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "ruma-events"
+version = "0.22.0-alpha.1"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
+dependencies = [
+ "js_int",
+ "ruma-common",
+ "ruma-events-macros",
+ "ruma-identifiers",
+ "ruma-serde",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "ruma-events-macros"
+version = "0.22.0-alpha.1"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "ruma-federation-api"
+version = "0.0.3"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
+dependencies = [
+ "js_int",
+ "ruma-api",
+ "ruma-common",
+ "ruma-events",
+ "ruma-identifiers",
+ "ruma-serde",
+ "serde",
+ "serde_json",
+]
+
[[package]]
name = "ruma-identifiers"
version = "0.17.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5917092ecf88dec0a9a1f39ed5755096f39dc23003dcc278a58805ee8be65dee"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
dependencies = [
+ "ruma-common-macros",
"ruma-identifiers-macros",
"ruma-identifiers-validation",
+ "ruma-serde",
"serde",
- "strum",
]
[[package]]
name = "ruma-identifiers-macros"
version = "0.17.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "986f7ea65aac70e22fdbdadf582d51ceb4c896c0844ccf7a944a1128c2c5e30e"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
dependencies = [
"proc-macro2",
"quote",
@@ -2436,11 +3054,22 @@ dependencies = [
[[package]]
name = "ruma-identifiers-validation"
version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c112fd1d537d0c9eec9ec93e098576f8c68b2eabbc64b7275b1ed28235fe605b"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
+dependencies = [
+ "serde",
+ "strum 0.19.5",
+]
+
+[[package]]
+name = "ruma-serde"
+version = "0.2.3"
+source =
"git+https://github.com/ruma/ruma?rev=48d1c9747561686e1c5627405780f6de01ee17b1#48d1c9747561686e1c5627405780f6de01ee17b1"
dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "js_int",
"serde",
- "strum",
+ "serde_json",
]
[[package]]
@@ -2452,7 +3081,16 @@ dependencies = [
"base64",
"blake2b_simd",
"constant_time_eq",
- "crossbeam-utils",
+ "crossbeam-utils 0.8.1",
+]
+
+[[package]]
+name = "rustc_version"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
+dependencies = [
+ "semver",
]
[[package]]
@@ -2516,6 +3154,27 @@ dependencies = [
"libc",
]
+[[package]]
+name = "semver"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
+dependencies = [
+ "semver-parser",
+]
+
+[[package]]
+name = "semver-parser"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+
+[[package]]
+name = "send_wrapper"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0"
+
[[package]]
name = "serde"
version = "1.0.117"
@@ -2571,6 +3230,12 @@ dependencies = [
"opaque-debug 0.2.3",
]
+[[package]]
+name = "sha1"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d"
+
[[package]]
name = "sha2"
version = "0.9.2"
@@ -2649,6 +3314,137 @@ dependencies = [
"system-deps",
]
+[[package]]
+name = "sqlformat"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74c70f0235b9925cbb106c52af1a28b5ea4885a8b851e328b8562e257a389c2d"
+dependencies = [
+ "lazy_static",
+ "maplit",
+ "nom",
+ "regex",
+ "unicode_categories",
+]
+
+[[package]]
+name = "sqlx"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8974cacd80085fbe49e778708d660dec6fb351604dc34c3905b26efb2803b038"
+dependencies = [
+ "sqlx-core",
+ "sqlx-macros",
+]
+
+[[package]]
+name = "sqlx-core"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88ac5a436f941c42eac509471a730df5c3c58e1450e68cd39afedbd948206273"
+dependencies = [
+ "async-native-tls",
+ "async-stream",
+ "bitflags",
+ "byteorder",
+ "crossbeam-queue",
+ "crossbeam-utils 0.7.2",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "hex",
+ "libc",
+ "libsqlite3-sys",
+ "log",
+ "memchr",
+ "percent-encoding",
+ "sqlformat",
+ "tokio",
+ "url",
+]
+
+[[package]]
+name = "sqlx-macros"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de2ae78b783af5922d811b14665a5a3755e531c3087bb805cf24cf71f15e6780"
+dependencies = [
+ "dotenv",
+ "futures",
+ "heck",
+ "lazy_static",
+ "proc-macro2",
+ "quote",
+ "sqlx-core",
+ "syn",
+ "tokio",
+ "url",
+]
+
+[[package]]
+name = "standback"
+version = "0.2.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf906c8b8fc3f6ecd1046e01da1d8ddec83e48c8b08b84dcc02b585a6bedf5a8"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "stdweb"
+version = "0.4.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5"
+dependencies = [
+ "discard",
+ "rustc_version",
+ "stdweb-derive",
+ "stdweb-internal-macros",
+ "stdweb-internal-runtime",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "stdweb-derive"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde",
+ "serde_derive",
+ "syn",
+]
+
+[[package]]
+name = "stdweb-internal-macros"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11"
+dependencies = [
+ "base-x",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "sha1",
+ "syn",
+]
+
+[[package]]
+name = "stdweb-internal-runtime"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0"
+
[[package]]
name = "string_cache"
version = "0.8.1"
@@ -2685,8 +3481,14 @@ name = "strum"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
+
+[[package]]
+name = "strum"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b89a286a7e3b5720b9a477b23253bc50debac207c8d21505f8e70b36792f11b5"
dependencies = [
- "strum_macros",
+ "strum_macros 0.19.4",
]
[[package]]
@@ -2701,6 +3503,18 @@ dependencies = [
"syn",
]
+[[package]]
+name = "strum_macros"
+version = "0.19.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e61bb0be289045cb80bfce000512e32d09f8337e54c186725da381377ad1f8d5"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "subtle"
version = "2.3.0"
@@ -2718,6 +3532,18 @@ dependencies = [
"unicode-xid",
]
+[[package]]
+name = "synstructure"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "unicode-xid",
+]
+
[[package]]
name = "system-deps"
version = "1.3.2"
@@ -2726,13 +3552,19 @@ checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
dependencies = [
"heck",
"pkg-config",
- "strum",
- "strum_macros",
+ "strum 0.18.0",
+ "strum_macros 0.18.0",
"thiserror",
"toml",
"version-compare",
]
+[[package]]
+name = "tap"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36474e732d1affd3a6ed582781b3683df3d0563714c59c39591e8ff707cf078e"
+
[[package]]
name = "tempfile"
version = "3.1.0"
@@ -2807,6 +3639,53 @@ dependencies = [
"winapi 0.3.9",
]
+[[package]]
+name = "time"
+version = "0.2.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcdaeea317915d59b2b4cd3b5efcd156c309108664277793f5351700c02ce98b"
+dependencies = [
+ "const_fn",
+ "libc",
+ "standback",
+ "stdweb",
+ "time-macros",
+ "version_check",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "time-macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1"
+dependencies = [
+ "proc-macro-hack",
+ "time-macros-impl",
+]
+
+[[package]]
+name = "time-macros-impl"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa"
+dependencies = [
+ "proc-macro-hack",
+ "proc-macro2",
+ "quote",
+ "standback",
+ "syn",
+]
+
+[[package]]
+name = "tiny-keccak"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
+dependencies = [
+ "crunchy",
+]
+
[[package]]
name = "tinyvec"
version = "1.1.0"
@@ -2901,9 +3780,21 @@ dependencies = [
"cfg-if 1.0.0",
"log",
"pin-project-lite 0.2.0",
+ "tracing-attributes",
"tracing-core",
]
+[[package]]
+name = "tracing-attributes"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "tracing-core"
version = "0.1.17"
@@ -3033,6 +3924,16 @@ version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7"
+[[package]]
+name = "uuid"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fde2f6a4bea1d6e007c4ad38c6839fa71cbb63b6dbf5b595aa38dc9b1093c11"
+dependencies = [
+ "rand 0.7.3",
+ "serde",
+]
+
[[package]]
name = "vcpkg"
version = "0.2.10"
@@ -3234,6 +4135,12 @@ dependencies = [
"winapi-build",
]
+[[package]]
+name = "wyz"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214"
+
[[package]]
name = "xml5ever"
version = "0.16.1"
@@ -3243,5 +4150,26 @@ dependencies = [
"log",
"mac",
"markup5ever",
- "time",
+ "time 0.1.44",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f33972566adbd2d3588b0491eb94b98b43695c4ef897903470ede4f3f5a28a"
+dependencies = [
+ "zeroize_derive",
+]
+
+[[package]]
+name = "zeroize_derive"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3f369ddb18862aba61aa49bf31e74d29f0f162dec753063200e1dc084345d16"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
]
diff --git a/fractal-gtk/Cargo.toml b/fractal-gtk/Cargo.toml
index abc77656..713ae9be 100644
--- a/fractal-gtk/Cargo.toml
+++ b/fractal-gtk/Cargo.toml
@@ -7,6 +7,7 @@ edition = "2018"
[dependencies]
anyhow = "1.0.32"
+async-trait = "0.1.40"
clap = "2.33.0"
comrak = "0.7.0"
directories = "2.0.2"
@@ -17,6 +18,7 @@ gdk-pixbuf = "0.9.0"
gstreamer-pbutils = "0.16.0"
glib = "0.10.1"
html2pango = "0.3.2"
+http = "0.2.1"
itertools = "0.8.2"
lazy_static = "1.4.0"
log = "0.4.8"
diff --git a/fractal-gtk/src/actions/account_settings.rs b/fractal-gtk/src/actions/account_settings.rs
index bb8a26c0..76362c32 100644
--- a/fractal-gtk/src/actions/account_settings.rs
+++ b/fractal-gtk/src/actions/account_settings.rs
@@ -25,7 +25,7 @@ pub fn new(window: >k::Window, op: Arc<Mutex<AppOp>>) -> gio::SimpleActionGrou
change_avatar.connect_activate(clone!(@weak window => move |a, _| {
let login_data = unwrap_or_unit_return!(op.lock().unwrap().login_data.clone());
- let server_url = login_data.server_url;
+ let server_url = login_data.session_client.homeserver().clone();
let access_token = login_data.access_token;
let uid = login_data.uid;
diff --git a/fractal-gtk/src/app/connect/language.rs b/fractal-gtk/src/app/connect/language.rs
index 0b402b71..d2f91412 100644
--- a/fractal-gtk/src/app/connect/language.rs
+++ b/fractal-gtk/src/app/connect/language.rs
@@ -27,7 +27,7 @@ impl App {
If the checker is modified by gtk due to the user switching the language, the op mutex
is unlocked. */
if let Ok(op) = op.try_lock() {
if let (Some(active_room), Some(login_data)) = (op.active_room.as_ref(),
op.login_data.as_ref()) {
- let server = login_data.server_url.clone();
+ let server = login_data.session_client.homeserver().clone();
let access_token = login_data.access_token.clone();
let uid = login_data.uid.clone();
let room_id = active_room.clone();
diff --git a/fractal-gtk/src/appop/account.rs b/fractal-gtk/src/appop/account.rs
index 0c2aa268..5fd378fd 100644
--- a/fractal-gtk/src/appop/account.rs
+++ b/fractal-gtk/src/appop/account.rs
@@ -27,7 +27,10 @@ impl AppOp {
pub fn get_three_pid(&self) {
let login_data = unwrap_or_unit_return!(self.login_data.clone());
thread::spawn(move || {
- match user::get_threepid(login_data.server_url, login_data.access_token) {
+ match user::get_threepid(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ ) {
Ok(list) => {
let l = Some(list);
APPOP!(set_three_pid, (l));
@@ -49,7 +52,7 @@ impl AppOp {
if let Some(secret) = secret {
thread::spawn(move || {
match user::add_threepid(
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
login_data.identity_url,
secret,
@@ -115,7 +118,7 @@ impl AppOp {
if let gtk::ResponseType::Ok = r {
let token = value.get_text().to_string();
- let server_url = login_data.server_url.clone();
+ let server_url = login_data.session_client.homeserver().clone();
let secret = secret.clone();
let sid = sid.clone();
thread::spawn(move || {
@@ -162,7 +165,7 @@ impl AppOp {
let sid = sid.clone();
thread::spawn(move || {
match user::add_threepid(
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
login_data.identity_url,
secret,
@@ -317,13 +320,8 @@ impl AppOp {
stack.set_visible_child_name("loading");
self.get_three_pid();
uid.set_text(&login_data.uid.to_string());
- device_id.set_text(
- self.device_id
- .as_ref()
- .map(|id| id.as_str())
- .unwrap_or_default(),
- );
- homeserver.set_text(login_data.server_url.as_str());
+ device_id.set_text(login_data.device_id.as_str());
+ homeserver.set_text(login_data.session_client.homeserver().as_str());
name.set_text(&login_data.username.unwrap_or_default());
name.grab_focus_without_selecting();
name.set_position(-1);
@@ -547,7 +545,7 @@ impl AppOp {
download_to_cache(
self.thread_pool.clone(),
self.user_info_cache.clone(),
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
login_data.uid,
data,
@@ -611,7 +609,7 @@ impl AppOp {
name.set_editable(false);
thread::spawn(move || {
match user::set_username(
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
login_data.uid,
username,
@@ -682,7 +680,7 @@ impl AppOp {
password_btn_stack.set_visible_child_name("spinner");
thread::spawn(move || {
match user::change_password(
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
login_data.uid.localpart().into(),
old.to_string(),
@@ -797,7 +795,7 @@ impl AppOp {
let login_data = login_data.clone();
thread::spawn(move || {
match user::account_destruction(
- login_data.server_url.clone(),
+ login_data.session_client.homeserver().clone(),
login_data.access_token.clone(),
login_data.uid.localpart().into(),
password,
diff --git a/fractal-gtk/src/appop/directory.rs b/fractal-gtk/src/appop/directory.rs
index e1f8abc4..cc9e8a49 100644
--- a/fractal-gtk/src/appop/directory.rs
+++ b/fractal-gtk/src/appop/directory.rs
@@ -16,7 +16,10 @@ impl AppOp {
pub fn init_protocols(&self) {
let login_data = unwrap_or_unit_return!(self.login_data.clone());
thread::spawn(move || {
- match directory::protocols(login_data.server_url, login_data.access_token) {
+ match directory::protocols(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ ) {
Ok(protocols) => {
APPOP!(set_protocols, (protocols));
}
@@ -136,7 +139,7 @@ impl AppOp {
let rooms_since = self.directory_pagination.clone().into();
thread::spawn(move || {
let query = directory::room_search(
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
homeserver,
search_term,
diff --git a/fractal-gtk/src/appop/invite.rs b/fractal-gtk/src/appop/invite.rs
index 775105e2..cd5054c0 100644
--- a/fractal-gtk/src/appop/invite.rs
+++ b/fractal-gtk/src/appop/invite.rs
@@ -165,7 +165,7 @@ impl AppOp {
let login_data = unwrap_or_unit_return!(self.login_data.clone());
if let Some(ref r) = self.active_room {
for user in &self.invite_list {
- let server = login_data.server_url.clone();
+ let server = login_data.session_client.homeserver().clone();
let access_token = login_data.access_token.clone();
let room_id = r.clone();
let user_id = user.0.uid.clone();
@@ -229,7 +229,7 @@ impl AppOp {
if accept {
thread::spawn(move || {
match room::join_room(
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
room_id.into(),
) {
@@ -245,8 +245,11 @@ impl AppOp {
});
} else {
thread::spawn(move || {
- let query =
- room::leave_room(login_data.server_url, login_data.access_token, room_id);
+ let query = room::leave_room(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ room_id,
+ );
if let Err(err) = query {
err.handle_error();
}
diff --git a/fractal-gtk/src/appop/login.rs b/fractal-gtk/src/appop/login.rs
index 018e978b..48edd267 100644
--- a/fractal-gtk/src/appop/login.rs
+++ b/fractal-gtk/src/appop/login.rs
@@ -1,16 +1,18 @@
use log::error;
+use crate::app::RUNTIME;
use crate::backend::register;
use fractal_api::identifiers::{DeviceId, UserId};
use fractal_api::r0::AccessToken;
-
use fractal_api::url::Url;
+use fractal_api::Session;
use crate::app::App;
use crate::appop::AppOp;
use crate::backend::HandleError;
use crate::cache;
+use crate::client::get_matrix_client;
use std::thread;
@@ -25,7 +27,7 @@ impl AppOp {
&mut self,
uid: UserId,
access_token: AccessToken,
- device: Option<Box<DeviceId>>,
+ device_id: Box<DeviceId>,
server_url: Url,
identity_url: Url,
) {
@@ -33,17 +35,28 @@ impl AppOp {
error!("Can't store the token using libsecret");
}
+ let matrix_client =
+ get_matrix_client(server_url).expect("Failed to login with the Matrix client");
+
self.set_login_data(LoginData {
- access_token,
- uid,
+ session_client: matrix_client.clone(),
+ uid: uid.clone(),
+ access_token: access_token.clone(),
+ device_id: device_id.clone(),
username: None,
avatar: None,
- server_url,
identity_url,
});
+ let _ = RUNTIME
+ .handle()
+ .block_on(matrix_client.restore_login(Session {
+ access_token: access_token.to_string(),
+ user_id: uid,
+ device_id,
+ }));
+
self.set_state(AppState::NoRoom);
- self.device_id = self.device_id.clone().or(device);
self.since = None;
self.get_username();
@@ -63,7 +76,6 @@ impl AppOp {
self.set_state(AppState::Login);
self.login_data = None;
- self.device_id = None;
}
pub fn connect(&mut self, username: String, password: String, server: Url, identity: Url) {
@@ -97,7 +109,10 @@ impl AppOp {
let login_data = unwrap_or_unit_return!(self.login_data.clone());
let _ = self.delete_pass("fractal");
thread::spawn(move || {
- match register::logout(login_data.server_url, login_data.access_token) {
+ match register::logout(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ ) {
Ok(_) => {
APPOP!(bk_logout);
}
diff --git a/fractal-gtk/src/appop/media_viewer.rs b/fractal-gtk/src/appop/media_viewer.rs
index 1e0fd76b..1cd9ad8d 100644
--- a/fractal-gtk/src/appop/media_viewer.rs
+++ b/fractal-gtk/src/appop/media_viewer.rs
@@ -34,7 +34,7 @@ impl AppOp {
main_window,
room,
&msg,
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
login_data.uid,
);
@@ -46,7 +46,7 @@ impl AppOp {
let back_history = self.room_back_history.clone();
let actions = actions::Message::new(
self.thread_pool.clone(),
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
self.ui.clone(),
back_history,
diff --git a/fractal-gtk/src/appop/member.rs b/fractal-gtk/src/appop/member.rs
index 14439891..2ffad084 100644
--- a/fractal-gtk/src/appop/member.rs
+++ b/fractal-gtk/src/appop/member.rs
@@ -193,7 +193,11 @@ impl AppOp {
pub fn search_invite_user(&self, term: String) {
let login_data = unwrap_or_unit_return!(self.login_data.clone());
thread::spawn(move || {
- match user::search(login_data.server_url, login_data.access_token, term) {
+ match user::search(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ term,
+ ) {
Ok(users) => {
APPOP!(user_search_finished, (users));
}
diff --git a/fractal-gtk/src/appop/message.rs b/fractal-gtk/src/appop/message.rs
index 1bc42d9a..f99ea05c 100644
--- a/fractal-gtk/src/appop/message.rs
+++ b/fractal-gtk/src/appop/message.rs
@@ -76,12 +76,15 @@ impl AppOp {
let login_data = self.login_data.clone()?;
let messages = self.history.as_ref()?.get_listbox();
if let Some(ui_msg) = self.create_new_room_message(&msg) {
- let mb = widgets::MessageBox::new(login_data.server_url, login_data.access_token)
- .tmpwidget(
- self.thread_pool.clone(),
- self.user_info_cache.clone(),
- &ui_msg,
- );
+ let mb = widgets::MessageBox::new(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ )
+ .tmpwidget(
+ self.thread_pool.clone(),
+ self.user_info_cache.clone(),
+ &ui_msg,
+ );
let m = mb.get_listbox_row();
messages.add(m);
@@ -118,7 +121,7 @@ impl AppOp {
for t in self.msg_queue.iter().rev().filter(|m| m.msg.room == r.id) {
if let Some(ui_msg) = self.create_new_room_message(&t.msg) {
let mb = widgets::MessageBox::new(
- login_data.server_url.clone(),
+ login_data.session_client.homeserver().clone(),
login_data.access_token.clone(),
)
.tmpwidget(
@@ -165,7 +168,7 @@ impl AppOp {
let event_id = last_message.id.clone()?;
thread::spawn(move || {
match room::mark_as_read(
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
room_id,
event_id,
@@ -221,12 +224,20 @@ impl AppOp {
match &next.msg.mtype[..] {
"m.image" | "m.file" | "m.audio" | "m.video" => {
thread::spawn(move || {
- attach_file(login_data.server_url, login_data.access_token, msg)
+ attach_file(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ msg,
+ )
});
}
_ => {
thread::spawn(move || {
- match room::send_msg(login_data.server_url, login_data.access_token, msg) {
+ match room::send_msg(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ msg,
+ ) {
Ok((txid, evid)) => {
APPOP!(msg_sent, (txid, evid));
let initial = false;
diff --git a/fractal-gtk/src/appop/mod.rs b/fractal-gtk/src/appop/mod.rs
index a1e4ca00..dc7547eb 100644
--- a/fractal-gtk/src/appop/mod.rs
+++ b/fractal-gtk/src/appop/mod.rs
@@ -8,6 +8,7 @@ use std::time::Duration;
use fractal_api::identifiers::{DeviceId, RoomId, UserId};
use fractal_api::r0::AccessToken;
+use fractal_api::Client as MatrixClient;
use gtk::prelude::*;
use crate::backend::ThreadPool;
@@ -74,11 +75,12 @@ impl RoomSearchPagination {
#[derive(Clone, Debug)]
pub struct LoginData {
- pub access_token: AccessToken,
+ pub session_client: MatrixClient,
pub uid: UserId,
+ pub access_token: AccessToken,
+ pub device_id: Box<DeviceId>,
pub username: Option<String>,
pub avatar: Option<PathBuf>,
- pub server_url: Url,
pub identity_url: Url,
}
@@ -90,7 +92,6 @@ pub struct AppOp {
pub sending_message: bool,
pub login_data: Option<LoginData>,
- pub device_id: Option<Box<DeviceId>>, // TODO: Shouldn't be optional
pub active_room: Option<RoomId>,
pub join_to_room: Option<RoomId>,
@@ -143,7 +144,6 @@ impl AppOp {
room_settings: None,
history: None,
login_data: None,
- device_id: None,
syncing: false,
msg_queue: vec![],
sending_message: false,
@@ -177,19 +177,20 @@ impl AppOp {
self.set_state(AppState::Loading);
// FIXME: Username and uid should not be duplicated in cache.
- if let Ok(data) = cache::load() {
+ let device_id = if let Ok(data) = cache::load() {
let r: Vec<Room> = data.rooms.values().cloned().collect();
self.set_rooms(r, true);
- /* Make sure that since is never an empty string */
self.since = data.since.filter(|s| !s.is_empty());
- self.device_id = Some(data.device_id);
- }
+ Some(data.device_id)
+ } else {
+ None
+ };
// FIXME: Storing and getting the password is insecure.
// Only the access token should be used.
if let Ok((username, password, server, id_url)) = self.get_pass() {
- if let Ok((Some(access_token), uid)) = self.get_token() {
- self.bk_login(uid, access_token, self.device_id.clone(), server, id_url);
+ if let (Ok((Some(access_token), uid)), Some(dev_id)) = (self.get_token(), device_id) {
+ self.bk_login(uid, access_token, dev_id, server, id_url);
} else {
self.connect(username, password, server, id_url);
}
diff --git a/fractal-gtk/src/appop/notify.rs b/fractal-gtk/src/appop/notify.rs
index 5055e80a..e5ce591f 100644
--- a/fractal-gtk/src/appop/notify.rs
+++ b/fractal-gtk/src/appop/notify.rs
@@ -44,8 +44,9 @@ impl AppOp {
}
pub fn notify(&self, app: gtk::Application, room_id: &RoomId, id: &EventId) -> Option<()> {
- let server_url = self.login_data.clone()?.server_url;
- let access_token = self.login_data.clone()?.access_token;
+ let login_data = self.login_data.as_ref()?;
+ let access_token = login_data.access_token.clone();
+ let server_url = login_data.session_client.homeserver().clone();
let msg = self.get_message_by_id(room_id, id)?;
let r = self.rooms.get(room_id)?;
let short_body = match &msg.mtype[..] {
diff --git a/fractal-gtk/src/appop/room.rs b/fractal-gtk/src/appop/room.rs
index 3c5b34e3..3f889310 100644
--- a/fractal-gtk/src/appop/room.rs
+++ b/fractal-gtk/src/appop/room.rs
@@ -1,6 +1,6 @@
use crate::backend::room;
use crate::util::i18n::{i18n, i18n_k, ni18n_f};
-use fractal_api::identifiers::{DeviceId, RoomId};
+use fractal_api::identifiers::RoomId;
use fractal_api::url::Url;
use log::{error, warn};
use std::convert::TryInto;
@@ -79,7 +79,7 @@ impl AppOp {
self.update_typing_notification();
} else {
// Request all joined members for each new room
- let server = login_data.server_url.clone();
+ let server = login_data.session_client.homeserver().clone();
let access_token = login_data.access_token.clone();
let room_id = room.id.clone();
thread::spawn(move || {
@@ -94,7 +94,7 @@ impl AppOp {
});
// Download the room avatar
// TODO: Use the avatar url returned by sync
- let server = login_data.server_url.clone();
+ let server = login_data.session_client.homeserver().clone();
let access_token = login_data.access_token.clone();
let room_id = room.id.clone();
thread::spawn(
@@ -142,12 +142,13 @@ impl AppOp {
}
}
- self.roomlist = widgets::RoomList::new(adj, Some(login_data.server_url.clone()));
+ self.roomlist =
+ widgets::RoomList::new(adj, Some(login_data.session_client.homeserver().clone()));
self.roomlist.add_rooms(roomlist);
container.add(self.roomlist.widget());
self.roomlist.connect_fav(move |room, tofav| {
- let server = login_data.server_url.clone();
+ let server = login_data.session_client.homeserver().clone();
let access_token = login_data.access_token.clone();
let uid = login_data.uid.clone();
thread::spawn(move || {
@@ -245,7 +246,7 @@ impl AppOp {
self.roomlist.select(&active_room);
// getting room details
- let server_url = login_data.server_url.clone();
+ let server_url = login_data.session_client.homeserver().clone();
let access_token = login_data.access_token.clone();
let a_room = active_room.clone();
thread::spawn(
@@ -259,7 +260,7 @@ impl AppOp {
},
);
- let server_url = login_data.server_url.clone();
+ let server_url = login_data.session_client.homeserver().clone();
let access_token = login_data.access_token.clone();
let a_room = active_room.clone();
thread::spawn(move || {
@@ -302,7 +303,7 @@ impl AppOp {
let back_history = self.room_back_history.clone();
let actions = actions::Message::new(
self.thread_pool.clone(),
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
self.ui.clone(),
back_history,
@@ -333,7 +334,11 @@ impl AppOp {
let r = unwrap_or_unit_return!(self.active_room.clone());
let room_id = r.clone();
thread::spawn(move || {
- let query = room::leave_room(login_data.server_url, login_data.access_token, room_id);
+ let query = room::leave_room(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ room_id,
+ );
if let Err(err) = query {
err.handle_error();
}
@@ -399,7 +404,7 @@ impl AppOp {
let name = n;
thread::spawn(move || {
match room::new_room(
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
name,
privacy,
@@ -421,10 +426,7 @@ impl AppOp {
let since = self.since.clone();
let username = login_data.username.unwrap_or_default();
let uid = login_data.uid;
- let device_id = self
- .device_id
- .clone()
- .unwrap_or_else(|| Box::<DeviceId>::from(""));
+ let device_id = login_data.device_id;
if cache::store(&rooms, since, username, uid, device_id).is_err() {
error!("Error caching rooms");
@@ -558,7 +560,11 @@ impl AppOp {
}
};
- match room::join_room(login_data.server_url, login_data.access_token, room_id) {
+ match room::join_room(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ room_id,
+ ) {
Ok(jtr) => {
let jtr = Some(jtr);
APPOP!(set_join_to_room, (jtr));
@@ -700,7 +706,11 @@ impl AppOp {
}
thread::spawn(move || {
- match room::get_room_avatar(login_data.server_url, login_data.access_token, room_id) {
+ match room::get_room_avatar(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ room_id,
+ ) {
Ok((room, avatar)) => {
APPOP!(set_room_avatar, (room, avatar));
}
@@ -753,7 +763,7 @@ impl AppOp {
self.typing.insert(active_room.clone(), now);
thread::spawn(move || {
let query = room::send_typing(
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
login_data.uid,
active_room,
diff --git a/fractal-gtk/src/appop/room_settings.rs b/fractal-gtk/src/appop/room_settings.rs
index f961df67..d644f154 100644
--- a/fractal-gtk/src/appop/room_settings.rs
+++ b/fractal-gtk/src/appop/room_settings.rs
@@ -25,7 +25,7 @@ impl AppOp {
&window,
login_data.uid,
room.clone(),
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
);
let page = panel.create()?;
diff --git a/fractal-gtk/src/appop/start_chat.rs b/fractal-gtk/src/appop/start_chat.rs
index c0c89e53..1c902b26 100644
--- a/fractal-gtk/src/appop/start_chat.rs
+++ b/fractal-gtk/src/appop/start_chat.rs
@@ -19,7 +19,7 @@ impl AppOp {
let member = user.0;
thread::spawn(move || {
match room::direct_chat(
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
login_data.uid,
member,
diff --git a/fractal-gtk/src/appop/sync.rs b/fractal-gtk/src/appop/sync.rs
index 52f82353..b399bc1a 100644
--- a/fractal-gtk/src/appop/sync.rs
+++ b/fractal-gtk/src/appop/sync.rs
@@ -30,7 +30,7 @@ impl AppOp {
let since = self.since.clone().filter(|_| !initial);
thread::spawn(move || {
match sync::sync(
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
login_data.uid,
join_to_room,
diff --git a/fractal-gtk/src/appop/user.rs b/fractal-gtk/src/appop/user.rs
index 3789ed3b..e756c1d9 100644
--- a/fractal-gtk/src/appop/user.rs
+++ b/fractal-gtk/src/appop/user.rs
@@ -21,7 +21,7 @@ impl AppOp {
let login_data = unwrap_or_unit_return!(self.login_data.clone());
thread::spawn(clone!(@strong login_data => move || {
- match user::get_username(login_data.server_url, login_data.access_token, login_data.uid) {
+ match user::get_username(login_data.session_client.homeserver().clone(),
login_data.access_token, login_data.uid) {
Ok(username) => {
APPOP!(set_username, (username));
}
@@ -32,7 +32,11 @@ impl AppOp {
}));
thread::spawn(clone!(@strong login_data => move || {
- match user::get_user_avatar(login_data.server_url, login_data.access_token, &login_data.uid) {
+ match user::get_user_avatar(
+ login_data.session_client.homeserver().clone(),
+ login_data.access_token,
+ &login_data.uid,
+ ) {
Ok((_, path)) => {
APPOP!(set_avatar, (path));
}
@@ -90,7 +94,7 @@ impl AppOp {
download_to_cache(
self.thread_pool.clone(),
self.user_info_cache.clone(),
- login_data.server_url.clone(),
+ login_data.session_client.homeserver().clone(),
login_data.access_token.clone(),
login_data.uid.clone(),
data,
@@ -116,7 +120,7 @@ impl AppOp {
download_to_cache(
self.thread_pool.clone(),
self.user_info_cache.clone(),
- login_data.server_url.clone(),
+ login_data.session_client.homeserver().clone(),
login_data.access_token.clone(),
login_data.uid,
data,
diff --git a/fractal-gtk/src/backend/mod.rs b/fractal-gtk/src/backend/mod.rs
index 5043e909..d10b68e0 100644
--- a/fractal-gtk/src/backend/mod.rs
+++ b/fractal-gtk/src/backend/mod.rs
@@ -11,7 +11,7 @@ use std::path::PathBuf;
use std::sync::{Arc, Condvar, Mutex};
use std::thread;
-use crate::client::Client;
+use crate::client::ClientBlocking;
use crate::util::cache_dir_path;
use fractal_api::r0::context::get_context::request as get_context;
use fractal_api::r0::context::get_context::Parameters as GetContextParameters;
@@ -31,7 +31,7 @@ pub mod sync;
pub mod user;
lazy_static! {
- pub static ref HTTP_CLIENT: Client = Client::new();
+ pub static ref HTTP_CLIENT: ClientBlocking = ClientBlocking::new();
}
#[derive(Clone, Debug)]
@@ -187,13 +187,11 @@ pub fn dw_media(
if fname.is_file() && (dest.is_none() || is_fname_recent) {
Ok(fname)
} else {
- HTTP_CLIENT
- .get_client()
- .execute(request)?
- .bytes()
- .map_err(Into::into)
- .and_then(|media| write(&fname, media).map_err(Into::into))
- .and(Ok(fname))
+ let media = HTTP_CLIENT.get_client().execute(request)?.bytes()?;
+
+ write(&fname, media)?;
+
+ Ok(fname)
}
}
diff --git a/fractal-gtk/src/backend/register.rs b/fractal-gtk/src/backend/register.rs
index 89b1377b..037fe546 100644
--- a/fractal-gtk/src/backend/register.rs
+++ b/fractal-gtk/src/backend/register.rs
@@ -46,7 +46,7 @@ pub fn login(
user: String,
password: String,
server: Url,
-) -> Result<(UserId, AccessToken, Option<Box<DeviceId>>), LoginError> {
+) -> Result<(UserId, AccessToken, Box<DeviceId>), LoginError> {
let body = if globals::EMAIL_RE.is_match(&user) {
LoginBody {
auth: Auth::Password { password },
diff --git a/fractal-gtk/src/backend/sync.rs b/fractal-gtk/src/backend/sync.rs
index 622aae4a..e7b0d444 100644
--- a/fractal-gtk/src/backend/sync.rs
+++ b/fractal-gtk/src/backend/sync.rs
@@ -179,7 +179,7 @@ pub fn sync(
let query = ProxySettings::current().and_then(|proxy_settings| {
let client = proxy_settings
- .apply_to_client_builder(client_builder_timeout)
+ .apply_to_blocking_client_builder(client_builder_timeout)
.build()?;
let request = sync_events(base.clone(), ¶ms)?;
let response = client.execute(request)?;
diff --git a/fractal-gtk/src/client.rs b/fractal-gtk/src/client.rs
index 67462068..30aa5913 100644
--- a/fractal-gtk/src/client.rs
+++ b/fractal-gtk/src/client.rs
@@ -1,10 +1,17 @@
use crate::error::Error;
use crate::globals;
+use async_trait::async_trait;
use fractal_api::reqwest;
+use fractal_api::url::Url;
+use fractal_api::HttpSend;
+use fractal_api::{
+ Client as MatrixClient, ClientConfig as MatrixClientConfig, Error as MatrixSdkError,
+};
use gio::prelude::*;
-use std::sync::Mutex;
+use std::convert::TryInto;
+use std::sync::{Arc, Mutex};
// Special URI used by gio to indicate no proxy
const PROXY_DIRECT_URI: &str = "direct://";
@@ -42,7 +49,7 @@ impl ProxySettings {
))
}
- pub fn apply_to_client_builder(
+ pub fn apply_to_blocking_client_builder(
&self,
mut builder: fractal_api::reqwest::blocking::ClientBuilder,
) -> fractal_api::reqwest::blocking::ClientBuilder {
@@ -58,8 +65,33 @@ impl ProxySettings {
if let Some(https_proxy) = self
.https_proxy
.get(0)
+ .map(reqwest::Proxy::https)
+ .and_then(Result::ok)
+ {
+ builder = builder.proxy(https_proxy);
+ }
+
+ builder
+ }
+
+ pub fn apply_to_client_builder(
+ &self,
+ mut builder: fractal_api::reqwest::ClientBuilder,
+ ) -> fractal_api::reqwest::ClientBuilder {
+ // Reqwest only supports one proxy for each type
+ if let Some(http_proxy) = self
+ .http_proxy
+ .get(0)
.map(reqwest::Proxy::http)
.and_then(Result::ok)
+ {
+ builder = builder.proxy(http_proxy);
+ }
+ if let Some(https_proxy) = self
+ .https_proxy
+ .get(0)
+ .map(reqwest::Proxy::https)
+ .and_then(Result::ok)
{
builder = builder.proxy(https_proxy);
}
@@ -76,7 +108,7 @@ thread_local! {
#[derive(Debug)]
struct ClientInner {
- client: fractal_api::reqwest::blocking::Client,
+ client: fractal_api::reqwest::Client,
proxy_settings: ProxySettings,
}
@@ -86,9 +118,76 @@ pub struct Client {
}
impl Client {
- pub fn new() -> Client {
- Client {
+ pub fn new() -> Self {
+ Self {
inner: Mutex::new(ClientInner {
+ client: Self::build(fractal_api::reqwest::Client::builder()),
+ proxy_settings: Default::default(),
+ }),
+ }
+ }
+
+ pub fn get_client(&self) -> fractal_api::reqwest::Client {
+ // Lock first so we don't overwrite proxy settings with outdated information
+ let mut inner = self.inner.lock().unwrap();
+
+ let new_proxy_settings = ProxySettings::current().unwrap_or_default();
+
+ if inner.proxy_settings != new_proxy_settings {
+ let mut builder = fractal_api::reqwest::Client::builder();
+ builder = new_proxy_settings.apply_to_client_builder(builder);
+ let client = Self::build(builder);
+
+ inner.client = client;
+ inner.proxy_settings = new_proxy_settings;
+ }
+
+ inner.client.clone()
+ }
+
+ fn build(builder: fractal_api::reqwest::ClientBuilder) -> fractal_api::reqwest::Client {
+ builder
+ .gzip(true)
+ .timeout(globals::TIMEOUT)
+ .build()
+ .expect("Couldn't create a http client")
+ }
+}
+
+#[async_trait]
+impl HttpSend for Client {
+ async fn send_request(
+ &self,
+ req: http::Request<Vec<u8>>,
+ ) -> fractal_api::Result<http::Response<Vec<u8>>> {
+ self.get_client().send_request(req).await
+ }
+}
+
+pub fn get_matrix_client<U>(homeserver_url: U) -> Result<MatrixClient, MatrixSdkError>
+where
+ U: TryInto<Url>,
+{
+ let client = Arc::from(Client::new());
+ let config = MatrixClientConfig::new().client(client);
+ MatrixClient::new_with_config(homeserver_url, config)
+}
+
+#[derive(Debug)]
+struct ClientInnerBlocking {
+ client: fractal_api::reqwest::blocking::Client,
+ proxy_settings: ProxySettings,
+}
+
+#[derive(Debug)]
+pub struct ClientBlocking {
+ inner: Mutex<ClientInnerBlocking>,
+}
+
+impl ClientBlocking {
+ pub fn new() -> Self {
+ Self {
+ inner: Mutex::new(ClientInnerBlocking {
client: Self::build(fractal_api::reqwest::blocking::Client::builder()),
proxy_settings: Default::default(),
}),
@@ -103,7 +202,7 @@ impl Client {
if inner.proxy_settings != new_proxy_settings {
let mut builder = fractal_api::reqwest::blocking::Client::builder();
- builder = new_proxy_settings.apply_to_client_builder(builder);
+ builder = new_proxy_settings.apply_to_blocking_client_builder(builder);
let client = Self::build(builder);
inner.client = client;
diff --git a/fractal-gtk/src/widgets/address.rs b/fractal-gtk/src/widgets/address.rs
index 04817d50..89735333 100644
--- a/fractal-gtk/src/widgets/address.rs
+++ b/fractal-gtk/src/widgets/address.rs
@@ -161,7 +161,7 @@ impl<'a> Address<'a> {
let entry = self.entry.clone();
let address = self.address.clone();
let access_token = login_data.access_token;
- let server_url = login_data.server_url;
+ let server_url = login_data.session_client.homeserver().clone();
let id_server = login_data.identity_url;
self.signal_id = Some(self.button.clone().connect_clicked(move |w| {
if !w.get_sensitive() || !w.is_visible() {
diff --git a/fractal-gtk/src/widgets/member.rs b/fractal-gtk/src/widgets/member.rs
index 1832c6af..24efad61 100644
--- a/fractal-gtk/src/widgets/member.rs
+++ b/fractal-gtk/src/widgets/member.rs
@@ -60,7 +60,7 @@ impl<'a> MemberBox<'a> {
download_to_cache(
self.op.thread_pool.clone(),
self.op.user_info_cache.clone(),
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
self.member.uid.clone(),
data,
@@ -105,7 +105,7 @@ impl<'a> MemberBox<'a> {
download_to_cache(
self.op.thread_pool.clone(),
self.op.user_info_cache.clone(),
- login_data.server_url,
+ login_data.session_client.homeserver().clone(),
login_data.access_token,
self.member.uid.clone(),
data,
diff --git a/fractal-gtk/src/widgets/room.rs b/fractal-gtk/src/widgets/room.rs
index d23ed319..5845f9c2 100644
--- a/fractal-gtk/src/widgets/room.rs
+++ b/fractal-gtk/src/widgets/room.rs
@@ -120,7 +120,7 @@ impl<'a> RoomBox<'a> {
let join_button = gtk::Button::with_label(i18n("Join").as_str());
let room_id = room.id.clone();
join_button.connect_clicked(move |_| {
- let server_url = login_data.server_url.clone();
+ let server_url = login_data.session_client.homeserver().clone();
let access_token = login_data.access_token.clone();
let room_id = room_id.clone();
thread::spawn(move || {
diff --git a/fractal-gtk/src/widgets/room_history.rs b/fractal-gtk/src/widgets/room_history.rs
index 91a59b92..29b0f0e3 100644
--- a/fractal-gtk/src/widgets/room_history.rs
+++ b/fractal-gtk/src/widgets/room_history.rs
@@ -301,7 +301,7 @@ impl RoomHistory {
let mut rh = RoomHistory {
rows: Rc::new(RefCell::new(List::new(scroll))),
access_token: login_data.access_token,
- server_url: login_data.server_url,
+ server_url: login_data.session_client.homeserver().clone(),
source_id: Rc::new(RefCell::new(None)),
queue: Rc::new(RefCell::new(VecDeque::new())),
edit_buffer: Rc::new(RefCell::new(VecDeque::new())),
diff --git a/fractal-matrix-api/Cargo.toml b/fractal-matrix-api/Cargo.toml
index c4353a97..53d837f0 100644
--- a/fractal-matrix-api/Cargo.toml
+++ b/fractal-matrix-api/Cargo.toml
@@ -17,7 +17,6 @@ documentation = "https://gnome.pages.gitlab.gnome.org/fractal/fractal_matrix_api
[dependencies]
gio = "0.9.0"
-ruma-identifiers = "0.17.1"
serde_json = "1.0.48"
[dependencies.serde]
@@ -31,3 +30,8 @@ features = ["blocking", "json", "gzip", "socks"]
[dependencies.url]
version = "2.1.1"
features = ["serde"]
+
+[dependencies.matrix-sdk]
+git = "https://github.com/matrix-org/matrix-rust-sdk.git"
+rev = "0422bae92485b033d4f9b56f2331909653655609"
+features = ["unstable-synapse-quirks", "socks"]
diff --git a/fractal-matrix-api/src/lib.rs b/fractal-matrix-api/src/lib.rs
index ad87e5e8..5e894f98 100644
--- a/fractal-matrix-api/src/lib.rs
+++ b/fractal-matrix-api/src/lib.rs
@@ -1,9 +1,7 @@
-#[macro_use]
pub mod identity;
pub mod r0;
-pub use reqwest;
-pub use ruma_identifiers as identifiers;
+pub use matrix_sdk::*;
pub use url;
#[cfg(test)]
diff --git a/fractal-matrix-api/src/meson.build b/fractal-matrix-api/src/meson.build
index 5bdbe0e2..1853e32a 100644
--- a/fractal-matrix-api/src/meson.build
+++ b/fractal-matrix-api/src/meson.build
@@ -65,5 +65,4 @@ api_sources = files(
'identity.rs',
'lib.rs',
'r0.rs',
- 'util.rs'
)
diff --git a/fractal-matrix-api/src/r0/account/login.rs b/fractal-matrix-api/src/r0/account/login.rs
index 84d66021..4634b0e2 100644
--- a/fractal-matrix-api/src/r0/account/login.rs
+++ b/fractal-matrix-api/src/r0/account/login.rs
@@ -1,10 +1,10 @@
use super::Identifier;
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::DeviceId;
+use matrix_sdk::identifiers::UserId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::DeviceId;
-use ruma_identifiers::UserId;
use serde::{Deserialize, Serialize};
use url::Url;
@@ -33,7 +33,7 @@ pub enum Auth {
pub struct Response {
pub access_token: Option<AccessToken>,
pub user_id: Option<UserId>,
- pub device_id: Option<Box<DeviceId>>,
+ pub device_id: Box<DeviceId>,
}
pub fn request(base: Url, body: &Body) -> Result<Request, Error> {
diff --git a/fractal-matrix-api/src/r0/account/register.rs b/fractal-matrix-api/src/r0/account/register.rs
index eba81978..3a8522a1 100644
--- a/fractal-matrix-api/src/r0/account/register.rs
+++ b/fractal-matrix-api/src/r0/account/register.rs
@@ -1,10 +1,10 @@
use super::AuthenticationData;
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::DeviceId;
+use matrix_sdk::identifiers::UserId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::DeviceId;
-use ruma_identifiers::UserId;
use serde::{Deserialize, Serialize};
use std::ops::Not;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/config/get_global_account_data.rs
b/fractal-matrix-api/src/r0/config/get_global_account_data.rs
index 9630575b..fb515807 100644
--- a/fractal-matrix-api/src/r0/config/get_global_account_data.rs
+++ b/fractal-matrix-api/src/r0/config/get_global_account_data.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::UserId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::UserId;
use serde::Serialize;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/config/set_global_account_data.rs
b/fractal-matrix-api/src/r0/config/set_global_account_data.rs
index 5e95a77c..00a91f44 100644
--- a/fractal-matrix-api/src/r0/config/set_global_account_data.rs
+++ b/fractal-matrix-api/src/r0/config/set_global_account_data.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::UserId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::UserId;
use serde::Serialize;
use serde_json::Value as JsonValue;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/config/set_room_account_data.rs
b/fractal-matrix-api/src/r0/config/set_room_account_data.rs
index 12bc31c2..a23c0892 100644
--- a/fractal-matrix-api/src/r0/config/set_room_account_data.rs
+++ b/fractal-matrix-api/src/r0/config/set_room_account_data.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{RoomId, UserId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{RoomId, UserId};
use serde::Serialize;
use serde_json::Value as JsonValue;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/context/get_context.rs
b/fractal-matrix-api/src/r0/context/get_context.rs
index 2d574032..f5b39f93 100644
--- a/fractal-matrix-api/src/r0/context/get_context.rs
+++ b/fractal-matrix-api/src/r0/context/get_context.rs
@@ -2,10 +2,10 @@ use crate::r0::filter::serialize_room_event_filter_as_str;
use crate::r0::filter::RoomEventFilter;
use crate::r0::u64_is_10;
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{EventId, RoomId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{EventId, RoomId};
use serde::{Deserialize, Serialize};
use serde_json::Value as JsonValue;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/directory/post_public_rooms.rs
b/fractal-matrix-api/src/r0/directory/post_public_rooms.rs
index 9d9ac079..1b7c70a8 100644
--- a/fractal-matrix-api/src/r0/directory/post_public_rooms.rs
+++ b/fractal-matrix-api/src/r0/directory/post_public_rooms.rs
@@ -1,9 +1,9 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::RoomAliasId;
+use matrix_sdk::identifiers::RoomId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::RoomAliasId;
-use ruma_identifiers::RoomId;
use serde::ser::SerializeMap;
use serde::{Deserialize, Serialize, Serializer};
use url::Url;
diff --git a/fractal-matrix-api/src/r0/membership/invite_user.rs
b/fractal-matrix-api/src/r0/membership/invite_user.rs
index c36f74b4..9dbc997d 100644
--- a/fractal-matrix-api/src/r0/membership/invite_user.rs
+++ b/fractal-matrix-api/src/r0/membership/invite_user.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{RoomId, UserId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{RoomId, UserId};
use serde::Serialize;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/membership/join_room_by_id_or_alias.rs
b/fractal-matrix-api/src/r0/membership/join_room_by_id_or_alias.rs
index d0df557b..a60ec3c8 100644
--- a/fractal-matrix-api/src/r0/membership/join_room_by_id_or_alias.rs
+++ b/fractal-matrix-api/src/r0/membership/join_room_by_id_or_alias.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{RoomId, RoomIdOrAliasId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{RoomId, RoomIdOrAliasId};
use serde::{Deserialize, Serialize};
use url::Host;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/membership/leave_room.rs
b/fractal-matrix-api/src/r0/membership/leave_room.rs
index b5256218..5981b7cc 100644
--- a/fractal-matrix-api/src/r0/membership/leave_room.rs
+++ b/fractal-matrix-api/src/r0/membership/leave_room.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::RoomId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::RoomId;
use serde::Serialize;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/message/create_message_event.rs
b/fractal-matrix-api/src/r0/message/create_message_event.rs
index 4e3c6b92..c878a9d2 100644
--- a/fractal-matrix-api/src/r0/message/create_message_event.rs
+++ b/fractal-matrix-api/src/r0/message/create_message_event.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{EventId, RoomId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{EventId, RoomId};
use serde::{Deserialize, Serialize};
use serde_json::Value as JsonValue;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/message/get_message_events.rs
b/fractal-matrix-api/src/r0/message/get_message_events.rs
index a89acc6a..0b1d877f 100644
--- a/fractal-matrix-api/src/r0/message/get_message_events.rs
+++ b/fractal-matrix-api/src/r0/message/get_message_events.rs
@@ -2,10 +2,10 @@ use crate::r0::filter::serialize_room_event_filter_as_str;
use crate::r0::filter::RoomEventFilter;
use crate::r0::u64_is_10;
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::RoomId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::RoomId;
use serde::{Deserialize, Serialize};
use serde_json::Value as JsonValue;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/profile/get_display_name.rs
b/fractal-matrix-api/src/r0/profile/get_display_name.rs
index 1e7171af..a735642f 100644
--- a/fractal-matrix-api/src/r0/profile/get_display_name.rs
+++ b/fractal-matrix-api/src/r0/profile/get_display_name.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::UserId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::UserId;
use serde::{Deserialize, Serialize};
use url::Url;
diff --git a/fractal-matrix-api/src/r0/profile/get_profile.rs
b/fractal-matrix-api/src/r0/profile/get_profile.rs
index a59d99ee..c542a96e 100644
--- a/fractal-matrix-api/src/r0/profile/get_profile.rs
+++ b/fractal-matrix-api/src/r0/profile/get_profile.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::UserId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::UserId;
use serde::{Deserialize, Serialize};
use url::Url;
diff --git a/fractal-matrix-api/src/r0/profile/set_avatar_url.rs
b/fractal-matrix-api/src/r0/profile/set_avatar_url.rs
index 771e2b8e..407a4c07 100644
--- a/fractal-matrix-api/src/r0/profile/set_avatar_url.rs
+++ b/fractal-matrix-api/src/r0/profile/set_avatar_url.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::UserId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::UserId;
use serde::Serialize;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/profile/set_display_name.rs
b/fractal-matrix-api/src/r0/profile/set_display_name.rs
index dbc4f0a6..1ddd6d4e 100644
--- a/fractal-matrix-api/src/r0/profile/set_display_name.rs
+++ b/fractal-matrix-api/src/r0/profile/set_display_name.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::UserId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::UserId;
use serde::Serialize;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/pushrules/delete_room_rules.rs
b/fractal-matrix-api/src/r0/pushrules/delete_room_rules.rs
index 753bc457..d2df1701 100644
--- a/fractal-matrix-api/src/r0/pushrules/delete_room_rules.rs
+++ b/fractal-matrix-api/src/r0/pushrules/delete_room_rules.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::RoomId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::RoomId;
use serde::Serialize;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/pushrules/get_room_rules.rs
b/fractal-matrix-api/src/r0/pushrules/get_room_rules.rs
index ea3c4491..57733f59 100644
--- a/fractal-matrix-api/src/r0/pushrules/get_room_rules.rs
+++ b/fractal-matrix-api/src/r0/pushrules/get_room_rules.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::RoomId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::RoomId;
use serde::Serialize;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/pushrules/set_room_rules.rs
b/fractal-matrix-api/src/r0/pushrules/set_room_rules.rs
index cc1cac1b..677371f3 100644
--- a/fractal-matrix-api/src/r0/pushrules/set_room_rules.rs
+++ b/fractal-matrix-api/src/r0/pushrules/set_room_rules.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::RoomId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::RoomId;
use serde::Serialize;
use serde_json::Value as JsonValue;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/read_marker/set_read_marker.rs
b/fractal-matrix-api/src/r0/read_marker/set_read_marker.rs
index 1cb4e217..e48b1583 100644
--- a/fractal-matrix-api/src/r0/read_marker/set_read_marker.rs
+++ b/fractal-matrix-api/src/r0/read_marker/set_read_marker.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{EventId, RoomId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{EventId, RoomId};
use serde::Serialize;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/redact/redact_event.rs
b/fractal-matrix-api/src/r0/redact/redact_event.rs
index 1d4c784d..c10f1ed5 100644
--- a/fractal-matrix-api/src/r0/redact/redact_event.rs
+++ b/fractal-matrix-api/src/r0/redact/redact_event.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{EventId, RoomId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{EventId, RoomId};
use serde::{Deserialize, Serialize};
use url::Url;
diff --git a/fractal-matrix-api/src/r0/room/create_room.rs b/fractal-matrix-api/src/r0/room/create_room.rs
index 400652a2..3035265e 100644
--- a/fractal-matrix-api/src/r0/room/create_room.rs
+++ b/fractal-matrix-api/src/r0/room/create_room.rs
@@ -1,9 +1,9 @@
use super::Visibility;
use crate::r0::{AccessToken, HostAndPort, Medium};
+use matrix_sdk::identifiers::{RoomId, UserId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{RoomId, UserId};
use serde::{Deserialize, Serialize};
use serde_json::Value as JsonValue;
use std::ops::Not;
diff --git a/fractal-matrix-api/src/r0/search/user.rs b/fractal-matrix-api/src/r0/search/user.rs
index 8020103b..b86660cc 100644
--- a/fractal-matrix-api/src/r0/search/user.rs
+++ b/fractal-matrix-api/src/r0/search/user.rs
@@ -1,9 +1,9 @@
use crate::r0::u64_is_10;
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::UserId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::UserId;
use serde::{Deserialize, Serialize};
use url::Url;
diff --git a/fractal-matrix-api/src/r0/state/create_state_events_for_key.rs
b/fractal-matrix-api/src/r0/state/create_state_events_for_key.rs
index 48d9f19c..f96a218d 100644
--- a/fractal-matrix-api/src/r0/state/create_state_events_for_key.rs
+++ b/fractal-matrix-api/src/r0/state/create_state_events_for_key.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::RoomId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::RoomId;
use serde::Serialize;
use serde_json::Value as JsonValue;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/state/get_state_events_for_key.rs
b/fractal-matrix-api/src/r0/state/get_state_events_for_key.rs
index 7adeb12c..e64a5af6 100644
--- a/fractal-matrix-api/src/r0/state/get_state_events_for_key.rs
+++ b/fractal-matrix-api/src/r0/state/get_state_events_for_key.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::RoomId;
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::RoomId;
use serde::Serialize;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/sync/get_joined_members.rs
b/fractal-matrix-api/src/r0/sync/get_joined_members.rs
index d77e2d76..0046f9fd 100644
--- a/fractal-matrix-api/src/r0/sync/get_joined_members.rs
+++ b/fractal-matrix-api/src/r0/sync/get_joined_members.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{RoomId, UserId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{RoomId, UserId};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/sync/sync_events.rs b/fractal-matrix-api/src/r0/sync/sync_events.rs
index f03cfce6..05a1ae68 100644
--- a/fractal-matrix-api/src/r0/sync/sync_events.rs
+++ b/fractal-matrix-api/src/r0/sync/sync_events.rs
@@ -1,9 +1,9 @@
use crate::r0::filter::{serialize_filter_as_str, Filter};
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{RoomId, UserId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{RoomId, UserId};
use serde::ser::SerializeMap;
use serde::{Deserialize, Serialize, Serializer};
use serde_json::Value as JsonValue;
diff --git a/fractal-matrix-api/src/r0/tag/create_tag.rs b/fractal-matrix-api/src/r0/tag/create_tag.rs
index f71870dd..3effbf09 100644
--- a/fractal-matrix-api/src/r0/tag/create_tag.rs
+++ b/fractal-matrix-api/src/r0/tag/create_tag.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{RoomId, UserId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{RoomId, UserId};
use serde::Serialize;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/tag/delete_tag.rs b/fractal-matrix-api/src/r0/tag/delete_tag.rs
index dd3210e4..bb7f2da3 100644
--- a/fractal-matrix-api/src/r0/tag/delete_tag.rs
+++ b/fractal-matrix-api/src/r0/tag/delete_tag.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{RoomId, UserId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{RoomId, UserId};
use serde::Serialize;
use url::Url;
diff --git a/fractal-matrix-api/src/r0/typing.rs b/fractal-matrix-api/src/r0/typing.rs
index 43046523..cdf784af 100644
--- a/fractal-matrix-api/src/r0/typing.rs
+++ b/fractal-matrix-api/src/r0/typing.rs
@@ -1,8 +1,8 @@
use crate::r0::AccessToken;
+use matrix_sdk::identifiers::{RoomId, UserId};
use reqwest::blocking::Client;
use reqwest::blocking::Request;
use reqwest::Error;
-use ruma_identifiers::{RoomId, UserId};
use serde::ser::SerializeMap;
use serde::Serialize;
use serde::Serializer;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]