From 75ea0b3163663e5a44092649977b25c3cf4cc271 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Wed, 12 Aug 2020 23:32:39 +0200 Subject: [PATCH] Update ruma --- Cargo.lock | 137 +++++++++++++++++----------- Cargo.toml | 2 +- src/client_server/alias.rs | 6 +- src/client_server/directory.rs | 8 +- src/client_server/keys.rs | 28 +++--- src/client_server/membership.rs | 6 +- src/client_server/message.rs | 10 +- src/client_server/state.rs | 28 +++--- src/client_server/to_device.rs | 2 +- src/client_server/user_directory.rs | 8 +- src/client_server/voip.rs | 4 +- src/database/users.rs | 25 ++--- src/main.rs | 6 +- src/ruma_wrapper.rs | 4 +- 14 files changed, 152 insertions(+), 122 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 225dc09..014c5cc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,9 +17,9 @@ checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" [[package]] name = "adler32" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b077b825e468cc974f0020d4082ee6e03132512f207ef1a02fd5d00d1f32d" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "aead" @@ -100,10 +100,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" [[package]] -name = "async-trait" -version = "0.1.36" +name = "assign" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a265e3abeffdce30b2e26b7a11b222fe37c6067404001b434101457d0385eb92" +checksum = "4af5687fe33aec5e70ef14caac5e0d363e335e5e5d6385fb75978d0c241b1d67" + +[[package]] +name = "async-trait" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caae68055714ff28740f310927e04f2eba76ff580b16fb18ed90073ee71646f7" dependencies = [ "proc-macro2", "quote", @@ -621,9 +627,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60fb4bb6bba52f78a471264d9a3b7d026cc0af47b22cd2cffbc0b787ca003e63" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" dependencies = [ "typenum", "version_check", @@ -692,9 +698,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f595585f103464d8d2f6e9864682d74c1601fed5e07d62b1c9058dba8246fb" +checksum = "e91b62f79061a0bc2e046024cb7ba44b08419ed238ecbd9adbd787434b9e8c25" dependencies = [ "autocfg", ] @@ -830,9 +836,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b88cd59ee5f71fea89a62248fc8f387d44400cefe05ef548466d61ced9029a7" +checksum = "86b45e59b16c76b11bf9738fd5d38879d3bd28ad292d7b313608becb17ae2df9" dependencies = [ "autocfg", "hashbrown", @@ -1303,6 +1309,15 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + [[package]] name = "proc-macro-hack" version = "0.5.18" @@ -1543,8 +1558,8 @@ dependencies = [ [[package]] name = "ruma" -version = "0.1.0" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +version = "0.0.1" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ "ruma-api", "ruma-client-api", @@ -1552,14 +1567,13 @@ dependencies = [ "ruma-events", "ruma-federation-api", "ruma-identifiers", - "ruma-identifiers-macros", "ruma-signatures", ] [[package]] name = "ruma-api" -version = "0.16.1" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +version = "0.17.0-alpha.1" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ "http", "percent-encoding", @@ -1573,9 +1587,10 @@ dependencies = [ [[package]] name = "ruma-api-macros" -version = "0.16.1" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +version = "0.17.0-alpha.1" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -1583,9 +1598,10 @@ dependencies = [ [[package]] name = "ruma-client-api" -version = "0.9.0" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +version = "0.10.0-alpha.1" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ + "assign", "http", "js_int", "ruma-api", @@ -1601,9 +1617,10 @@ dependencies = [ [[package]] name = "ruma-common" version = "0.2.0" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ "js_int", + "ruma-identifiers", "ruma-serde", "serde", "serde_json", @@ -1612,8 +1629,8 @@ dependencies = [ [[package]] name = "ruma-events" -version = "0.21.3" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +version = "0.22.0-alpha.1" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ "js_int", "ruma-common", @@ -1627,9 +1644,10 @@ dependencies = [ [[package]] name = "ruma-events-macros" -version = "0.21.3" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +version = "0.22.0-alpha.1" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -1637,8 +1655,8 @@ dependencies = [ [[package]] name = "ruma-federation-api" -version = "0.0.2" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +version = "0.0.3" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ "js_int", "ruma-api", @@ -1652,29 +1670,42 @@ dependencies = [ [[package]] name = "ruma-identifiers" -version = "0.17.1" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +version = "0.17.4" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ "rand", + "ruma-identifiers-macros", + "ruma-identifiers-validation", "serde", "strum", ] [[package]] name = "ruma-identifiers-macros" -version = "0.17.1" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +version = "0.17.4" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ "proc-macro2", "quote", - "ruma-identifiers", + "ruma-identifiers-validation", "syn", ] +[[package]] +name = "ruma-identifiers-validation" +version = "0.1.1" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" +dependencies = [ + "ruma-serde", + "serde", + "serde_json", + "strum", +] + [[package]] name = "ruma-serde" -version = "0.2.2" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +version = "0.2.3" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ "form_urlencoded", "itoa", @@ -1686,7 +1717,7 @@ dependencies = [ [[package]] name = "ruma-signatures" version = "0.6.0-dev.1" -source = "git+https://github.com/ruma/ruma?rev=d5d2d1d893fa12d27960e4c58d6c09b215d06e95#d5d2d1d893fa12d27960e4c58d6c09b215d06e95" +source = "git+https://github.com/ruma/ruma?rev=987d48666cf166cf12100b5dbc61b5e3385c4014#987d48666cf166cf12100b5dbc61b5e3385c4014" dependencies = [ "base64 0.12.3", "ring", @@ -1818,18 +1849,18 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.114" +version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5317f7588f0a5078ee60ef675ef96735a1442132dc645eb1d12c018620ed8cd3" +checksum = "e54c9a88f2da7238af84b5101443f0c0d0a3bbdc455e34a5c9497b1903ed55d5" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.114" +version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0be94b04690fbaed37cddffc5c134bf537c8e3329d53e982fe04c374978f8e" +checksum = "609feed1d0a73cc36a0182a840a9b37b4a82f0b1150369f0536a9e3f2a31dc48" dependencies = [ "proc-macro2", "quote", @@ -1880,9 +1911,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" +checksum = "a3e12110bc539e657a646068aaf5eb5b63af9d0c1f7b29c97113fad80e15f035" dependencies = [ "arc-swap", "libc", @@ -1914,9 +1945,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3757cb9d89161a2f24e1cf78efa0c1fcff485d18e3f55e0aa3480824ddaa0f3f" +checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" [[package]] name = "socket2" @@ -2002,18 +2033,18 @@ checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" [[package]] name = "strum" -version = "0.18.0" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b" +checksum = "3924a58d165da3b7b2922c667ab0673c7b5fd52b5c19ea3442747bcb3cd15abe" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.18.0" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" +checksum = "2d2ab682ecdcae7f5f45ae85cd7c1e6c8e68ea42c8a612d47fedf831c037146a" dependencies = [ "heck", "proc-macro2", @@ -2029,9 +2060,9 @@ checksum = "502d53007c02d7605a05df1c1a73ee436952781653da5d0bf57ad608f66932c1" [[package]] name = "syn" -version = "1.0.36" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cdb98bcb1f9d81d07b536179c269ea15999b5d14ea958196413869445bb5250" +checksum = "e69abc24912995b3038597a7a593be5053eb0fb44f3cc5beec0deb421790c1f4" dependencies = [ "proc-macro2", "quote", @@ -2213,9 +2244,9 @@ checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" [[package]] name = "tracing" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbdf4ccd1652592b01286a5dbe1e2a77d78afaa34beadd9872a5f7396f92aaa9" +checksum = "6d79ca061b032d6ce30c660fded31189ca0b9922bf483cd70759f13a2d86786c" dependencies = [ "cfg-if", "log", @@ -2224,9 +2255,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ae75f0d28ae10786f3b1895c55fe72e79928fd5ccdebb5438c75e93fec178f" +checksum = "db63662723c316b43ca36d833707cc93dff82a02ba3d7e354f342682cc8b3545" dependencies = [ "lazy_static", ] diff --git a/Cargo.toml b/Cargo.toml index c2607a7..42ca8b5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ edition = "2018" rocket = { git = "https://github.com/timokoesters/Rocket.git", branch = "empty_parameters", features = ["tls"] } tokio = "0.2.22" # Used for long polling -ruma = { git = "https://github.com/ruma/ruma", features = ["rand", "client-api", "federation-api", "unstable-pre-spec", "unstable-synapse-quirks"], rev = "d5d2d1d893fa12d27960e4c58d6c09b215d06e95" } # 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"], rev = "987d48666cf166cf12100b5dbc61b5e3385c4014" } # Used for matrix spec type definitions and helpers #ruma = { path = "../ruma/ruma", features = ["rand", "client-api", "federation-api", "unstable-pre-spec", "unstable-synapse-quirks"] } sled = "0.32.0" # Used for storing data permanently log = "0.4.8" # Used for emitting log entries diff --git a/src/client_server/alias.rs b/src/client_server/alias.rs index 4399cb5..087221b 100644 --- a/src/client_server/alias.rs +++ b/src/client_server/alias.rs @@ -14,7 +14,7 @@ use rocket::{delete, get, put}; )] pub fn create_alias_route( db: State<'_, Database>, - body: Ruma, + body: Ruma, ) -> ConduitResult { if db.rooms.id_from_alias(&body.room_alias)?.is_some() { return Err(Error::Conflict("Alias already exists.")); @@ -32,7 +32,7 @@ pub fn create_alias_route( )] pub fn delete_alias_route( db: State<'_, Database>, - body: Ruma, + body: Ruma, ) -> ConduitResult { db.rooms.set_alias(&body.room_alias, None, &db.globals)?; @@ -45,7 +45,7 @@ pub fn delete_alias_route( )] pub fn get_alias_route( db: State<'_, Database>, - body: Ruma, + body: Ruma, ) -> ConduitResult { if body.room_alias.server_name() != db.globals.server_name() { todo!("ask remote server"); diff --git a/src/client_server/directory.rs b/src/client_server/directory.rs index 9bed45b..279df18 100644 --- a/src/client_server/directory.rs +++ b/src/client_server/directory.rs @@ -27,7 +27,7 @@ use rocket::{get, post, put}; )] pub async fn get_public_rooms_filtered_route( db: State<'_, Database>, - body: Ruma, + body: Ruma, ) -> ConduitResult { let limit = body.limit.map_or(10, u64::from); let mut since = 0_u64; @@ -224,11 +224,11 @@ pub async fn get_public_rooms_filtered_route( )] pub async fn get_public_rooms_route( db: State<'_, Database>, - body: Ruma, + body: Ruma, ) -> ConduitResult { let Ruma { body: - get_public_rooms::Request { + get_public_rooms::IncomingRequest { limit, server, since, @@ -246,7 +246,7 @@ pub async fn get_public_rooms_route( } = get_public_rooms_filtered_route( db, Ruma { - body: get_public_rooms_filtered::Request { + body: get_public_rooms_filtered::IncomingRequest { filter: None, limit, room_network: get_public_rooms_filtered::RoomNetwork::Matrix, diff --git a/src/client_server/keys.rs b/src/client_server/keys.rs index 4067210..f88878c 100644 --- a/src/client_server/keys.rs +++ b/src/client_server/keys.rs @@ -1,15 +1,17 @@ -use super::State; -use super::SESSION_ID_LENGTH; +use super::{State, SESSION_ID_LENGTH}; use crate::{utils, ConduitResult, Database, Error, Ruma}; -use ruma::api::client::{ - error::ErrorKind, - r0::{ - keys::{ - self, claim_keys, get_key_changes, get_keys, upload_keys, upload_signatures, - upload_signing_keys, +use ruma::{ + api::client::{ + error::ErrorKind, + r0::{ + keys::{ + claim_keys, get_key_changes, get_keys, upload_keys, upload_signatures, + upload_signing_keys, + }, + uiaa::{AuthFlow, UiaaInfo}, }, - uiaa::{AuthFlow, UiaaInfo}, }, + encryption::UnsignedDeviceInfo, }; use std::collections::{BTreeMap, HashSet}; @@ -54,7 +56,7 @@ pub fn upload_keys_route( )] pub fn get_keys_route( db: State<'_, Database>, - body: Ruma, + body: Ruma, ) -> ConduitResult { let sender_id = body.sender_id.as_ref().expect("user is authenticated"); @@ -76,7 +78,7 @@ pub fn get_keys_route( Error::bad_database("all_device_keys contained nonexistent device.") })?; - keys.unsigned = Some(keys::UnsignedDeviceInfo { + keys.unsigned = Some(UnsignedDeviceInfo { device_display_name: metadata.display_name, }); @@ -95,7 +97,7 @@ pub fn get_keys_route( ), )?; - keys.unsigned = Some(keys::UnsignedDeviceInfo { + keys.unsigned = Some(UnsignedDeviceInfo { device_display_name: metadata.display_name, }); @@ -278,7 +280,7 @@ pub fn upload_signatures_route( )] pub fn get_key_changes_route( db: State<'_, Database>, - body: Ruma, + body: Ruma, ) -> ConduitResult { let sender_id = body.sender_id.as_ref().expect("user is authenticated"); diff --git a/src/client_server/membership.rs b/src/client_server/membership.rs index 716d5e4..0ada7c4 100644 --- a/src/client_server/membership.rs +++ b/src/client_server/membership.rs @@ -23,7 +23,7 @@ use rocket::{get, post}; )] pub fn join_room_by_id_route( db: State<'_, Database>, - body: Ruma, + body: Ruma, ) -> ConduitResult { let sender_id = body.sender_id.as_ref().expect("user is authenticated"); @@ -76,7 +76,7 @@ pub fn join_room_by_id_or_alias_route( sender_id: body.sender_id.clone(), device_id: body.device_id.clone(), json_body: None, - body: join_room_by_id::Request { + body: join_room_by_id::IncomingRequest { room_id, third_party_signed: body.third_party_signed.clone(), }, @@ -94,7 +94,7 @@ pub fn join_room_by_id_or_alias_route( )] pub fn leave_room_route( db: State<'_, Database>, - body: Ruma, + body: Ruma, ) -> ConduitResult { let sender_id = body.sender_id.as_ref().expect("user is authenticated"); diff --git a/src/client_server/message.rs b/src/client_server/message.rs index 04d965d..d851214 100644 --- a/src/client_server/message.rs +++ b/src/client_server/message.rs @@ -2,7 +2,7 @@ use super::State; use crate::{pdu::PduBuilder, ConduitResult, Database, Error, Ruma}; use ruma::api::client::{ error::ErrorKind, - r0::message::{create_message_event, get_message_events}, + r0::message::{get_message_events, send_message_event}, }; use std::convert::TryInto; @@ -13,10 +13,10 @@ use rocket::{get, put}; feature = "conduit_bin", put("/_matrix/client/r0/rooms/<_>/send/<_>/<_>", data = "") )] -pub fn create_message_event_route( +pub fn send_message_event_route( db: State<'_, Database>, - body: Ruma, -) -> ConduitResult { + body: Ruma, +) -> ConduitResult { let sender_id = body.sender_id.as_ref().expect("user is authenticated"); let mut unsigned = serde_json::Map::new(); @@ -41,7 +41,7 @@ pub fn create_message_event_route( &db.account_data, )?; - Ok(create_message_event::Response { event_id }.into()) + Ok(send_message_event::Response { event_id }.into()) } #[cfg_attr( diff --git a/src/client_server/state.rs b/src/client_server/state.rs index 814a246..60b3e9f 100644 --- a/src/client_server/state.rs +++ b/src/client_server/state.rs @@ -4,8 +4,8 @@ use ruma::{ api::client::{ error::ErrorKind, r0::state::{ - create_state_event_for_empty_key, create_state_event_for_key, get_state_events, - get_state_events_for_empty_key, get_state_events_for_key, + get_state_events, get_state_events_for_empty_key, get_state_events_for_key, + send_state_event_for_empty_key, send_state_event_for_key, }, }, events::{room::canonical_alias, EventType}, @@ -19,10 +19,10 @@ use rocket::{get, put}; feature = "conduit_bin", put("/_matrix/client/r0/rooms/<_>/state/<_>/<_>", data = "") )] -pub fn create_state_event_for_key_route( +pub fn send_state_event_for_key_route( db: State<'_, Database>, - body: Ruma, -) -> ConduitResult { + body: Ruma, +) -> ConduitResult { let sender_id = body.sender_id.as_ref().expect("user is authenticated"); let content = serde_json::from_str::( @@ -78,21 +78,21 @@ pub fn create_state_event_for_key_route( &db.account_data, )?; - Ok(create_state_event_for_key::Response { event_id }.into()) + Ok(send_state_event_for_key::Response { event_id }.into()) } #[cfg_attr( feature = "conduit_bin", put("/_matrix/client/r0/rooms/<_>/state/<_>", data = "") )] -pub fn create_state_event_for_empty_key_route( +pub fn send_state_event_for_empty_key_route( db: State<'_, Database>, - body: Ruma, -) -> ConduitResult { - // This just calls create_state_event_for_key_route + body: Ruma, +) -> ConduitResult { + // This just calls send_state_event_for_key_route let Ruma { body: - create_state_event_for_empty_key::Request { + send_state_event_for_empty_key::IncomingRequest { room_id, event_type, data, @@ -102,11 +102,11 @@ pub fn create_state_event_for_empty_key_route( json_body, } = body; - Ok(create_state_event_for_empty_key::Response { - event_id: create_state_event_for_key_route( + Ok(send_state_event_for_empty_key::Response { + event_id: send_state_event_for_key_route( db, Ruma { - body: create_state_event_for_key::Request { + body: send_state_event_for_key::IncomingRequest { room_id, event_type, data, diff --git a/src/client_server/to_device.rs b/src/client_server/to_device.rs index db4f36e..ca423fe 100644 --- a/src/client_server/to_device.rs +++ b/src/client_server/to_device.rs @@ -14,7 +14,7 @@ use rocket::put; )] pub fn send_event_to_device_route( db: State<'_, Database>, - body: Ruma, + body: Ruma, ) -> ConduitResult { let sender_id = body.sender_id.as_ref().expect("user is authenticated"); diff --git a/src/client_server/user_directory.rs b/src/client_server/user_directory.rs index 746deb3..f47643c 100644 --- a/src/client_server/user_directory.rs +++ b/src/client_server/user_directory.rs @@ -11,13 +11,9 @@ use rocket::post; )] pub fn search_users_route( db: State<'_, Database>, - body: Ruma, + body: Ruma, ) -> ConduitResult { - let limit = if let Some(limit) = body.limit { - u64::from(limit) - } else { - 10 - } as usize; + let limit = u64::from(body.limit) as usize; let mut users = db.users.iter().filter_map(|user_id| { // Filter out buggy users (they should not exist, but you never know...) diff --git a/src/client_server/voip.rs b/src/client_server/voip.rs index 4671284..33080ea 100644 --- a/src/client_server/voip.rs +++ b/src/client_server/voip.rs @@ -1,11 +1,11 @@ use crate::{ConduitResult, Error}; -use ruma::api::client::{error::ErrorKind, r0::message::create_message_event}; +use ruma::api::client::{error::ErrorKind, r0::message::send_message_event}; #[cfg(feature = "conduit_bin")] use rocket::get; #[cfg_attr(feature = "conduit_bin", get("/_matrix/client/r0/voip/turnServer"))] -pub fn turn_server_route() -> ConduitResult { +pub fn turn_server_route() -> ConduitResult { Err(Error::BadRequest( ErrorKind::NotFound, "There is no turn server yet.", diff --git a/src/database/users.rs b/src/database/users.rs index f031534..594cc2d 100644 --- a/src/database/users.rs +++ b/src/database/users.rs @@ -5,11 +5,12 @@ use ruma::{ error::ErrorKind, r0::{ device::Device, - keys::{AlgorithmAndDeviceId, CrossSigningKey, DeviceKeys, KeyAlgorithm, OneTimeKey}, + keys::{CrossSigningKey, OneTimeKey}, }, }, + encryption::DeviceKeys, events::{AnyToDeviceEvent, EventType}, - DeviceId, Raw, UserId, + DeviceId, DeviceKeyAlgorithm, DeviceKeyId, Raw, UserId, }; use std::{collections::BTreeMap, convert::TryFrom, mem, time::SystemTime}; @@ -21,7 +22,7 @@ pub struct Users { pub(super) userdeviceid_metadata: sled::Tree, // This is also used to check if a device exists pub(super) token_userdeviceid: sled::Tree, - pub(super) onetimekeyid_onetimekeys: sled::Tree, // OneTimeKeyId = UserId + AlgorithmAndDeviceId + pub(super) onetimekeyid_onetimekeys: sled::Tree, // OneTimeKeyId = UserId + DeviceKeyId pub(super) userid_lastonetimekeyupdate: sled::Tree, // LastOneTimeKeyUpdate = Count pub(super) keychangeid_userid: sled::Tree, // KeyChangeId = UserId/RoomId + Count pub(super) keyid_key: sled::Tree, // KeyId = UserId + KeyId (depends on key type) @@ -269,7 +270,7 @@ impl Users { &self, user_id: &UserId, device_id: &DeviceId, - one_time_key_key: &AlgorithmAndDeviceId, + one_time_key_key: &DeviceKeyId, one_time_key_value: &OneTimeKey, globals: &super::globals::Globals, ) -> Result<()> { @@ -282,11 +283,11 @@ impl Users { assert!(self.userdeviceid_metadata.get(&key)?.is_some()); key.push(0xff); - // TODO: Use AlgorithmAndDeviceId::to_string when it's available (and update everything, + // TODO: Use DeviceKeyId::to_string when it's available (and update everything, // because there are no wrapping quotation marks anymore) key.extend_from_slice( &serde_json::to_string(one_time_key_key) - .expect("AlgorithmAndDeviceId::to_string always works") + .expect("DeviceKeyId::to_string always works") .as_bytes(), ); @@ -319,9 +320,9 @@ impl Users { &self, user_id: &UserId, device_id: &DeviceId, - key_algorithm: &KeyAlgorithm, + key_algorithm: &DeviceKeyAlgorithm, globals: &super::globals::Globals, - ) -> Result> { + ) -> Result> { let mut prefix = user_id.to_string().as_bytes().to_vec(); prefix.push(0xff); prefix.extend_from_slice(device_id.as_bytes()); @@ -361,7 +362,7 @@ impl Users { &self, user_id: &UserId, device_id: &DeviceId, - ) -> Result> { + ) -> Result> { let mut userdeviceid = user_id.to_string().as_bytes().to_vec(); userdeviceid.push(0xff); userdeviceid.extend_from_slice(device_id.as_bytes()); @@ -374,13 +375,13 @@ impl Users { .keys() .map(|bytes| { Ok::<_, Error>( - serde_json::from_slice::( + 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("AlgorithmAndDeviceID in db is invalid."))? - .0, + .map_err(|_| Error::bad_database("DeviceKeyId in db is invalid."))? + .algorithm(), ) }) { diff --git a/src/main.rs b/src/main.rs index 27320b7..f91a10f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -81,9 +81,9 @@ fn setup_rocket() -> rocket::Rocket { client_server::search_users_route, client_server::get_member_events_route, client_server::get_protocols_route, - client_server::create_message_event_route, - client_server::create_state_event_for_key_route, - client_server::create_state_event_for_empty_key_route, + client_server::send_message_event_route, + client_server::send_state_event_for_key_route, + client_server::send_state_event_for_empty_key_route, client_server::get_state_events_route, client_server::get_state_events_for_key_route, client_server::get_state_events_for_empty_key_route, diff --git a/src/ruma_wrapper.rs b/src/ruma_wrapper.rs index 0593436..8d86204 100644 --- a/src/ruma_wrapper.rs +++ b/src/ruma_wrapper.rs @@ -16,7 +16,7 @@ use { tokio::io::AsyncReadExt, Request, State, }, - ruma::api::Endpoint, + ruma::api::IncomingRequest, std::io::Cursor, }; @@ -30,7 +30,7 @@ pub struct Ruma { } #[cfg(feature = "conduit_bin")] -impl<'a, T: Endpoint> FromTransformedData<'a> for Ruma { +impl<'a, T: IncomingRequest> FromTransformedData<'a> for Ruma { type Error = (); // TODO: Better error handling type Owned = Data; type Borrowed = Self::Owned;