From 2a7aa6242f7ae3132982fbae8b9ddb77cba1e147 Mon Sep 17 00:00:00 2001 From: Matthias Ahouansou Date: Sun, 23 Feb 2025 05:35:28 +0000 Subject: [PATCH] chore: upgrade ruma --- .cargo/config.toml | 2 + Cargo.lock | 124 +++++++++++++++++--------------- Cargo.toml | 14 ++-- nix/pkgs/default/default.nix | 1 + src/api/client_server/keys.rs | 4 +- src/api/client_server/media.rs | 39 ++++++++-- src/api/client_server/push.rs | 44 +----------- src/api/server_server.rs | 4 +- src/database/key_value/users.rs | 25 +++---- src/service/pusher/mod.rs | 2 +- src/service/sending/mod.rs | 2 + src/service/users/data.rs | 12 ++-- src/service/users/mod.rs | 12 ++-- src/utils/error.rs | 2 +- 14 files changed, 143 insertions(+), 144 deletions(-) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000..1089e6cd --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[build] +rustflags = ["--cfg=ruma_unstable_exhaustive_types"] diff --git a/Cargo.lock b/Cargo.lock index 033a2637..4cca6c5a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -528,7 +528,7 @@ dependencies = [ "serde_json", "serde_yaml", "sha-1", - "thiserror", + "thiserror 1.0.61", "thread_local", "threadpool", "tikv-jemallocator", @@ -1062,7 +1062,7 @@ dependencies = [ "ipnet", "once_cell", "rand", - "thiserror", + "thiserror 1.0.61", "tinyvec", "tokio", "tracing", @@ -1085,7 +1085,7 @@ dependencies = [ "rand", "resolv-conf", "smallvec", - "thiserror", + "thiserror 1.0.61", "tokio", "tracing", ] @@ -1723,7 +1723,7 @@ dependencies = [ "js-sys", "once_cell", "pin-project-lite", - "thiserror", + "thiserror 1.0.61", "urlencoding", ] @@ -1750,7 +1750,7 @@ dependencies = [ "opentelemetry-semantic-conventions", "opentelemetry_sdk", "prost", - "thiserror", + "thiserror 1.0.61", "tokio", "tonic", ] @@ -1790,7 +1790,7 @@ dependencies = [ "ordered-float", "percent-encoding", "rand", - "thiserror", + "thiserror 1.0.61", "tokio", "tokio-stream", ] @@ -1968,9 +1968,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -2073,7 +2073,7 @@ checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.61", ] [[package]] @@ -2189,8 +2189,8 @@ dependencies = [ [[package]] name = "ruma" -version = "0.10.1" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.12.1" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ "assign", "js_int", @@ -2200,7 +2200,6 @@ dependencies = [ "ruma-common", "ruma-events", "ruma-federation-api", - "ruma-identity-service-api", "ruma-push-gateway-api", "ruma-server-util", "ruma-signatures", @@ -2210,8 +2209,8 @@ dependencies = [ [[package]] name = "ruma-appservice-api" -version = "0.10.0" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.12.1" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ "js_int", "ruma-common", @@ -2222,8 +2221,8 @@ dependencies = [ [[package]] name = "ruma-client-api" -version = "0.18.0" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.20.1" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ "as_variant", "assign", @@ -2238,20 +2237,21 @@ dependencies = [ "serde", "serde_html_form", "serde_json", - "thiserror", + "thiserror 2.0.11", "url", "web-time", ] [[package]] name = "ruma-common" -version = "0.13.0" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.15.1" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ "as_variant", "base64 0.22.1", "bytes", "form_urlencoded", + "getrandom", "http 1.1.0", "indexmap 2.2.6", "js_int", @@ -2264,7 +2264,7 @@ dependencies = [ "serde", "serde_html_form", "serde_json", - "thiserror", + "thiserror 2.0.11", "time", "tracing", "url", @@ -2275,8 +2275,8 @@ dependencies = [ [[package]] name = "ruma-events" -version = "0.28.1" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.30.1" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ "as_variant", "indexmap 2.2.6", @@ -2289,7 +2289,7 @@ dependencies = [ "ruma-macros", "serde", "serde_json", - "thiserror", + "thiserror 2.0.11", "tracing", "url", "web-time", @@ -2298,8 +2298,8 @@ dependencies = [ [[package]] name = "ruma-federation-api" -version = "0.9.0" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.11.0" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ "bytes", "http 1.1.0", @@ -2316,30 +2316,19 @@ dependencies = [ [[package]] name = "ruma-identifiers-validation" -version = "0.9.5" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.10.1" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ "js_int", - "thiserror", -] - -[[package]] -name = "ruma-identity-service-api" -version = "0.9.0" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" -dependencies = [ - "js_int", - "ruma-common", - "serde", + "thiserror 2.0.11", ] [[package]] name = "ruma-macros" -version = "0.13.0" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.15.1" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ "cfg-if", - "once_cell", "proc-macro-crate", "proc-macro2", "quote", @@ -2351,8 +2340,8 @@ dependencies = [ [[package]] name = "ruma-push-gateway-api" -version = "0.9.0" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.11.0" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ "js_int", "ruma-common", @@ -2363,21 +2352,21 @@ dependencies = [ [[package]] name = "ruma-server-util" -version = "0.3.0" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.5.0" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ "headers", "http 1.1.0", "http-auth", "ruma-common", - "thiserror", + "thiserror 2.0.11", "tracing", ] [[package]] name = "ruma-signatures" -version = "0.15.0" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.17.0" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ "base64 0.22.1", "ed25519-dalek", @@ -2387,21 +2376,20 @@ dependencies = [ "serde_json", "sha2", "subslice", - "thiserror", + "thiserror 2.0.11", ] [[package]] name = "ruma-state-res" -version = "0.11.0" -source = "git+https://github.com/ruma/ruma#c06af4385e0e30c48a8e9ca3d488da32102d0db9" +version = "0.13.0" +source = "git+https://github.com/ruma/ruma.git#afaf132362fe6195556a872351a70337e97ab755" dependencies = [ - "itertools", "js_int", "ruma-common", "ruma-events", "serde", "serde_json", - "thiserror", + "thiserror 2.0.11", "tracing", ] @@ -2793,7 +2781,7 @@ checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ "num-bigint", "num-traits", - "thiserror", + "thiserror 1.0.61", "time", ] @@ -2855,9 +2843,9 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" -version = "2.0.66" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -2882,7 +2870,16 @@ version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.61", +] + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", ] [[package]] @@ -2896,6 +2893,17 @@ dependencies = [ "syn", ] +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -3049,7 +3057,7 @@ checksum = "51165dfa029d2a65969413a6cc96f354b86b464498702f174a4efa13608fd8c0" dependencies = [ "either", "futures-util", - "thiserror", + "thiserror 1.0.61", "tokio", ] diff --git a/Cargo.toml b/Cargo.toml index 97206253..3e463174 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -147,19 +147,25 @@ sd-notify = { version = "0.4.1", optional = true } features = [ "appservice-api-c", "client-api", - "compat", + "compat-empty-string-null", + "compat-get-3pids", + "compat-null", + "compat-optional", + "compat-optional-txn-pdus", + "compat-server-signing-key-version", + "compat-signature-id", + "compat-tag-info", + "compat-unset-avatar", "federation-api", "push-gateway-api-c", "rand", "ring-compat", "server-util", "state-res", - "unstable-exhaustive-types", "unstable-msc2448", "unstable-msc3575", - "unstable-unspecified", ] -git = "https://github.com/ruma/ruma" +git = "https://github.com/ruma/ruma.git" [dependencies.rocksdb] features = ["lz4", "multi-threaded-cf", "zstd"] diff --git a/nix/pkgs/default/default.nix b/nix/pkgs/default/default.nix index 4577fea9..92b953a1 100644 --- a/nix/pkgs/default/default.nix +++ b/nix/pkgs/default/default.nix @@ -52,6 +52,7 @@ let # Keep sorted include = [ + ".cargo" "Cargo.lock" "Cargo.toml" "src" diff --git a/src/api/client_server/keys.rs b/src/api/client_server/keys.rs index 4af8890d..f5a923b9 100644 --- a/src/api/client_server/keys.rs +++ b/src/api/client_server/keys.rs @@ -14,7 +14,7 @@ use ruma::{ federation, }, serde::Raw, - DeviceKeyAlgorithm, OwnedDeviceId, OwnedUserId, UserId, + OneTimeKeyAlgorithm, OwnedDeviceId, OwnedUserId, UserId, }; use serde_json::json; use std::{ @@ -465,7 +465,7 @@ fn add_unsigned_device_display_name( } pub(crate) async fn claim_keys_helper( - one_time_keys_input: &BTreeMap>, + one_time_keys_input: &BTreeMap>, ) -> Result { let mut one_time_keys = BTreeMap::new(); diff --git a/src/api/client_server/media.rs b/src/api/client_server/media.rs index b38ff6ff..9b7cf22e 100644 --- a/src/api/client_server/media.rs +++ b/src/api/client_server/media.rs @@ -301,7 +301,11 @@ async fn get_content_as_filename( pub async fn get_content_thumbnail_route( body: Ruma, ) -> Result { - let get_content_thumbnail::v1::Response { file, content_type } = get_content_thumbnail( + let get_content_thumbnail::v1::Response { + file, + content_type, + content_disposition, + } = get_content_thumbnail( &body.server_name, body.media_id.clone(), body.height, @@ -316,6 +320,7 @@ pub async fn get_content_thumbnail_route( file, content_type, cross_origin_resource_policy: Some("cross-origin".to_owned()), + content_disposition, }) } @@ -349,7 +354,9 @@ async fn get_content_thumbnail( let mxc = format!("mxc://{}/{}", server_name, media_id); if let Some(FileMeta { - file, content_type, .. + file, + content_type, + content_disposition, }) = services() .media .get_thumbnail( @@ -363,7 +370,11 @@ async fn get_content_thumbnail( ) .await? { - Ok(get_content_thumbnail::v1::Response { file, content_type }) + Ok(get_content_thumbnail::v1::Response { + file, + content_type, + content_disposition: Some(content_disposition), + }) } else if server_name != services().globals.server_name() && allow_remote { let thumbnail_response = match services() .sending @@ -386,6 +397,7 @@ async fn get_content_thumbnail( }) => get_content_thumbnail::v1::Response { file: content.file, content_type: content.content_type, + content_disposition: content.content_disposition, }, Ok(federation_media::get_content_thumbnail::v1::Response { @@ -393,14 +405,23 @@ async fn get_content_thumbnail( content: FileOrLocation::Location(url), }) => { let get_content::v1::Response { - file, content_type, .. + file, + content_type, + content_disposition, } = get_location_content(url).await?; - get_content_thumbnail::v1::Response { file, content_type } + get_content_thumbnail::v1::Response { + file, + content_type, + content_disposition, + } } Err(Error::BadRequest(ErrorKind::Unrecognized, _)) => { let media::get_content_thumbnail::v3::Response { - file, content_type, .. + file, + content_type, + content_disposition, + .. } = services() .sending .send_federation_request( @@ -419,7 +440,11 @@ async fn get_content_thumbnail( ) .await?; - get_content_thumbnail::v1::Response { file, content_type } + get_content_thumbnail::v1::Response { + file, + content_type, + content_disposition, + } } Err(e) => return Err(e), }; diff --git a/src/api/client_server/push.rs b/src/api/client_server/push.rs index 72768662..2968455c 100644 --- a/src/api/client_server/push.rs +++ b/src/api/client_server/push.rs @@ -5,7 +5,7 @@ use ruma::{ push::{ delete_pushrule, get_pushers, get_pushrule, get_pushrule_actions, get_pushrule_enabled, get_pushrules_all, set_pusher, set_pushrule, set_pushrule_actions, - set_pushrule_enabled, RuleScope, + set_pushrule_enabled, }, }, events::{push_rules::PushRulesEvent, GlobalAccountDataEventType}, @@ -89,13 +89,6 @@ pub async fn set_pushrule_route( let sender_user = body.sender_user.as_ref().expect("user is authenticated"); let body = body.body; - if body.scope != RuleScope::Global { - return Err(Error::BadRequest( - ErrorKind::InvalidParam, - "Scopes other than 'global' are not supported.", - )); - } - let event = services() .account_data .get( @@ -161,13 +154,6 @@ pub async fn get_pushrule_actions_route( ) -> Result { let sender_user = body.sender_user.as_ref().expect("user is authenticated"); - if body.scope != RuleScope::Global { - return Err(Error::BadRequest( - ErrorKind::InvalidParam, - "Scopes other than 'global' are not supported.", - )); - } - let event = services() .account_data .get( @@ -204,13 +190,6 @@ pub async fn set_pushrule_actions_route( ) -> Result { let sender_user = body.sender_user.as_ref().expect("user is authenticated"); - if body.scope != RuleScope::Global { - return Err(Error::BadRequest( - ErrorKind::InvalidParam, - "Scopes other than 'global' are not supported.", - )); - } - let event = services() .account_data .get( @@ -256,13 +235,6 @@ pub async fn get_pushrule_enabled_route( ) -> Result { let sender_user = body.sender_user.as_ref().expect("user is authenticated"); - if body.scope != RuleScope::Global { - return Err(Error::BadRequest( - ErrorKind::InvalidParam, - "Scopes other than 'global' are not supported.", - )); - } - let event = services() .account_data .get( @@ -298,13 +270,6 @@ pub async fn set_pushrule_enabled_route( ) -> Result { let sender_user = body.sender_user.as_ref().expect("user is authenticated"); - if body.scope != RuleScope::Global { - return Err(Error::BadRequest( - ErrorKind::InvalidParam, - "Scopes other than 'global' are not supported.", - )); - } - let event = services() .account_data .get( @@ -350,13 +315,6 @@ pub async fn delete_pushrule_route( ) -> Result { let sender_user = body.sender_user.as_ref().expect("user is authenticated"); - if body.scope != RuleScope::Global { - return Err(Error::BadRequest( - ErrorKind::InvalidParam, - "Scopes other than 'global' are not supported.", - )); - } - let event = services() .account_data .get( diff --git a/src/api/server_server.rs b/src/api/server_server.rs index 6715f756..6d36d59e 100644 --- a/src/api/server_server.rs +++ b/src/api/server_server.rs @@ -56,7 +56,7 @@ use ruma::{ to_device::DeviceIdOrAllDevices, uint, user_id, CanonicalJsonObject, CanonicalJsonValue, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedServerName, OwnedServerSigningKeyId, OwnedUserId, RoomId, - ServerName, + ServerName, Signatures, }; use serde_json::value::{to_raw_value, RawValue as RawJsonValue}; use std::{ @@ -714,7 +714,7 @@ pub async fn get_server_keys_route() -> Result { server_name: services().globals.server_name().to_owned(), verify_keys, old_verify_keys: BTreeMap::new(), - signatures: BTreeMap::new(), + signatures: Signatures::new(), valid_until_ts: MilliSecondsSinceUnixEpoch::from_system_time( SystemTime::now() + Duration::from_secs(86400 * 7), ) diff --git a/src/database/key_value/users.rs b/src/database/key_value/users.rs index 63321a40..e28f28b1 100644 --- a/src/database/key_value/users.rs +++ b/src/database/key_value/users.rs @@ -5,8 +5,8 @@ use ruma::{ encryption::{CrossSigningKey, DeviceKeys, OneTimeKey}, events::{AnyToDeviceEvent, StateEventType}, serde::Raw, - DeviceId, DeviceKeyAlgorithm, DeviceKeyId, MilliSecondsSinceUnixEpoch, OwnedDeviceId, - OwnedDeviceKeyId, OwnedMxcUri, OwnedUserId, UInt, UserId, + DeviceId, MilliSecondsSinceUnixEpoch, OneTimeKeyAlgorithm, OwnedDeviceId, OwnedMxcUri, + OwnedOneTimeKeyId, OwnedUserId, UInt, UserId, }; use tracing::warn; @@ -308,7 +308,7 @@ impl service::users::Data for KeyValueDatabase { &self, user_id: &UserId, device_id: &DeviceId, - one_time_key_key: &DeviceKeyId, + one_time_key_key: &OwnedOneTimeKeyId, one_time_key_value: &Raw, ) -> Result<()> { let mut key = user_id.as_bytes().to_vec(); @@ -356,8 +356,8 @@ impl service::users::Data for KeyValueDatabase { &self, user_id: &UserId, device_id: &DeviceId, - key_algorithm: &DeviceKeyAlgorithm, - ) -> Result)>> { + key_algorithm: &OneTimeKeyAlgorithm, + ) -> Result)>> { let mut prefix = user_id.as_bytes().to_vec(); prefix.push(0xff); prefix.extend_from_slice(device_id.as_bytes()); @@ -395,7 +395,7 @@ impl service::users::Data for KeyValueDatabase { &self, user_id: &UserId, device_id: &DeviceId, - ) -> Result> { + ) -> Result> { let mut userdeviceid = user_id.as_bytes().to_vec(); userdeviceid.push(0xff); userdeviceid.extend_from_slice(device_id.as_bytes()); @@ -406,15 +406,12 @@ impl service::users::Data for KeyValueDatabase { self.onetimekeyid_onetimekeys .scan_prefix(userdeviceid) .map(|(bytes, _)| { - Ok::<_, Error>( - serde_json::from_slice::( - bytes.rsplit(|&b| b == 0xff).next().ok_or_else(|| { - Error::bad_database("OneTimeKey ID in db is invalid.") - })?, - ) - .map_err(|_| Error::bad_database("DeviceKeyId in db is invalid."))? - .algorithm(), + serde_json::from_slice::( + bytes.rsplit(|&b| b == 0xff).next().ok_or_else(|| { + Error::bad_database("OneTimeKey ID in db is invalid.") + })?, ) + .map_err(|_| Error::bad_database("DeviceKeyId in db is invalid.")) }) { *counts.entry(algorithm?).or_default() += UInt::from(1_u32); diff --git a/src/service/pusher/mod.rs b/src/service/pusher/mod.rs index 83127e63..3ef54b6c 100644 --- a/src/service/pusher/mod.rs +++ b/src/service/pusher/mod.rs @@ -230,7 +230,7 @@ impl Service { let event_id_only = http.format == Some(PushFormat::EventIdOnly); let mut device = Device::new(pusher.ids.app_id.clone(), pusher.ids.pushkey.clone()); - device.data.default_payload = http.default_payload.clone(); + device.data.data = http.data.clone(); device.data.format.clone_from(&http.format); // Tweaks are only added if the format is NOT event_id_only diff --git a/src/service/sending/mod.rs b/src/service/sending/mod.rs index fa14f123..d23f1617 100644 --- a/src/service/sending/mod.rs +++ b/src/service/sending/mod.rs @@ -498,6 +498,8 @@ impl Service { ) })?, appservice::event::push_events::v1::Request { + //TODO: ephemeral pushing + ephemeral: Vec::new(), events: pdu_jsons, txn_id: (&*general_purpose::URL_SAFE_NO_PAD.encode(calculate_hash( &events diff --git a/src/service/users/data.rs b/src/service/users/data.rs index 4566c36d..52cb8a70 100644 --- a/src/service/users/data.rs +++ b/src/service/users/data.rs @@ -4,8 +4,8 @@ use ruma::{ encryption::{CrossSigningKey, DeviceKeys, OneTimeKey}, events::AnyToDeviceEvent, serde::Raw, - DeviceId, DeviceKeyAlgorithm, DeviceKeyId, OwnedDeviceId, OwnedDeviceKeyId, OwnedMxcUri, - OwnedUserId, UInt, UserId, + DeviceId, OneTimeKeyAlgorithm, OwnedDeviceId, OwnedMxcUri, OwnedOneTimeKeyId, OwnedUserId, + UInt, UserId, }; use std::collections::BTreeMap; @@ -79,7 +79,7 @@ pub trait Data: Send + Sync { &self, user_id: &UserId, device_id: &DeviceId, - one_time_key_key: &DeviceKeyId, + one_time_key_key: &OwnedOneTimeKeyId, one_time_key_value: &Raw, ) -> Result<()>; @@ -89,14 +89,14 @@ pub trait Data: Send + Sync { &self, user_id: &UserId, device_id: &DeviceId, - key_algorithm: &DeviceKeyAlgorithm, - ) -> Result)>>; + key_algorithm: &OneTimeKeyAlgorithm, + ) -> Result)>>; fn count_one_time_keys( &self, user_id: &UserId, device_id: &DeviceId, - ) -> Result>; + ) -> Result>; fn add_device_keys( &self, diff --git a/src/service/users/mod.rs b/src/service/users/mod.rs index a5694a10..f7d2df38 100644 --- a/src/service/users/mod.rs +++ b/src/service/users/mod.rs @@ -18,8 +18,8 @@ use ruma::{ encryption::{CrossSigningKey, DeviceKeys, OneTimeKey}, events::AnyToDeviceEvent, serde::Raw, - DeviceId, DeviceKeyAlgorithm, DeviceKeyId, OwnedDeviceId, OwnedDeviceKeyId, OwnedMxcUri, - OwnedRoomId, OwnedUserId, UInt, UserId, + DeviceId, OneTimeKeyAlgorithm, OwnedDeviceId, OwnedMxcUri, OwnedOneTimeKeyId, OwnedRoomId, + OwnedUserId, UInt, UserId, }; use crate::{services, Error, Result}; @@ -373,7 +373,7 @@ impl Service { &self, user_id: &UserId, device_id: &DeviceId, - one_time_key_key: &DeviceKeyId, + one_time_key_key: &OwnedOneTimeKeyId, one_time_key_value: &Raw, ) -> Result<()> { self.db @@ -388,8 +388,8 @@ impl Service { &self, user_id: &UserId, device_id: &DeviceId, - key_algorithm: &DeviceKeyAlgorithm, - ) -> Result)>> { + key_algorithm: &OneTimeKeyAlgorithm, + ) -> Result)>> { self.db.take_one_time_key(user_id, device_id, key_algorithm) } @@ -397,7 +397,7 @@ impl Service { &self, user_id: &UserId, device_id: &DeviceId, - ) -> Result> { + ) -> Result> { self.db.count_one_time_keys(user_id, device_id) } diff --git a/src/utils/error.rs b/src/utils/error.rs index c9018924..50afd6d0 100644 --- a/src/utils/error.rs +++ b/src/utils/error.rs @@ -60,7 +60,7 @@ pub enum Error { BadDatabase(&'static str), #[error("uiaa")] Uiaa(UiaaInfo), - #[error("{0}: {1}")] + #[error("{}: {1}",.0.errcode())] BadRequest(ErrorKind, &'static str), #[error("{0}")] Conflict(&'static str), // This is only needed for when a room alias already exists