diff --git a/Cargo.lock b/Cargo.lock
index 51ccff7..31bb645 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -187,7 +187,7 @@ dependencies = [
"log",
"opentelemetry",
"opentelemetry-jaeger",
- "rand 0.8.3",
+ "rand",
"regex",
"reqwest",
"ring",
@@ -780,9 +780,9 @@ checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135"
[[package]]
name = "itertools"
-version = "0.9.0"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
+checksum = "37d572918e350e82412fe766d24b15e6682fb2ed2bbe018280caa810397cb319"
dependencies = [
"either",
]
@@ -810,9 +810,9 @@ dependencies = [
[[package]]
name = "js_int"
-version = "0.1.9"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b96797f53235a1d6dc985f244a69de54b04c45b7e0e357a35c85a45a847d92f2"
+checksum = "fcae89e078a96b781b38f36225bb3a174b8f6e905dfec550dd16a13539c82acc"
dependencies = [
"serde",
]
@@ -1106,7 +1106,7 @@ dependencies = [
"lazy_static",
"percent-encoding",
"pin-project",
- "rand 0.8.3",
+ "rand",
"thiserror",
]
@@ -1317,19 +1317,6 @@ dependencies = [
"proc-macro2",
]
-[[package]]
-name = "rand"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
-dependencies = [
- "getrandom 0.1.16",
- "libc",
- "rand_chacha 0.2.2",
- "rand_core 0.5.1",
- "rand_hc 0.2.0",
-]
-
[[package]]
name = "rand"
version = "0.8.3"
@@ -1337,19 +1324,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
dependencies = [
"libc",
- "rand_chacha 0.3.0",
- "rand_core 0.6.2",
- "rand_hc 0.3.0",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
-dependencies = [
- "ppv-lite86",
- "rand_core 0.5.1",
+ "rand_chacha",
+ "rand_core",
+ "rand_hc",
]
[[package]]
@@ -1359,16 +1336,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d"
dependencies = [
"ppv-lite86",
- "rand_core 0.6.2",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
-dependencies = [
- "getrandom 0.1.16",
+ "rand_core",
]
[[package]]
@@ -1380,22 +1348,13 @@ dependencies = [
"getrandom 0.2.2",
]
-[[package]]
-name = "rand_hc"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
-dependencies = [
- "rand_core 0.5.1",
-]
-
[[package]]
name = "rand_hc"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
dependencies = [
- "rand_core 0.6.2",
+ "rand_core",
]
[[package]]
@@ -1556,7 +1515,7 @@ dependencies = [
"memchr",
"num_cpus",
"parking_lot",
- "rand 0.8.3",
+ "rand",
"ref-cast",
"rocket_codegen",
"rocket_http",
@@ -1610,8 +1569,8 @@ dependencies = [
[[package]]
name = "ruma"
-version = "0.0.1"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.0.2"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"assign",
"js_int",
@@ -1622,14 +1581,16 @@ dependencies = [
"ruma-events",
"ruma-federation-api",
"ruma-identifiers",
+ "ruma-identity-service-api",
+ "ruma-push-gateway-api",
"ruma-serde",
"ruma-signatures",
]
[[package]]
name = "ruma-api"
-version = "0.17.0-alpha.1"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.17.0-alpha.2"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"http",
"percent-encoding",
@@ -1643,8 +1604,8 @@ dependencies = [
[[package]]
name = "ruma-api-macros"
-version = "0.17.0-alpha.1"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.17.0-alpha.2"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -1654,8 +1615,8 @@ dependencies = [
[[package]]
name = "ruma-appservice-api"
-version = "0.2.0-alpha.1"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.2.0-alpha.2"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"ruma-api",
"ruma-common",
@@ -1668,8 +1629,8 @@ dependencies = [
[[package]]
name = "ruma-client-api"
-version = "0.10.0-alpha.1"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.10.0-alpha.2"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"assign",
"http",
@@ -1687,8 +1648,8 @@ dependencies = [
[[package]]
name = "ruma-common"
-version = "0.2.0"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.3.0-alpha.1"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"js_int",
"maplit",
@@ -1700,8 +1661,8 @@ dependencies = [
[[package]]
name = "ruma-events"
-version = "0.22.0-alpha.1"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.22.0-alpha.2"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"js_int",
"ruma-common",
@@ -1714,8 +1675,8 @@ dependencies = [
[[package]]
name = "ruma-events-macros"
-version = "0.22.0-alpha.1"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.22.0-alpha.2"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -1725,8 +1686,8 @@ dependencies = [
[[package]]
name = "ruma-federation-api"
-version = "0.0.3"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.1.0-alpha.1"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"js_int",
"ruma-api",
@@ -1740,22 +1701,22 @@ dependencies = [
[[package]]
name = "ruma-identifiers"
-version = "0.17.4"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.18.0-alpha.1"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"paste",
- "rand 0.7.3",
+ "rand",
"ruma-identifiers-macros",
"ruma-identifiers-validation",
"ruma-serde",
+ "ruma-serde-macros",
"serde",
- "strum",
]
[[package]]
name = "ruma-identifiers-macros"
-version = "0.17.4"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.18.0-alpha.1"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"proc-macro2",
"quote",
@@ -1765,16 +1726,41 @@ dependencies = [
[[package]]
name = "ruma-identifiers-validation"
-version = "0.1.1"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.2.0"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
+
+[[package]]
+name = "ruma-identity-service-api"
+version = "0.0.1"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
+ "ruma-api",
+ "ruma-common",
+ "ruma-identifiers",
+ "ruma-serde",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "ruma-push-gateway-api"
+version = "0.0.1"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
+dependencies = [
+ "js_int",
+ "ruma-api",
+ "ruma-common",
+ "ruma-events",
+ "ruma-identifiers",
+ "ruma-serde",
"serde",
+ "serde_json",
]
[[package]]
name = "ruma-serde"
-version = "0.2.3"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.3.0"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"form_urlencoded",
"itoa",
@@ -1786,8 +1772,8 @@ dependencies = [
[[package]]
name = "ruma-serde-macros"
-version = "0.2.0"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.3.0"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -1797,10 +1783,10 @@ dependencies = [
[[package]]
name = "ruma-signatures"
-version = "0.6.0-dev.1"
-source = "git+https://github.com/ruma/ruma?rev=ee814aa84934530d76f5e4b275d739805b49bdef#ee814aa84934530d76f5e4b275d739805b49bdef"
+version = "0.6.0-alpha.1"
+source = "git+https://github.com/ruma/ruma?rev=0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc#0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc"
dependencies = [
- "base64 0.12.3",
+ "base64 0.13.0",
"ring",
"ruma-identifiers",
"ruma-serde",
@@ -2065,15 +2051,15 @@ checksum = "3015a7d0a5fd5105c91c3710d42f9ccf0abfb287d62206484dcc67f9569a6483"
[[package]]
name = "state-res"
version = "0.1.0"
-source = "git+https://github.com/ruma/state-res?branch=timo-spec-comp#a1c15253f0777baad251da47c3f2c016cfed6f7e"
+source = "git+https://github.com/ruma/state-res?rev=d34a78c5b66de419862d9e592bde8e0007111ebd#d34a78c5b66de419862d9e592bde8e0007111ebd"
dependencies = [
"itertools",
+ "log",
"maplit",
"ruma",
"serde",
"serde_json",
"thiserror",
- "tracing",
]
[[package]]
@@ -2125,27 +2111,6 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0"
-[[package]]
-name = "strum"
-version = "0.19.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b89a286a7e3b5720b9a477b23253bc50debac207c8d21505f8e70b36792f11b5"
-dependencies = [
- "strum_macros",
-]
-
-[[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 = "syn"
version = "1.0.60"
@@ -2165,7 +2130,7 @@ checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22"
dependencies = [
"cfg-if",
"libc",
- "rand 0.8.3",
+ "rand",
"redox_syscall 0.2.5",
"remove_dir_all",
"winapi",
@@ -2470,7 +2435,7 @@ dependencies = [
"ipnet",
"lazy_static",
"log",
- "rand 0.8.3",
+ "rand",
"smallvec",
"thiserror",
"tokio",
diff --git a/Cargo.toml b/Cargo.toml
index 8addf50..a45cba6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -18,14 +18,13 @@ rocket = { git = "https://github.com/SergioBenitez/Rocket.git", rev = "93e62c86e
#rocket = { git = "https://github.com/timokoesters/Rocket.git", branch = "empty_parameters", default-features = false, features = ["tls"] }
# Used for matrix spec type definitions and helpers
-ruma = { git = "https://github.com/ruma/ruma", features = ["rand", "client-api", "federation-api", "unstable-pre-spec", "unstable-synapse-quirks", "unstable-exhaustive-types"], rev = "ee814aa84934530d76f5e4b275d739805b49bdef" }
-# ruma = { git = "https://github.com/DevinR528/ruma", features = ["rand", "client-api", "federation-api", "unstable-exhaustive-types", "unstable-pre-spec", "unstable-synapse-quirks"], branch = "unstable-join" }
+ruma = { git = "https://github.com/ruma/ruma", features = ["rand", "appservice-api", "client-api", "federation-api", "push-gateway-api", "unstable-pre-spec", "unstable-synapse-quirks", "unstable-exhaustive-types"], rev = "0a10afe6dacc2b7a50a8002c953d10b7fb4e37bc" }
+# ruma = { git = "https://github.com/DevinR528/ruma", features = ["rand", "client-api", "federation-api", "unstable-exhaustive-types", "unstable-pre-spec", "unstable-synapse-quirks"], branch = "verified-export" }
# ruma = { path = "../ruma/ruma", features = ["unstable-exhaustive-types", "rand", "client-api", "federation-api", "unstable-pre-spec", "unstable-synapse-quirks"] }
# Used when doing state resolution
# state-res = { git = "https://github.com/timokoesters/state-res", branch = "timo-spec-comp", features = ["unstable-pre-spec"] }
-state-res = { git = "https://github.com/ruma/state-res", branch = "timo-spec-comp", features = ["unstable-pre-spec", "gen-eventid"] }
-#state-res = { path = "../state-res", features = ["unstable-pre-spec", "gen-eventid"] }
+state-res = { git = "https://github.com/ruma/state-res", rev = "d34a78c5b66de419862d9e592bde8e0007111ebd", features = ["unstable-pre-spec", "gen-eventid"] }#state-res = { path = "../state-res", features = ["unstable-pre-spec", "gen-eventid"] }
# Used for long polling and federation sender, should be the same as rocket::tokio
tokio = "1.2.0"
diff --git a/src/client_server/account.rs b/src/client_server/account.rs
index 044468b..1fa355d 100644
--- a/src/client_server/account.rs
+++ b/src/client_server/account.rs
@@ -241,11 +241,7 @@ pub async fn register_route(
},
&conduit_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 2. Make conduit bot join
@@ -266,11 +262,7 @@ pub async fn register_route(
},
&conduit_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 3. Power levels
@@ -304,11 +296,7 @@ pub async fn register_route(
},
&conduit_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 4.1 Join Rules
@@ -325,11 +313,7 @@ pub async fn register_route(
},
&conduit_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 4.2 History Visibility
@@ -348,11 +332,7 @@ pub async fn register_route(
},
&conduit_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 4.3 Guest Access
@@ -369,11 +349,7 @@ pub async fn register_route(
},
&conduit_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 6. Events implied by name and topic
@@ -392,11 +368,7 @@ pub async fn register_route(
},
&conduit_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
db.rooms.build_and_append_pdu(
@@ -412,11 +384,7 @@ pub async fn register_route(
},
&conduit_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// Room alias
@@ -438,11 +406,7 @@ pub async fn register_route(
},
&conduit_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
db.rooms.set_alias(&alias, Some(&room_id), &db.globals)?;
@@ -465,11 +429,7 @@ pub async fn register_route(
},
&conduit_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
db.rooms.build_and_append_pdu(
PduBuilder {
@@ -488,11 +448,7 @@ pub async fn register_route(
},
&user_id,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// Send welcome message
@@ -517,11 +473,7 @@ pub async fn register_route(
},
&conduit_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
}
@@ -696,11 +648,7 @@ pub async fn deactivate_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
}
@@ -716,3 +664,17 @@ pub async fn deactivate_route(
}
.into())
}
+
+/*/
+#[cfg_attr(
+ feature = "conduit_bin",
+ get("/_matrix/client/r0/account/3pid", data = "
")
+)]
+pub async fn third_party_route(
+ body: Ruma>,
+) -> ConduitResult {
+ let sender_user = body.sender_user.as_ref().expect("user is authenticated");
+
+ Ok(account::add_3pid::Response::default().into())
+}
+*/
diff --git a/src/client_server/alias.rs b/src/client_server/alias.rs
index 0a8ad08..03d4909 100644
--- a/src/client_server/alias.rs
+++ b/src/client_server/alias.rs
@@ -74,7 +74,7 @@ pub async fn get_alias_helper(
.sending
.send_federation_request(
&db.globals,
- room_alias.server_name().to_owned(),
+ room_alias.server_name(),
federation::query::get_room_information::v1::Request { room_alias },
)
.await?;
diff --git a/src/client_server/directory.rs b/src/client_server/directory.rs
index 0dadde9..ae70ec5 100644
--- a/src/client_server/directory.rs
+++ b/src/client_server/directory.rs
@@ -141,7 +141,7 @@ pub async fn get_public_rooms_filtered_helper(
.sending
.send_federation_request(
&db.globals,
- other_server.to_owned(),
+ other_server,
federation::directory::get_public_rooms_filtered::v1::Request {
limit,
since: since.as_deref(),
diff --git a/src/client_server/media.rs b/src/client_server/media.rs
index 2db4fc6..57fc2b0 100644
--- a/src/client_server/media.rs
+++ b/src/client_server/media.rs
@@ -80,7 +80,7 @@ pub async fn get_content_route(
.sending
.send_federation_request(
&db.globals,
- body.server_name.clone(),
+ &body.server_name,
get_content::Request {
allow_remote: false,
server_name: &body.server_name,
@@ -130,12 +130,12 @@ pub async fn get_content_thumbnail_route(
.sending
.send_federation_request(
&db.globals,
- body.server_name.clone(),
+ &body.server_name,
get_content_thumbnail::Request {
allow_remote: false,
height: body.height,
width: body.width,
- method: body.method,
+ method: body.method.clone(),
server_name: &body.server_name,
media_id: &body.media_id,
},
diff --git a/src/client_server/membership.rs b/src/client_server/membership.rs
index 287cfbb..2a10c81 100644
--- a/src/client_server/membership.rs
+++ b/src/client_server/membership.rs
@@ -21,7 +21,7 @@ use ruma::{
serde::{to_canonical_value, CanonicalJsonObject, Raw},
EventId, RoomId, RoomVersionId, ServerName, UserId,
};
-use state_res::StateEvent;
+use state_res::Event;
use std::{
collections::{BTreeMap, HashMap, HashSet},
convert::TryFrom,
@@ -127,11 +127,7 @@ pub async fn leave_room_route(
},
&sender_user,
&body.room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
db.flush().await?;
@@ -168,11 +164,7 @@ pub async fn invite_user_route(
},
&sender_user,
&body.room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
db.flush().await?;
@@ -225,11 +217,7 @@ pub async fn kick_user_route(
},
&sender_user,
&body.room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
db.flush().await?;
@@ -286,11 +274,7 @@ pub async fn ban_user_route(
},
&sender_user,
&body.room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
db.flush().await?;
@@ -339,11 +323,7 @@ pub async fn unban_user_route(
},
&sender_user,
&body.room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
db.flush().await?;
@@ -479,7 +459,7 @@ async fn join_room_by_id_helper(
.sending
.send_federation_request(
&db.globals,
- remote_server.clone(),
+ remote_server,
federation::membership::create_join_event_template::v1::Request {
room_id,
user_id: sender_user,
@@ -558,7 +538,7 @@ async fn join_room_by_id_helper(
.sending
.send_federation_request(
&db.globals,
- remote_server.clone(),
+ remote_server,
federation::membership::create_join_event::v2::Request {
room_id,
event_id: &event_id,
@@ -605,19 +585,19 @@ async fn join_room_by_id_helper(
.chain(iter::once(Ok((event_id, join_event)))) // Add join event we just created
.map(|r| {
let (event_id, value) = r?;
- state_res::StateEvent::from_id_canon_obj(event_id.clone(), value.clone())
+ PduEvent::from_id_val(&event_id, value.clone())
.map(|ev| (event_id, Arc::new(ev)))
.map_err(|e| {
warn!("{:?}: {}", value, e);
Error::BadServerResponse("Invalid PDU in send_join response.")
})
})
- .collect::>>>()?;
+ .collect::>>>()?;
let control_events = event_map
.values()
- .filter(|pdu| pdu.is_power_event())
- .map(|pdu| pdu.event_id())
+ .filter(|pdu| state_res::is_power_event(pdu))
+ .map(|pdu| pdu.event_id.clone())
.collect::>();
// These events are not guaranteed to be sorted but they are resolved according to spec
@@ -629,7 +609,6 @@ async fn join_room_by_id_helper(
&room_id,
&control_events,
&mut event_map,
- &db.rooms,
&event_ids,
);
@@ -640,7 +619,6 @@ async fn join_room_by_id_helper(
&sorted_control_events,
&BTreeMap::new(), // We have no "clean/resolved" events to add (these extend the `resolved_control_events`)
&mut event_map,
- &db.rooms,
)
.expect("iterative auth check failed on resolved events");
@@ -657,14 +635,14 @@ async fn join_room_by_id_helper(
.cloned()
.collect::>();
- let power_level = resolved_control_events.get(&(EventType::RoomPowerLevels, "".into()));
+ let power_level =
+ resolved_control_events.get(&(EventType::RoomPowerLevels, Some("".into())));
// Sort the remaining non control events
let sorted_event_ids = state_res::StateResolution::mainline_sort(
room_id,
&events_to_sort,
power_level,
&mut event_map,
- &db.rooms,
);
let resolved_events = state_res::StateResolution::iterative_auth_check(
@@ -673,7 +651,6 @@ async fn join_room_by_id_helper(
&sorted_event_ids,
&resolved_control_events,
&mut event_map,
- &db.rooms,
)
.expect("iterative auth check failed on resolved events");
@@ -696,17 +673,17 @@ async fn join_room_by_id_helper(
pdu_id.push(0xff);
pdu_id.extend_from_slice(&count.to_be_bytes());
db.rooms.append_pdu(
- &PduEvent::from(&**pdu),
+ &pdu,
utils::to_canonical_object(&**pdu).expect("Pdu is valid canonical object"),
count,
pdu_id.clone().into(),
- &db.globals,
- &db.account_data,
- &db.admin,
+ &db,
)?;
if state_events.contains(ev_id) {
- state.insert((pdu.kind(), pdu.state_key()), pdu_id);
+ if let Some(key) = &pdu.state_key {
+ state.insert((pdu.kind(), key.to_string()), pdu_id);
+ }
}
}
@@ -730,11 +707,7 @@ async fn join_room_by_id_helper(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
}
diff --git a/src/client_server/message.rs b/src/client_server/message.rs
index 39a61cb..04f27de 100644
--- a/src/client_server/message.rs
+++ b/src/client_server/message.rs
@@ -8,7 +8,10 @@ use ruma::{
events::EventContent,
EventId,
};
-use std::convert::{TryFrom, TryInto};
+use std::{
+ collections::BTreeMap,
+ convert::{TryFrom, TryInto},
+};
#[cfg(feature = "conduit_bin")]
use rocket::{get, put};
@@ -47,7 +50,7 @@ pub async fn send_message_event_route(
return Ok(send_message_event::Response { event_id }.into());
}
- let mut unsigned = serde_json::Map::new();
+ let mut unsigned = BTreeMap::new();
unsigned.insert("transaction_id".to_owned(), body.txn_id.clone().into());
let event_id = db.rooms.build_and_append_pdu(
@@ -66,11 +69,7 @@ pub async fn send_message_event_route(
},
&sender_user,
&body.room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
db.transaction_ids.add_txnid(
diff --git a/src/client_server/profile.rs b/src/client_server/profile.rs
index bd8425a..7e57c1e 100644
--- a/src/client_server/profile.rs
+++ b/src/client_server/profile.rs
@@ -64,11 +64,7 @@ pub async fn set_displayname_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// Presence update
@@ -163,11 +159,7 @@ pub async fn set_avatar_url_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// Presence update
diff --git a/src/client_server/push.rs b/src/client_server/push.rs
index 5403f96..a4e6161 100644
--- a/src/client_server/push.rs
+++ b/src/client_server/push.rs
@@ -5,10 +5,11 @@ use ruma::{
error::ErrorKind,
r0::push::{
delete_pushrule, get_pushers, get_pushrule, get_pushrule_actions, get_pushrule_enabled,
- get_pushrules_all, set_pushrule, set_pushrule_actions, set_pushrule_enabled, RuleKind,
+ get_pushrules_all, set_pusher, set_pushrule, set_pushrule_actions,
+ set_pushrule_enabled, RuleKind,
},
},
- events::EventType,
+ events::{push_rules, EventType},
push::{
ConditionalPushRuleInit, ContentPushRule, OverridePushRule, PatternedPushRuleInit,
RoomPushRule, SenderPushRule, SimplePushRuleInit, UnderridePushRule,
@@ -31,7 +32,7 @@ pub async fn get_pushrules_all_route(
let event = db
.account_data
- .get::(None, &sender_user, EventType::PushRules)?
+ .get::(None, &sender_user, EventType::PushRules)?
.ok_or(Error::BadRequest(
ErrorKind::NotFound,
"PushRules event not found.",
@@ -56,7 +57,7 @@ pub async fn get_pushrule_route(
let event = db
.account_data
- .get::(None, &sender_user, EventType::PushRules)?
+ .get::(None, &sender_user, EventType::PushRules)?
.ok_or(Error::BadRequest(
ErrorKind::NotFound,
"PushRules event not found.",
@@ -95,7 +96,10 @@ pub async fn get_pushrule_route(
if let Some(rule) = rule {
Ok(get_pushrule::Response { rule }.into())
} else {
- Err(Error::BadRequest(ErrorKind::NotFound, "Push rule not found."))
+ Err(Error::BadRequest(
+ ErrorKind::NotFound,
+ "Push rule not found.",
+ ))
}
}
@@ -119,7 +123,7 @@ pub async fn set_pushrule_route(
let mut event = db
.account_data
- .get::(None, &sender_user, EventType::PushRules)?
+ .get::(None, &sender_user, EventType::PushRules)?
.ok_or(Error::BadRequest(
ErrorKind::NotFound,
"PushRules event not found.",
@@ -266,7 +270,7 @@ pub async fn get_pushrule_actions_route(
let mut event = db
.account_data
- .get::(None, &sender_user, EventType::PushRules)?
+ .get::(None, &sender_user, EventType::PushRules)?
.ok_or(Error::BadRequest(
ErrorKind::NotFound,
"PushRules event not found.",
@@ -330,7 +334,7 @@ pub async fn set_pushrule_actions_route(
let mut event = db
.account_data
- .get::(None, &sender_user, EventType::PushRules)?
+ .get::(None, &sender_user, EventType::PushRules)?
.ok_or(Error::BadRequest(
ErrorKind::NotFound,
"PushRules event not found.",
@@ -434,7 +438,7 @@ pub async fn get_pushrule_enabled_route(
let mut event = db
.account_data
- .get::(None, &sender_user, EventType::PushRules)?
+ .get::(None, &sender_user, EventType::PushRules)?
.ok_or(Error::BadRequest(
ErrorKind::NotFound,
"PushRules event not found.",
@@ -495,7 +499,7 @@ pub async fn set_pushrule_enabled_route(
let mut event = db
.account_data
- .get::(None, &sender_user, EventType::PushRules)?
+ .get::(None, &sender_user, EventType::PushRules)?
.ok_or(Error::BadRequest(
ErrorKind::NotFound,
"PushRules event not found.",
@@ -599,7 +603,7 @@ pub async fn delete_pushrule_route(
let mut event = db
.account_data
- .get::(None, &sender_user, EventType::PushRules)?
+ .get::(None, &sender_user, EventType::PushRules)?
.ok_or(Error::BadRequest(
ErrorKind::NotFound,
"PushRules event not found.",
@@ -673,22 +677,38 @@ pub async fn delete_pushrule_route(
Ok(delete_pushrule::Response.into())
}
-#[cfg_attr(feature = "conduit_bin", get("/_matrix/client/r0/pushers"))]
-#[tracing::instrument]
-pub async fn get_pushers_route() -> ConduitResult {
+#[cfg_attr(
+ feature = "conduit_bin",
+ get("/_matrix/client/r0/pushers", data = "")
+)]
+#[tracing::instrument(skip(db))]
+pub async fn get_pushers_route(
+ db: State<'_, Database>,
+ body: Ruma,
+) -> ConduitResult {
+ let sender = body.sender_user.as_ref().expect("authenticated endpoint");
+
Ok(get_pushers::Response {
- pushers: Vec::new(),
+ pushers: db.pusher.get_pusher(sender)?,
}
.into())
}
-#[cfg_attr(feature = "conduit_bin", post("/_matrix/client/r0/pushers/set"))]
+#[cfg_attr(
+ feature = "conduit_bin",
+ post("/_matrix/client/r0/pushers/set", data = "")
+)]
#[tracing::instrument(skip(db))]
-pub async fn set_pushers_route(db: State<'_, Database>) -> ConduitResult {
+pub async fn set_pushers_route(
+ db: State<'_, Database>,
+ body: Ruma,
+) -> ConduitResult {
+ let sender = body.sender_user.as_ref().expect("authenticated endpoint");
+ let pusher = body.pusher.clone();
+
+ db.pusher.set_pusher(sender, pusher)?;
+
db.flush().await?;
- Ok(get_pushers::Response {
- pushers: Vec::new(),
- }
- .into())
+ Ok(set_pusher::Response::default().into())
}
diff --git a/src/client_server/redact.rs b/src/client_server/redact.rs
index af277db..be5d3b1 100644
--- a/src/client_server/redact.rs
+++ b/src/client_server/redact.rs
@@ -32,11 +32,7 @@ pub async fn redact_event_route(
},
&sender_user,
&body.room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
db.flush().await?;
diff --git a/src/client_server/room.rs b/src/client_server/room.rs
index e2c931c..409028c 100644
--- a/src/client_server/room.rs
+++ b/src/client_server/room.rs
@@ -66,11 +66,7 @@ pub async fn create_room_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 2. Let the room creator join
@@ -91,11 +87,7 @@ pub async fn create_room_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 3. Power levels
@@ -136,11 +128,7 @@ pub async fn create_room_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 4. Events set by preset
@@ -176,11 +164,7 @@ pub async fn create_room_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 4.2 History Visibility
@@ -197,11 +181,7 @@ pub async fn create_room_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 4.3 Guest Access
@@ -226,11 +206,7 @@ pub async fn create_room_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// 5. Events listed in initial_state
@@ -245,16 +221,8 @@ pub async fn create_room_route(
continue;
}
- db.rooms.build_and_append_pdu(
- pdu_builder,
- &sender_user,
- &room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
- )?;
+ db.rooms
+ .build_and_append_pdu(pdu_builder, &sender_user, &room_id, &db)?;
}
// 6. Events implied by name and topic
@@ -274,11 +242,7 @@ pub async fn create_room_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
}
@@ -296,11 +260,7 @@ pub async fn create_room_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
}
@@ -323,11 +283,7 @@ pub async fn create_room_route(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
}
@@ -416,11 +372,7 @@ pub async fn upgrade_room_route(
},
sender_user,
&body.room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// Get the old room federations status
@@ -460,11 +412,7 @@ pub async fn upgrade_room_route(
},
sender_user,
&replacement_room,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// Join the new room
@@ -485,11 +433,7 @@ pub async fn upgrade_room_route(
},
sender_user,
&replacement_room,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
// Recommended transferable state events list from the specs
@@ -522,11 +466,7 @@ pub async fn upgrade_room_route(
},
sender_user,
&replacement_room,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
}
@@ -569,11 +509,7 @@ pub async fn upgrade_room_route(
},
sender_user,
&body.room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
db.flush().await?;
diff --git a/src/client_server/state.rs b/src/client_server/state.rs
index 073d94f..57bf7e5 100644
--- a/src/client_server/state.rs
+++ b/src/client_server/state.rs
@@ -289,11 +289,7 @@ pub async fn send_state_event_for_key_helper(
},
&sender_user,
&room_id,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)?;
Ok(event_id)
diff --git a/src/database.rs b/src/database.rs
index 6dc9c70..73706a4 100644
--- a/src/database.rs
+++ b/src/database.rs
@@ -4,6 +4,7 @@ pub mod appservice;
pub mod globals;
pub mod key_backups;
pub mod media;
+pub mod pusher;
pub mod rooms;
pub mod sending;
pub mod transaction_ids;
@@ -17,9 +18,11 @@ use log::info;
use rocket::futures::{self, channel::mpsc};
use ruma::{DeviceId, ServerName, UserId};
use serde::Deserialize;
-use std::collections::HashMap;
-use std::fs::remove_dir_all;
-use std::sync::{Arc, RwLock};
+use std::{
+ collections::HashMap,
+ fs::remove_dir_all,
+ sync::{Arc, RwLock},
+};
use tokio::sync::Semaphore;
#[derive(Clone, Deserialize)]
@@ -76,6 +79,7 @@ pub struct Database {
pub sending: sending::Sending,
pub admin: admin::Admin,
pub appservice: appservice::Appservice,
+ pub pusher: pusher::PushData,
pub _db: sled::Db,
}
@@ -104,7 +108,7 @@ impl Database {
let (admin_sender, admin_receiver) = mpsc::unbounded();
let db = Self {
- globals: globals::Globals::load(db.open_tree("global")?, config).await?,
+ globals: globals::Globals::load(db.open_tree("global")?, config)?,
users: users::Users {
userid_password: db.open_tree("userid_password")?,
userid_displayname: db.open_tree("userid_displayname")?,
@@ -184,6 +188,7 @@ impl Database {
cached_registrations: Arc::new(RwLock::new(HashMap::new())),
id_appserviceregistrations: db.open_tree("id_appserviceregistrations")?,
},
+ pusher: pusher::PushData::new(&db)?,
_db: db,
};
diff --git a/src/database/admin.rs b/src/database/admin.rs
index 160f55a..3014385 100644
--- a/src/database/admin.rs
+++ b/src/database/admin.rs
@@ -59,11 +59,7 @@ impl Admin {
},
&conduit_user,
&conduit_room,
- &db.globals,
- &db.sending,
- &db.admin,
- &db.account_data,
- &db.appservice,
+ &db,
)
.unwrap();
}
diff --git a/src/database/appservice.rs b/src/database/appservice.rs
index 26ea5b9..764291d 100644
--- a/src/database/appservice.rs
+++ b/src/database/appservice.rs
@@ -1,6 +1,8 @@
use crate::{utils, Error, Result};
-use std::collections::HashMap;
-use std::sync::{Arc, RwLock};
+use std::{
+ collections::HashMap,
+ sync::{Arc, RwLock},
+};
#[derive(Clone)]
pub struct Appservice {
diff --git a/src/database/globals.rs b/src/database/globals.rs
index 6004c10..6f89f6f 100644
--- a/src/database/globals.rs
+++ b/src/database/globals.rs
@@ -22,7 +22,7 @@ pub struct Globals {
}
impl Globals {
- pub async fn load(globals: sled::Tree, config: Config) -> Result {
+ pub fn load(globals: sled::Tree, config: Config) -> Result {
let bytes = &*globals
.update_and_fetch("keypair", utils::generate_keypair)?
.expect("utils::generate_keypair always returns Some");
diff --git a/src/database/key_backups.rs b/src/database/key_backups.rs
index a50e45e..4c65354 100644
--- a/src/database/key_backups.rs
+++ b/src/database/key_backups.rs
@@ -2,7 +2,7 @@ use crate::{utils, Error, Result};
use ruma::{
api::client::{
error::ErrorKind,
- r0::backup::{BackupAlgorithm, KeyData, Sessions},
+ r0::backup::{BackupAlgorithm, KeyBackupData, RoomKeyBackup},
},
RoomId, UserId,
};
@@ -129,7 +129,7 @@ impl KeyBackups {
version: &str,
room_id: &RoomId,
session_id: &str,
- key_data: &KeyData,
+ key_data: &KeyBackupData,
globals: &super::globals::Globals,
) -> Result<()> {
let mut key = user_id.to_string().as_bytes().to_vec();
@@ -153,7 +153,7 @@ impl KeyBackups {
self.backupkeyid_backup.insert(
&key,
- &*serde_json::to_string(&key_data).expect("KeyData::to_string always works"),
+ &*serde_json::to_string(&key_data).expect("KeyBackupData::to_string always works"),
)?;
Ok(())
@@ -182,13 +182,17 @@ impl KeyBackups {
.to_string())
}
- pub fn get_all(&self, user_id: &UserId, version: &str) -> Result> {
+ pub fn get_all(
+ &self,
+ user_id: &UserId,
+ version: &str,
+ ) -> Result> {
let mut prefix = user_id.to_string().as_bytes().to_vec();
prefix.push(0xff);
prefix.extend_from_slice(version.as_bytes());
prefix.push(0xff);
- let mut rooms = BTreeMap::::new();
+ let mut rooms = BTreeMap::::new();
for result in self.backupkeyid_backup.scan_prefix(&prefix).map(|r| {
let (key, value) = r?;
@@ -211,15 +215,16 @@ impl KeyBackups {
)
.map_err(|_| Error::bad_database("backupkeyid_backup room_id is invalid room id."))?;
- let key_data = serde_json::from_slice(&value)
- .map_err(|_| Error::bad_database("KeyData in backupkeyid_backup is invalid."))?;
+ let key_data = serde_json::from_slice(&value).map_err(|_| {
+ Error::bad_database("KeyBackupData in backupkeyid_backup is invalid.")
+ })?;
Ok::<_, Error>((room_id, session_id, key_data))
}) {
let (room_id, session_id, key_data) = result?;
rooms
.entry(room_id)
- .or_insert_with(|| Sessions {
+ .or_insert_with(|| RoomKeyBackup {
sessions: BTreeMap::new(),
})
.sessions
@@ -234,7 +239,7 @@ impl KeyBackups {
user_id: &UserId,
version: &str,
room_id: &RoomId,
- ) -> BTreeMap {
+ ) -> BTreeMap {
let mut prefix = user_id.to_string().as_bytes().to_vec();
prefix.push(0xff);
prefix.extend_from_slice(version.as_bytes());
@@ -257,7 +262,7 @@ impl KeyBackups {
})?;
let key_data = serde_json::from_slice(&value).map_err(|_| {
- Error::bad_database("KeyData in backupkeyid_backup is invalid.")
+ Error::bad_database("KeyBackupData in backupkeyid_backup is invalid.")
})?;
Ok::<_, Error>((session_id, key_data))
@@ -272,7 +277,7 @@ impl KeyBackups {
version: &str,
room_id: &RoomId,
session_id: &str,
- ) -> Result