Update ruma version
parent
2a63d0955a
commit
1e8fbd8d50
|
@ -1631,7 +1631,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma"
|
name = "ruma"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ruma-api",
|
"ruma-api",
|
||||||
"ruma-appservice-api",
|
"ruma-appservice-api",
|
||||||
|
@ -1647,7 +1646,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-api"
|
name = "ruma-api"
|
||||||
version = "0.17.0-alpha.1"
|
version = "0.17.0-alpha.1"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"http",
|
"http",
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
|
@ -1662,7 +1660,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-api-macros"
|
name = "ruma-api-macros"
|
||||||
version = "0.17.0-alpha.1"
|
version = "0.17.0-alpha.1"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-crate",
|
"proc-macro-crate",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
|
@ -1673,7 +1670,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-appservice-api"
|
name = "ruma-appservice-api"
|
||||||
version = "0.2.0-alpha.1"
|
version = "0.2.0-alpha.1"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ruma-api",
|
"ruma-api",
|
||||||
"ruma-common",
|
"ruma-common",
|
||||||
|
@ -1686,7 +1682,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-client-api"
|
name = "ruma-client-api"
|
||||||
version = "0.10.0-alpha.1"
|
version = "0.10.0-alpha.1"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"assign",
|
"assign",
|
||||||
"http",
|
"http",
|
||||||
|
@ -1705,9 +1700,9 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-common"
|
name = "ruma-common"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"js_int",
|
"js_int",
|
||||||
|
"ruma-api",
|
||||||
"ruma-identifiers",
|
"ruma-identifiers",
|
||||||
"ruma-serde",
|
"ruma-serde",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -1718,7 +1713,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-events"
|
name = "ruma-events"
|
||||||
version = "0.22.0-alpha.1"
|
version = "0.22.0-alpha.1"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"js_int",
|
"js_int",
|
||||||
"ruma-common",
|
"ruma-common",
|
||||||
|
@ -1733,7 +1727,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-events-macros"
|
name = "ruma-events-macros"
|
||||||
version = "0.22.0-alpha.1"
|
version = "0.22.0-alpha.1"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-crate",
|
"proc-macro-crate",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
|
@ -1744,7 +1737,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-federation-api"
|
name = "ruma-federation-api"
|
||||||
version = "0.0.3"
|
version = "0.0.3"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"js_int",
|
"js_int",
|
||||||
"ruma-api",
|
"ruma-api",
|
||||||
|
@ -1759,7 +1751,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-identifiers"
|
name = "ruma-identifiers"
|
||||||
version = "0.17.4"
|
version = "0.17.4"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rand",
|
"rand",
|
||||||
"ruma-identifiers-macros",
|
"ruma-identifiers-macros",
|
||||||
|
@ -1771,7 +1762,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-identifiers-macros"
|
name = "ruma-identifiers-macros"
|
||||||
version = "0.17.4"
|
version = "0.17.4"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -1782,18 +1772,14 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-identifiers-validation"
|
name = "ruma-identifiers-validation"
|
||||||
version = "0.1.1"
|
version = "0.1.1"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ruma-serde",
|
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
|
||||||
"strum",
|
"strum",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-serde"
|
name = "ruma-serde"
|
||||||
version = "0.2.3"
|
version = "0.2.3"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"form_urlencoded",
|
"form_urlencoded",
|
||||||
"itoa",
|
"itoa",
|
||||||
|
@ -1805,7 +1791,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-signatures"
|
name = "ruma-signatures"
|
||||||
version = "0.6.0-dev.1"
|
version = "0.6.0-dev.1"
|
||||||
source = "git+https://github.com/ruma/ruma?rev=aff914050eb297bd82b8aafb12158c88a9e480e1#aff914050eb297bd82b8aafb12158c88a9e480e1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64",
|
"base64",
|
||||||
"ring",
|
"ring",
|
||||||
|
@ -2070,7 +2055,6 @@ checksum = "7345c971d1ef21ffdbd103a75990a15eb03604fc8b8852ca8cb418ee1a099028"
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "state-res"
|
name = "state-res"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/ruma/state-res?branch=spec-comp#394d26744a6586ccdc01838964bb27dab289eee5"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itertools",
|
"itertools",
|
||||||
"js_int",
|
"js_int",
|
||||||
|
|
|
@ -15,8 +15,9 @@ edition = "2018"
|
||||||
# TODO: This can become optional as soon as proper configs are supported
|
# TODO: This can become optional as soon as proper configs are supported
|
||||||
#rocket = { git = "https://github.com/SergioBenitez/Rocket.git", rev = "8d779caa22c63b15a6c3ceb75d8f6d4971b2eb67", features = ["tls"] } # Used to handle requests
|
#rocket = { git = "https://github.com/SergioBenitez/Rocket.git", rev = "8d779caa22c63b15a6c3ceb75d8f6d4971b2eb67", features = ["tls"] } # Used to handle requests
|
||||||
rocket = { git = "https://github.com/timokoesters/Rocket.git", branch = "empty_parameters", features = ["tls"] }
|
rocket = { git = "https://github.com/timokoesters/Rocket.git", branch = "empty_parameters", features = ["tls"] }
|
||||||
|
#ruma = { git = "https://github.com/ruma/ruma", features = ["rand", "client-api", "federation-api", "unstable-pre-spec", "unstable-synapse-quirks"], rev = "aff914050eb297bd82b8aafb12158c88a9e480e1" } # 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 = "aff914050eb297bd82b8aafb12158c88a9e480e1" } # Used for matrix spec type definitions and helpers
|
#ruma = { git = "https://github.com/timokoesters/ruma", features = ["rand", "client-api", "federation-api", "unstable-pre-spec", "unstable-synapse-quirks"], branch = "timo-fixes" } # Used for matrix spec type definitions and helpers
|
||||||
|
ruma = { path = "../ruma/ruma", features = ["unstable-exhaustive-types", "rand", "client-api", "federation-api", "unstable-pre-spec", "unstable-synapse-quirks"] }
|
||||||
tokio = "0.2.22" # Used for long polling
|
tokio = "0.2.22" # Used for long polling
|
||||||
sled = "0.32.0" # Used for storing data permanently
|
sled = "0.32.0" # Used for storing data permanently
|
||||||
log = "0.4.8" # Used for emitting log entries
|
log = "0.4.8" # Used for emitting log entries
|
||||||
|
@ -31,8 +32,8 @@ reqwest = "0.10.6" # Used to send requests
|
||||||
thiserror = "1.0.19" # Used for conduit::Error type
|
thiserror = "1.0.19" # Used for conduit::Error type
|
||||||
image = { version = "0.23.4", default-features = false, features = ["jpeg", "png", "gif"] } # Used to generate thumbnails for images
|
image = { version = "0.23.4", default-features = false, features = ["jpeg", "png", "gif"] } # Used to generate thumbnails for images
|
||||||
base64 = "0.12.3" # Used to encode server public key
|
base64 = "0.12.3" # Used to encode server public key
|
||||||
# state-res = { path = "../../state-res" }
|
#state-res = { git = "https://github.com/ruma/state-res", version = "0.1.0", branch = "spec-comp" }
|
||||||
state-res = { git = "https://github.com/ruma/state-res", version = "0.1.0", branch = "spec-comp" }
|
state-res = { path = "../state-res" }
|
||||||
ring = "0.16.15"
|
ring = "0.16.15"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
|
|
|
@ -33,7 +33,7 @@ const GUEST_NAME_LENGTH: usize = 10;
|
||||||
)]
|
)]
|
||||||
pub fn get_register_available_route(
|
pub fn get_register_available_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_username_availability::Request>,
|
body: Ruma<get_username_availability::Request<'_>>,
|
||||||
) -> ConduitResult<get_username_availability::Response> {
|
) -> ConduitResult<get_username_availability::Response> {
|
||||||
// Validate user id
|
// Validate user id
|
||||||
let user_id = UserId::parse_with_server_name(body.username.clone(), db.globals.server_name())
|
let user_id = UserId::parse_with_server_name(body.username.clone(), db.globals.server_name())
|
||||||
|
@ -75,7 +75,7 @@ pub fn get_register_available_route(
|
||||||
)]
|
)]
|
||||||
pub fn register_route(
|
pub fn register_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<register::IncomingRequest>,
|
body: Ruma<register::Request<'_>>,
|
||||||
) -> ConduitResult<register::Response> {
|
) -> ConduitResult<register::Response> {
|
||||||
if db.globals.registration_disabled() {
|
if db.globals.registration_disabled() {
|
||||||
return Err(Error::BadRequest(
|
return Err(Error::BadRequest(
|
||||||
|
@ -84,7 +84,7 @@ pub fn register_route(
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
let is_guest = matches!(body.kind, Some(RegistrationKind::Guest));
|
let is_guest = body.kind == RegistrationKind::Guest;
|
||||||
|
|
||||||
let mut missing_username = false;
|
let mut missing_username = false;
|
||||||
|
|
||||||
|
@ -223,7 +223,7 @@ pub fn register_route(
|
||||||
)]
|
)]
|
||||||
pub fn change_password_route(
|
pub fn change_password_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<change_password::IncomingRequest>,
|
body: Ruma<change_password::Request<'_>>,
|
||||||
) -> ConduitResult<change_password::Response> {
|
) -> ConduitResult<change_password::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
||||||
|
@ -305,7 +305,7 @@ pub fn whoami_route(body: Ruma<whoami::Request>) -> ConduitResult<whoami::Respon
|
||||||
)]
|
)]
|
||||||
pub fn deactivate_route(
|
pub fn deactivate_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<deactivate::IncomingRequest>,
|
body: Ruma<deactivate::Request<'_>>,
|
||||||
) -> ConduitResult<deactivate::Response> {
|
) -> ConduitResult<deactivate::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
||||||
|
|
|
@ -20,7 +20,7 @@ use rocket::{delete, get, put};
|
||||||
)]
|
)]
|
||||||
pub fn create_alias_route(
|
pub fn create_alias_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<create_alias::IncomingRequest>,
|
body: Ruma<create_alias::Request<'_>>,
|
||||||
) -> ConduitResult<create_alias::Response> {
|
) -> ConduitResult<create_alias::Response> {
|
||||||
if db.rooms.id_from_alias(&body.room_alias)?.is_some() {
|
if db.rooms.id_from_alias(&body.room_alias)?.is_some() {
|
||||||
return Err(Error::Conflict("Alias already exists."));
|
return Err(Error::Conflict("Alias already exists."));
|
||||||
|
@ -38,7 +38,7 @@ pub fn create_alias_route(
|
||||||
)]
|
)]
|
||||||
pub fn delete_alias_route(
|
pub fn delete_alias_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<delete_alias::IncomingRequest>,
|
body: Ruma<delete_alias::Request<'_>>,
|
||||||
) -> ConduitResult<delete_alias::Response> {
|
) -> ConduitResult<delete_alias::Response> {
|
||||||
db.rooms.set_alias(&body.room_alias, None, &db.globals)?;
|
db.rooms.set_alias(&body.room_alias, None, &db.globals)?;
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ pub fn delete_alias_route(
|
||||||
)]
|
)]
|
||||||
pub async fn get_alias_route(
|
pub async fn get_alias_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_alias::IncomingRequest>,
|
body: Ruma<get_alias::Request<'_>>,
|
||||||
) -> ConduitResult<get_alias::Response> {
|
) -> ConduitResult<get_alias::Response> {
|
||||||
get_alias_helper(&db, &body.room_alias).await
|
get_alias_helper(&db, &body.room_alias).await
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ pub async fn get_alias_helper(
|
||||||
&db,
|
&db,
|
||||||
room_alias.server_name().to_string(),
|
room_alias.server_name().to_string(),
|
||||||
federation::query::get_room_information::v1::Request {
|
federation::query::get_room_information::v1::Request {
|
||||||
room_alias: room_alias.to_string(),
|
room_alias,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
|
@ -33,7 +33,7 @@ pub fn create_backup_route(
|
||||||
)]
|
)]
|
||||||
pub fn update_backup_route(
|
pub fn update_backup_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<update_backup::Request>,
|
body: Ruma<update_backup::Request<'_>>,
|
||||||
) -> ConduitResult<update_backup::Response> {
|
) -> ConduitResult<update_backup::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
db.key_backups
|
db.key_backups
|
||||||
|
@ -75,7 +75,7 @@ pub fn get_latest_backup_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_backup_route(
|
pub fn get_backup_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_backup::Request>,
|
body: Ruma<get_backup::Request<'_>>,
|
||||||
) -> ConduitResult<get_backup::Response> {
|
) -> ConduitResult<get_backup::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
let algorithm = db
|
let algorithm = db
|
||||||
|
@ -90,7 +90,7 @@ pub fn get_backup_route(
|
||||||
algorithm,
|
algorithm,
|
||||||
count: (db.key_backups.count_keys(sender_id, &body.version)? as u32).into(),
|
count: (db.key_backups.count_keys(sender_id, &body.version)? as u32).into(),
|
||||||
etag: db.key_backups.get_etag(sender_id, &body.version)?,
|
etag: db.key_backups.get_etag(sender_id, &body.version)?,
|
||||||
version: body.version.clone(),
|
version: body.version.to_owned(),
|
||||||
}
|
}
|
||||||
.into())
|
.into())
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ pub fn get_backup_route(
|
||||||
)]
|
)]
|
||||||
pub fn add_backup_keys_route(
|
pub fn add_backup_keys_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<add_backup_keys::Request>,
|
body: Ruma<add_backup_keys::Request<'_>>,
|
||||||
) -> ConduitResult<add_backup_keys::Response> {
|
) -> ConduitResult<add_backup_keys::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ pub fn add_backup_keys_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_backup_keys_route(
|
pub fn get_backup_keys_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_backup_keys::Request>,
|
body: Ruma<get_backup_keys::Request<'_>>,
|
||||||
) -> ConduitResult<get_backup_keys::Response> {
|
) -> ConduitResult<get_backup_keys::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ use rocket::{get, put};
|
||||||
)]
|
)]
|
||||||
pub fn set_global_account_data_route(
|
pub fn set_global_account_data_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<set_global_account_data::Request>,
|
body: Ruma<set_global_account_data::Request<'_>>,
|
||||||
) -> ConduitResult<set_global_account_data::Response> {
|
) -> ConduitResult<set_global_account_data::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ pub fn set_global_account_data_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_global_account_data_route(
|
pub fn get_global_account_data_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_global_account_data::Request>,
|
body: Ruma<get_global_account_data::Request<'_>>,
|
||||||
) -> ConduitResult<get_global_account_data::Response> {
|
) -> ConduitResult<get_global_account_data::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ use rocket::get;
|
||||||
)]
|
)]
|
||||||
pub fn get_context_route(
|
pub fn get_context_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_context::IncomingRequest>,
|
body: Ruma<get_context::Request<'_>>,
|
||||||
) -> ConduitResult<get_context::Response> {
|
) -> ConduitResult<get_context::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ pub fn get_devices_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_device_route(
|
pub fn get_device_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_device::IncomingRequest>,
|
body: Ruma<get_device::Request<'_>>,
|
||||||
_device_id: String,
|
_device_id: String,
|
||||||
) -> ConduitResult<get_device::Response> {
|
) -> ConduitResult<get_device::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
@ -56,7 +56,7 @@ pub fn get_device_route(
|
||||||
)]
|
)]
|
||||||
pub fn update_device_route(
|
pub fn update_device_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<update_device::IncomingRequest>,
|
body: Ruma<update_device::Request<'_>>,
|
||||||
_device_id: String,
|
_device_id: String,
|
||||||
) -> ConduitResult<update_device::Response> {
|
) -> ConduitResult<update_device::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
@ -80,7 +80,7 @@ pub fn update_device_route(
|
||||||
)]
|
)]
|
||||||
pub fn delete_device_route(
|
pub fn delete_device_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<delete_device::IncomingRequest>,
|
body: Ruma<delete_device::Request<'_>>,
|
||||||
_device_id: String,
|
_device_id: String,
|
||||||
) -> ConduitResult<delete_device::Response> {
|
) -> ConduitResult<delete_device::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
@ -127,7 +127,7 @@ pub fn delete_device_route(
|
||||||
)]
|
)]
|
||||||
pub fn delete_devices_route(
|
pub fn delete_devices_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<delete_devices::IncomingRequest>,
|
body: Ruma<delete_devices::Request<'_>>,
|
||||||
) -> ConduitResult<delete_devices::Response> {
|
) -> ConduitResult<delete_devices::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
||||||
|
|
|
@ -14,7 +14,7 @@ use ruma::{
|
||||||
},
|
},
|
||||||
federation,
|
federation,
|
||||||
},
|
},
|
||||||
directory::{Filter, PublicRoomsChunk, RoomNetwork},
|
directory::{IncomingFilter, PublicRoomsChunk, IncomingRoomNetwork},
|
||||||
events::{
|
events::{
|
||||||
room::{avatar, canonical_alias, guest_access, history_visibility, name, topic},
|
room::{avatar, canonical_alias, guest_access, history_visibility, name, topic},
|
||||||
EventType,
|
EventType,
|
||||||
|
@ -31,7 +31,7 @@ use rocket::{get, post, put};
|
||||||
)]
|
)]
|
||||||
pub async fn get_public_rooms_filtered_route(
|
pub async fn get_public_rooms_filtered_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_public_rooms_filtered::IncomingRequest>,
|
body: Ruma<get_public_rooms_filtered::Request<'_>>,
|
||||||
) -> ConduitResult<get_public_rooms_filtered::Response> {
|
) -> ConduitResult<get_public_rooms_filtered::Response> {
|
||||||
let Ruma {
|
let Ruma {
|
||||||
body:
|
body:
|
||||||
|
@ -61,7 +61,7 @@ pub async fn get_public_rooms_filtered_route(
|
||||||
)]
|
)]
|
||||||
pub async fn get_public_rooms_route(
|
pub async fn get_public_rooms_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_public_rooms::IncomingRequest>,
|
body: Ruma<get_public_rooms::Request<'_>>,
|
||||||
) -> ConduitResult<get_public_rooms::Response> {
|
) -> ConduitResult<get_public_rooms::Response> {
|
||||||
let response = get_public_rooms_filtered_helper(
|
let response = get_public_rooms_filtered_helper(
|
||||||
&db,
|
&db,
|
||||||
|
@ -89,7 +89,7 @@ pub async fn get_public_rooms_route(
|
||||||
)]
|
)]
|
||||||
pub async fn set_room_visibility_route(
|
pub async fn set_room_visibility_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<set_room_visibility::Request>,
|
body: Ruma<set_room_visibility::Request<'_>>,
|
||||||
) -> ConduitResult<set_room_visibility::Response> {
|
) -> ConduitResult<set_room_visibility::Response> {
|
||||||
match body.visibility {
|
match body.visibility {
|
||||||
room::Visibility::Public => db.rooms.set_public(&body.room_id, true)?,
|
room::Visibility::Public => db.rooms.set_public(&body.room_id, true)?,
|
||||||
|
@ -105,7 +105,7 @@ pub async fn set_room_visibility_route(
|
||||||
)]
|
)]
|
||||||
pub async fn get_room_visibility_route(
|
pub async fn get_room_visibility_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_room_visibility::Request>,
|
body: Ruma<get_room_visibility::Request<'_>>,
|
||||||
) -> ConduitResult<get_room_visibility::Response> {
|
) -> ConduitResult<get_room_visibility::Response> {
|
||||||
Ok(get_room_visibility::Response {
|
Ok(get_room_visibility::Response {
|
||||||
visibility: if db.rooms.is_public_room(&body.room_id)? {
|
visibility: if db.rooms.is_public_room(&body.room_id)? {
|
||||||
|
@ -122,8 +122,8 @@ pub async fn get_public_rooms_filtered_helper(
|
||||||
server: Option<&str>,
|
server: Option<&str>,
|
||||||
limit: Option<js_int::UInt>,
|
limit: Option<js_int::UInt>,
|
||||||
since: Option<&str>,
|
since: Option<&str>,
|
||||||
_filter: Option<Filter>,
|
_filter: Option<IncomingFilter>,
|
||||||
_network: Option<RoomNetwork>,
|
_network: Option<IncomingRoomNetwork>,
|
||||||
) -> ConduitResult<get_public_rooms_filtered::Response> {
|
) -> ConduitResult<get_public_rooms_filtered::Response> {
|
||||||
if let Some(other_server) = server
|
if let Some(other_server) = server
|
||||||
.clone()
|
.clone()
|
||||||
|
|
|
@ -7,7 +7,7 @@ use rocket::{get, post};
|
||||||
#[cfg_attr(feature = "conduit_bin", get("/_matrix/client/r0/user/<_>/filter/<_>"))]
|
#[cfg_attr(feature = "conduit_bin", get("/_matrix/client/r0/user/<_>/filter/<_>"))]
|
||||||
pub fn get_filter_route() -> ConduitResult<get_filter::Response> {
|
pub fn get_filter_route() -> ConduitResult<get_filter::Response> {
|
||||||
// TODO
|
// TODO
|
||||||
Ok(get_filter::Response::new(filter::FilterDefinition {
|
Ok(get_filter::Response::new(filter::IncomingFilterDefinition {
|
||||||
event_fields: None,
|
event_fields: None,
|
||||||
event_format: None,
|
event_format: None,
|
||||||
account_data: None,
|
account_data: None,
|
||||||
|
|
|
@ -11,7 +11,7 @@ use ruma::{
|
||||||
uiaa::{AuthFlow, UiaaInfo},
|
uiaa::{AuthFlow, UiaaInfo},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
encryption::UnsignedDeviceInfo,
|
encryption::IncomingUnsignedDeviceInfo,
|
||||||
};
|
};
|
||||||
use std::collections::{BTreeMap, HashSet};
|
use std::collections::{BTreeMap, HashSet};
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ use rocket::{get, post};
|
||||||
)]
|
)]
|
||||||
pub fn upload_keys_route(
|
pub fn upload_keys_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<upload_keys::Request>,
|
body: Ruma<upload_keys::Request<'_>>,
|
||||||
) -> ConduitResult<upload_keys::Response> {
|
) -> ConduitResult<upload_keys::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
||||||
|
@ -56,7 +56,7 @@ pub fn upload_keys_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_keys_route(
|
pub fn get_keys_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_keys::IncomingRequest>,
|
body: Ruma<get_keys::Request<'_>>,
|
||||||
) -> ConduitResult<get_keys::Response> {
|
) -> ConduitResult<get_keys::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -78,9 +78,9 @@ pub fn get_keys_route(
|
||||||
Error::bad_database("all_device_keys contained nonexistent device.")
|
Error::bad_database("all_device_keys contained nonexistent device.")
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
keys.unsigned = Some(UnsignedDeviceInfo {
|
keys.unsigned = IncomingUnsignedDeviceInfo {
|
||||||
device_display_name: metadata.display_name,
|
device_display_name: metadata.display_name,
|
||||||
});
|
};
|
||||||
|
|
||||||
container.insert(device_id, keys);
|
container.insert(device_id, keys);
|
||||||
}
|
}
|
||||||
|
@ -97,9 +97,9 @@ pub fn get_keys_route(
|
||||||
),
|
),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
keys.unsigned = Some(UnsignedDeviceInfo {
|
keys.unsigned = IncomingUnsignedDeviceInfo {
|
||||||
device_display_name: metadata.display_name,
|
device_display_name: metadata.display_name,
|
||||||
});
|
};
|
||||||
|
|
||||||
container.insert(device_id.clone(), keys);
|
container.insert(device_id.clone(), keys);
|
||||||
}
|
}
|
||||||
|
@ -167,7 +167,7 @@ pub fn claim_keys_route(
|
||||||
)]
|
)]
|
||||||
pub fn upload_signing_keys_route(
|
pub fn upload_signing_keys_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<upload_signing_keys::IncomingRequest>,
|
body: Ruma<upload_signing_keys::Request<'_>>,
|
||||||
) -> ConduitResult<upload_signing_keys::Response> {
|
) -> ConduitResult<upload_signing_keys::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
||||||
|
@ -280,7 +280,7 @@ pub fn upload_signatures_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_key_changes_route(
|
pub fn get_key_changes_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_key_changes::IncomingRequest>,
|
body: Ruma<get_key_changes::Request<'_>>,
|
||||||
) -> ConduitResult<get_key_changes::Response> {
|
) -> ConduitResult<get_key_changes::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ pub fn get_media_config_route(
|
||||||
)]
|
)]
|
||||||
pub fn create_content_route(
|
pub fn create_content_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<create_content::Request>,
|
body: Ruma<create_content::Request<'_>>,
|
||||||
) -> ConduitResult<create_content::Response> {
|
) -> ConduitResult<create_content::Response> {
|
||||||
let mxc = format!(
|
let mxc = format!(
|
||||||
"mxc://{}/{}",
|
"mxc://{}/{}",
|
||||||
|
@ -36,7 +36,7 @@ pub fn create_content_route(
|
||||||
);
|
);
|
||||||
db.media.create(
|
db.media.create(
|
||||||
mxc.clone(),
|
mxc.clone(),
|
||||||
body.filename.as_ref(),
|
&body.filename,
|
||||||
&body.content_type,
|
&body.content_type,
|
||||||
&body.file,
|
&body.file,
|
||||||
)?;
|
)?;
|
||||||
|
@ -53,7 +53,7 @@ pub fn create_content_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_content_route(
|
pub fn get_content_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_content::IncomingRequest>,
|
body: Ruma<get_content::Request<'_>>,
|
||||||
_server_name: String,
|
_server_name: String,
|
||||||
_media_id: String,
|
_media_id: String,
|
||||||
) -> ConduitResult<get_content::Response> {
|
) -> ConduitResult<get_content::Response> {
|
||||||
|
@ -85,7 +85,7 @@ pub fn get_content_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_content_thumbnail_route(
|
pub fn get_content_thumbnail_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_content_thumbnail::IncomingRequest>,
|
body: Ruma<get_content_thumbnail::Request<'_>>,
|
||||||
_server_name: String,
|
_server_name: String,
|
||||||
_media_id: String,
|
_media_id: String,
|
||||||
) -> ConduitResult<get_content_thumbnail::Response> {
|
) -> ConduitResult<get_content_thumbnail::Response> {
|
||||||
|
|
|
@ -32,7 +32,7 @@ use rocket::{get, post};
|
||||||
)]
|
)]
|
||||||
pub async fn join_room_by_id_route(
|
pub async fn join_room_by_id_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<join_room_by_id::IncomingRequest>,
|
body: Ruma<join_room_by_id::Request<'_>>,
|
||||||
) -> ConduitResult<join_room_by_id::Response> {
|
) -> ConduitResult<join_room_by_id::Response> {
|
||||||
join_room_by_id_helper(
|
join_room_by_id_helper(
|
||||||
&db,
|
&db,
|
||||||
|
@ -49,7 +49,7 @@ pub async fn join_room_by_id_route(
|
||||||
)]
|
)]
|
||||||
pub async fn join_room_by_id_or_alias_route(
|
pub async fn join_room_by_id_or_alias_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<join_room_by_id_or_alias::IncomingRequest>,
|
body: Ruma<join_room_by_id_or_alias::Request<'_>>,
|
||||||
) -> ConduitResult<join_room_by_id_or_alias::Response> {
|
) -> ConduitResult<join_room_by_id_or_alias::Response> {
|
||||||
let room_id = match RoomId::try_from(body.room_id_or_alias.clone()) {
|
let room_id = match RoomId::try_from(body.room_id_or_alias.clone()) {
|
||||||
Ok(room_id) => room_id,
|
Ok(room_id) => room_id,
|
||||||
|
@ -81,7 +81,7 @@ pub async fn join_room_by_id_or_alias_route(
|
||||||
)]
|
)]
|
||||||
pub fn leave_room_route(
|
pub fn leave_room_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<leave_room::IncomingRequest>,
|
body: Ruma<leave_room::Request<'_>>,
|
||||||
) -> ConduitResult<leave_room::Response> {
|
) -> ConduitResult<leave_room::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -127,11 +127,11 @@ pub fn leave_room_route(
|
||||||
)]
|
)]
|
||||||
pub fn invite_user_route(
|
pub fn invite_user_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<invite_user::Request>,
|
body: Ruma<invite_user::Request<'_>>,
|
||||||
) -> ConduitResult<invite_user::Response> {
|
) -> ConduitResult<invite_user::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
if let invite_user::InvitationRecipient::UserId { user_id } = &body.recipient {
|
if let invite_user::IncomingInvitationRecipient::UserId { user_id } = &body.recipient {
|
||||||
db.rooms.build_and_append_pdu(
|
db.rooms.build_and_append_pdu(
|
||||||
PduBuilder {
|
PduBuilder {
|
||||||
room_id: body.room_id.clone(),
|
room_id: body.room_id.clone(),
|
||||||
|
@ -165,7 +165,7 @@ pub fn invite_user_route(
|
||||||
)]
|
)]
|
||||||
pub fn kick_user_route(
|
pub fn kick_user_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<kick_user::IncomingRequest>,
|
body: Ruma<kick_user::Request<'_>>,
|
||||||
) -> ConduitResult<kick_user::Response> {
|
) -> ConduitResult<kick_user::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -212,7 +212,7 @@ pub fn kick_user_route(
|
||||||
)]
|
)]
|
||||||
pub fn ban_user_route(
|
pub fn ban_user_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<ban_user::IncomingRequest>,
|
body: Ruma<ban_user::Request<'_>>,
|
||||||
) -> ConduitResult<ban_user::Response> {
|
) -> ConduitResult<ban_user::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ pub fn ban_user_route(
|
||||||
)]
|
)]
|
||||||
pub fn unban_user_route(
|
pub fn unban_user_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<unban_user::IncomingRequest>,
|
body: Ruma<unban_user::Request<'_>>,
|
||||||
) -> ConduitResult<unban_user::Response> {
|
) -> ConduitResult<unban_user::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -313,7 +313,7 @@ pub fn unban_user_route(
|
||||||
)]
|
)]
|
||||||
pub fn forget_room_route(
|
pub fn forget_room_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<forget_room::IncomingRequest>,
|
body: Ruma<forget_room::Request<'_>>,
|
||||||
) -> ConduitResult<forget_room::Response> {
|
) -> ConduitResult<forget_room::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -348,7 +348,7 @@ pub fn joined_rooms_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_member_events_route(
|
pub fn get_member_events_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_member_events::Request>,
|
body: Ruma<get_member_events::Request<'_>>,
|
||||||
) -> ConduitResult<get_member_events::Response> {
|
) -> ConduitResult<get_member_events::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -376,7 +376,7 @@ pub fn get_member_events_route(
|
||||||
)]
|
)]
|
||||||
pub fn joined_members_route(
|
pub fn joined_members_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<joined_members::Request>,
|
body: Ruma<joined_members::Request<'_>>,
|
||||||
) -> ConduitResult<joined_members::Response> {
|
) -> ConduitResult<joined_members::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -422,9 +422,9 @@ async fn join_room_by_id_helper(
|
||||||
&db,
|
&db,
|
||||||
room_id.server_name().to_string(),
|
room_id.server_name().to_string(),
|
||||||
federation::membership::create_join_event_template::v1::Request {
|
federation::membership::create_join_event_template::v1::Request {
|
||||||
room_id: room_id.clone(),
|
room_id,
|
||||||
user_id: sender_id.clone(),
|
user_id: sender_id,
|
||||||
ver: vec![RoomVersionId::Version5, RoomVersionId::Version6],
|
ver: &[RoomVersionId::Version5, RoomVersionId::Version6],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
@ -474,8 +474,8 @@ async fn join_room_by_id_helper(
|
||||||
&db,
|
&db,
|
||||||
room_id.server_name().to_string(),
|
room_id.server_name().to_string(),
|
||||||
federation::membership::create_join_event::v1::Request {
|
federation::membership::create_join_event::v1::Request {
|
||||||
room_id: room_id.clone(),
|
room_id,
|
||||||
event_id,
|
event_id: &event_id,
|
||||||
pdu_stub: serde_json::from_value(join_event_stub_value)
|
pdu_stub: serde_json::from_value(join_event_stub_value)
|
||||||
.expect("we just created this event"),
|
.expect("we just created this event"),
|
||||||
},
|
},
|
||||||
|
|
|
@ -18,7 +18,7 @@ use rocket::{get, put};
|
||||||
)]
|
)]
|
||||||
pub fn send_message_event_route(
|
pub fn send_message_event_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<send_message_event::IncomingRequest>,
|
body: Ruma<send_message_event::Request<'_>>,
|
||||||
) -> ConduitResult<send_message_event::Response> {
|
) -> ConduitResult<send_message_event::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ pub fn send_message_event_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_message_events_route(
|
pub fn get_message_events_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_message_events::IncomingRequest>,
|
body: Ruma<get_message_events::Request<'_>>,
|
||||||
) -> ConduitResult<get_message_events::Response> {
|
) -> ConduitResult<get_message_events::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ pub fn get_message_events_route(
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
let mut resp = get_message_events::Response::new();
|
let mut resp = get_message_events::Response::new();
|
||||||
resp.start = Some(body.from.clone());
|
resp.start = Some(body.from.to_owned());
|
||||||
resp.end = end_token;
|
resp.end = end_token;
|
||||||
resp.chunk = events_after;
|
resp.chunk = events_after;
|
||||||
resp.state = Vec::new();
|
resp.state = Vec::new();
|
||||||
|
@ -120,7 +120,7 @@ pub fn get_message_events_route(
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
let mut resp = get_message_events::Response::new();
|
let mut resp = get_message_events::Response::new();
|
||||||
resp.start = Some(body.from.clone());
|
resp.start = Some(body.from.to_owned());
|
||||||
resp.end = start_token;
|
resp.end = start_token;
|
||||||
resp.chunk = events_before;
|
resp.chunk = events_before;
|
||||||
resp.state = Vec::new();
|
resp.state = Vec::new();
|
||||||
|
|
|
@ -12,7 +12,7 @@ use rocket::put;
|
||||||
)]
|
)]
|
||||||
pub fn set_presence_route(
|
pub fn set_presence_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<set_presence::Request>,
|
body: Ruma<set_presence::Request<'_>>,
|
||||||
) -> ConduitResult<set_presence::Response> {
|
) -> ConduitResult<set_presence::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ use std::convert::TryInto;
|
||||||
)]
|
)]
|
||||||
pub fn set_displayname_route(
|
pub fn set_displayname_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<set_display_name::Request>,
|
body: Ruma<set_display_name::Request<'_>>,
|
||||||
) -> ConduitResult<set_display_name::Response> {
|
) -> ConduitResult<set_display_name::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ pub fn set_displayname_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_displayname_route(
|
pub fn get_displayname_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_display_name::Request>,
|
body: Ruma<get_display_name::Request<'_>>,
|
||||||
) -> ConduitResult<get_display_name::Response> {
|
) -> ConduitResult<get_display_name::Response> {
|
||||||
Ok(get_display_name::Response {
|
Ok(get_display_name::Response {
|
||||||
displayname: db.users.displayname(&body.user_id)?,
|
displayname: db.users.displayname(&body.user_id)?,
|
||||||
|
@ -112,7 +112,7 @@ pub fn get_displayname_route(
|
||||||
)]
|
)]
|
||||||
pub fn set_avatar_url_route(
|
pub fn set_avatar_url_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<set_avatar_url::Request>,
|
body: Ruma<set_avatar_url::Request<'_>>,
|
||||||
) -> ConduitResult<set_avatar_url::Response> {
|
) -> ConduitResult<set_avatar_url::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -201,7 +201,7 @@ pub fn set_avatar_url_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_avatar_url_route(
|
pub fn get_avatar_url_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_avatar_url::Request>,
|
body: Ruma<get_avatar_url::Request<'_>>,
|
||||||
) -> ConduitResult<get_avatar_url::Response> {
|
) -> ConduitResult<get_avatar_url::Response> {
|
||||||
Ok(get_avatar_url::Response {
|
Ok(get_avatar_url::Response {
|
||||||
avatar_url: db.users.avatar_url(&body.user_id)?,
|
avatar_url: db.users.avatar_url(&body.user_id)?,
|
||||||
|
@ -215,7 +215,7 @@ pub fn get_avatar_url_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_profile_route(
|
pub fn get_profile_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_profile::Request>,
|
body: Ruma<get_profile::Request<'_>>,
|
||||||
) -> ConduitResult<get_profile::Response> {
|
) -> ConduitResult<get_profile::Response> {
|
||||||
let avatar_url = db.users.avatar_url(&body.user_id)?;
|
let avatar_url = db.users.avatar_url(&body.user_id)?;
|
||||||
let displayname = db.users.displayname(&body.user_id)?;
|
let displayname = db.users.displayname(&body.user_id)?;
|
||||||
|
|
|
@ -15,7 +15,7 @@ use std::{collections::BTreeMap, time::SystemTime};
|
||||||
)]
|
)]
|
||||||
pub fn set_read_marker_route(
|
pub fn set_read_marker_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<set_read_marker::Request>,
|
body: Ruma<set_read_marker::Request<'_>>,
|
||||||
) -> ConduitResult<set_read_marker::Response> {
|
) -> ConduitResult<set_read_marker::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ pub fn set_read_marker_route(
|
||||||
);
|
);
|
||||||
let mut receipt_content = BTreeMap::new();
|
let mut receipt_content = BTreeMap::new();
|
||||||
receipt_content.insert(
|
receipt_content.insert(
|
||||||
event.clone(),
|
event.to_owned(),
|
||||||
ruma::events::receipt::Receipts {
|
ruma::events::receipt::Receipts {
|
||||||
read: Some(user_receipts),
|
read: Some(user_receipts),
|
||||||
},
|
},
|
||||||
|
|
|
@ -14,7 +14,7 @@ use rocket::put;
|
||||||
)]
|
)]
|
||||||
pub fn redact_event_route(
|
pub fn redact_event_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<redact_event::Request>,
|
body: Ruma<redact_event::Request<'_>>,
|
||||||
) -> ConduitResult<redact_event::Response> {
|
) -> ConduitResult<redact_event::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ use rocket::{get, post};
|
||||||
)]
|
)]
|
||||||
pub fn create_room_route(
|
pub fn create_room_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<create_room::Request>,
|
body: Ruma<create_room::Request<'_>>,
|
||||||
) -> ConduitResult<create_room::Response> {
|
) -> ConduitResult<create_room::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -48,11 +48,8 @@ pub fn create_room_route(
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
let mut content = ruma::events::room::create::CreateEventContent::new(sender_id.clone());
|
let mut content = ruma::events::room::create::CreateEventContent::new(sender_id.clone());
|
||||||
content.federate = body.creation_content.as_ref().map_or(true, |c| c.federate);
|
content.federate = body.creation_content.federate;
|
||||||
content.predecessor = body
|
content.predecessor = body.creation_content.predecessor.clone();
|
||||||
.creation_content
|
|
||||||
.as_ref()
|
|
||||||
.and_then(|c| c.predecessor.clone());
|
|
||||||
content.room_version = RoomVersionId::Version6;
|
content.room_version = RoomVersionId::Version6;
|
||||||
|
|
||||||
// 1. The room create event
|
// 1. The room create event
|
||||||
|
@ -80,7 +77,7 @@ pub fn create_room_route(
|
||||||
membership: member::MembershipState::Join,
|
membership: member::MembershipState::Join,
|
||||||
displayname: db.users.displayname(&sender_id)?,
|
displayname: db.users.displayname(&sender_id)?,
|
||||||
avatar_url: db.users.avatar_url(&sender_id)?,
|
avatar_url: db.users.avatar_url(&sender_id)?,
|
||||||
is_direct: body.is_direct,
|
is_direct: Some(body.is_direct),
|
||||||
third_party_invite: None,
|
third_party_invite: None,
|
||||||
})
|
})
|
||||||
.expect("event is valid, we just created it"),
|
.expect("event is valid, we just created it"),
|
||||||
|
@ -137,8 +134,7 @@ pub fn create_room_route(
|
||||||
// 4. Events set by preset
|
// 4. Events set by preset
|
||||||
|
|
||||||
// Figure out preset. We need it for preset specific events
|
// Figure out preset. We need it for preset specific events
|
||||||
let visibility = body.visibility.unwrap_or(room::Visibility::Private);
|
let preset = body.preset.unwrap_or_else(|| match body.visibility {
|
||||||
let preset = body.preset.unwrap_or_else(|| match visibility {
|
|
||||||
room::Visibility::Private => create_room::RoomPreset::PrivateChat,
|
room::Visibility::Private => create_room::RoomPreset::PrivateChat,
|
||||||
room::Visibility::Public => create_room::RoomPreset::PublicChat,
|
room::Visibility::Public => create_room::RoomPreset::PublicChat,
|
||||||
});
|
});
|
||||||
|
@ -213,32 +209,19 @@ pub fn create_room_route(
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
// 5. Events listed in initial_state
|
// 5. Events listed in initial_state
|
||||||
for create_room::InitialStateEvent {
|
for event in &body.initial_state {
|
||||||
event_type,
|
let pdu_builder = serde_json::from_str::<PduBuilder>(
|
||||||
state_key,
|
&serde_json::to_string(&event).expect("AnyInitialStateEvent::to_string always works"),
|
||||||
content,
|
).map_err(|_| Error::BadRequest(ErrorKind::InvalidParam, "Invalid initial state event."))?;
|
||||||
} in &body.initial_state
|
|
||||||
{
|
|
||||||
// Silently skip encryption events if they are not allowed
|
// Silently skip encryption events if they are not allowed
|
||||||
if event_type == &EventType::RoomEncryption && db.globals.encryption_disabled() {
|
if pdu_builder.event_type == EventType::RoomEncryption && db.globals.encryption_disabled()
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
db.rooms.build_and_append_pdu(
|
db.rooms
|
||||||
PduBuilder {
|
.build_and_append_pdu(pdu_builder, &db.globals, &db.account_data)?;
|
||||||
room_id: room_id.clone(),
|
|
||||||
sender: sender_id.clone(),
|
|
||||||
event_type: event_type.clone(),
|
|
||||||
content: serde_json::from_str(content.get()).map_err(|_| {
|
|
||||||
Error::BadRequest(ErrorKind::BadJson, "Invalid initial_state content.")
|
|
||||||
})?,
|
|
||||||
unsigned: None,
|
|
||||||
state_key: state_key.clone(),
|
|
||||||
redacts: None,
|
|
||||||
},
|
|
||||||
&db.globals,
|
|
||||||
&db.account_data,
|
|
||||||
)?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 6. Events implied by name and topic
|
// 6. Events implied by name and topic
|
||||||
|
@ -293,7 +276,7 @@ pub fn create_room_route(
|
||||||
membership: member::MembershipState::Invite,
|
membership: member::MembershipState::Invite,
|
||||||
displayname: db.users.displayname(&user)?,
|
displayname: db.users.displayname(&user)?,
|
||||||
avatar_url: db.users.avatar_url(&user)?,
|
avatar_url: db.users.avatar_url(&user)?,
|
||||||
is_direct: body.is_direct,
|
is_direct: Some(body.is_direct),
|
||||||
third_party_invite: None,
|
third_party_invite: None,
|
||||||
})
|
})
|
||||||
.expect("event is valid, we just created it"),
|
.expect("event is valid, we just created it"),
|
||||||
|
@ -311,7 +294,7 @@ pub fn create_room_route(
|
||||||
db.rooms.set_alias(&alias, Some(&room_id), &db.globals)?;
|
db.rooms.set_alias(&alias, Some(&room_id), &db.globals)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(room::Visibility::Public) = body.visibility {
|
if body.visibility == room::Visibility::Public {
|
||||||
db.rooms.set_public(&room_id, true)?;
|
db.rooms.set_public(&room_id, true)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -324,7 +307,7 @@ pub fn create_room_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_room_event_route(
|
pub fn get_room_event_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_room_event::Request>,
|
body: Ruma<get_room_event::Request<'_>>,
|
||||||
) -> ConduitResult<get_room_event::Response> {
|
) -> ConduitResult<get_room_event::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
use super::State;
|
use super::State;
|
||||||
use crate::{ConduitResult, Database, Error, Ruma};
|
use crate::{ConduitResult, Database, Error, Ruma};
|
||||||
use js_int::uint;
|
|
||||||
use ruma::api::client::{error::ErrorKind, r0::search::search_events};
|
use ruma::api::client::{error::ErrorKind, r0::search::search_events};
|
||||||
|
|
||||||
#[cfg(feature = "conduit_bin")]
|
#[cfg(feature = "conduit_bin")]
|
||||||
use rocket::post;
|
use rocket::post;
|
||||||
use search_events::{ResultCategories, ResultRoomEvents, SearchResult};
|
use search_events::{EventContextResult, ResultCategories, ResultRoomEvents, SearchResult};
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
|
|
||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
|
@ -14,7 +13,7 @@ use std::collections::BTreeMap;
|
||||||
)]
|
)]
|
||||||
pub fn search_events_route(
|
pub fn search_events_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<search_events::IncomingRequest>,
|
body: Ruma<search_events::Request<'_>>,
|
||||||
) -> ConduitResult<search_events::Response> {
|
) -> ConduitResult<search_events::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -51,13 +50,18 @@ pub fn search_events_route(
|
||||||
.0
|
.0
|
||||||
.map(|result| {
|
.map(|result| {
|
||||||
Ok::<_, Error>(SearchResult {
|
Ok::<_, Error>(SearchResult {
|
||||||
context: None,
|
context: EventContextResult {
|
||||||
|
end: None,
|
||||||
|
events_after: Vec::new(),
|
||||||
|
events_before: Vec::new(),
|
||||||
|
profile_info: BTreeMap::new(),
|
||||||
|
start: None,
|
||||||
|
},
|
||||||
rank: None,
|
rank: None,
|
||||||
result: db
|
result: db
|
||||||
.rooms
|
.rooms
|
||||||
.get_pdu_from_id(&result)?
|
.get_pdu_from_id(&result)?
|
||||||
// TODO this is an awkward type conversion see method
|
.map(|pdu| pdu.to_room_event()),
|
||||||
.map(|pdu| pdu.to_any_event()),
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.filter_map(|r| r.ok())
|
.filter_map(|r| r.ok())
|
||||||
|
@ -72,14 +76,14 @@ pub fn search_events_route(
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(search_events::Response::new(ResultCategories {
|
Ok(search_events::Response::new(ResultCategories {
|
||||||
room_events: Some(ResultRoomEvents {
|
room_events: ResultRoomEvents {
|
||||||
count: uint!(0), // TODO
|
count: None, // TODO? maybe not
|
||||||
groups: BTreeMap::new(), // TODO
|
groups: BTreeMap::new(), // TODO
|
||||||
next_batch,
|
next_batch,
|
||||||
results,
|
results,
|
||||||
state: BTreeMap::new(), // TODO
|
state: BTreeMap::new(), // TODO
|
||||||
highlights: search.1,
|
highlights: search.1,
|
||||||
}),
|
},
|
||||||
})
|
})
|
||||||
.into())
|
.into())
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ pub fn get_login_types_route() -> ConduitResult<get_login_types::Response> {
|
||||||
)]
|
)]
|
||||||
pub fn login_route(
|
pub fn login_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<login::IncomingRequest>,
|
body: Ruma<login::Request<'_>>,
|
||||||
) -> ConduitResult<login::Response> {
|
) -> ConduitResult<login::Response> {
|
||||||
// Validate login method
|
// Validate login method
|
||||||
let user_id =
|
let user_id =
|
||||||
|
|
|
@ -21,7 +21,7 @@ use rocket::{get, put};
|
||||||
)]
|
)]
|
||||||
pub fn send_state_event_for_key_route(
|
pub fn send_state_event_for_key_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<send_state_event_for_key::IncomingRequest>,
|
body: Ruma<send_state_event_for_key::Request<'_>>,
|
||||||
) -> ConduitResult<send_state_event_for_key::Response> {
|
) -> ConduitResult<send_state_event_for_key::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ pub fn send_state_event_for_key_route(
|
||||||
&body.content,
|
&body.content,
|
||||||
content,
|
content,
|
||||||
&body.room_id,
|
&body.room_id,
|
||||||
Some(body.state_key.clone()),
|
Some(body.state_key.to_owned()),
|
||||||
)?)
|
)?)
|
||||||
.into(),
|
.into(),
|
||||||
)
|
)
|
||||||
|
@ -52,7 +52,7 @@ pub fn send_state_event_for_key_route(
|
||||||
)]
|
)]
|
||||||
pub fn send_state_event_for_empty_key_route(
|
pub fn send_state_event_for_empty_key_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<send_state_event_for_empty_key::IncomingRequest>,
|
body: Ruma<send_state_event_for_empty_key::Request<'_>>,
|
||||||
) -> ConduitResult<send_state_event_for_empty_key::Response> {
|
) -> ConduitResult<send_state_event_for_empty_key::Response> {
|
||||||
// This just calls send_state_event_for_key_route
|
// This just calls send_state_event_for_key_route
|
||||||
let Ruma {
|
let Ruma {
|
||||||
|
|
|
@ -31,7 +31,7 @@ use std::{
|
||||||
)]
|
)]
|
||||||
pub async fn sync_events_route(
|
pub async fn sync_events_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<sync_events::IncomingRequest>,
|
body: Ruma<sync_events::Request<'_>>,
|
||||||
) -> ConduitResult<sync_events::Response> {
|
) -> ConduitResult<sync_events::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
let device_id = body.device_id.as_ref().expect("user is authenticated");
|
||||||
|
|
|
@ -15,7 +15,7 @@ use rocket::{delete, get, put};
|
||||||
)]
|
)]
|
||||||
pub fn update_tag_route(
|
pub fn update_tag_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<create_tag::Request>,
|
body: Ruma<create_tag::Request<'_>>,
|
||||||
) -> ConduitResult<create_tag::Response> {
|
) -> ConduitResult<create_tag::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ pub fn update_tag_route(
|
||||||
)]
|
)]
|
||||||
pub fn delete_tag_route(
|
pub fn delete_tag_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<delete_tag::Request>,
|
body: Ruma<delete_tag::Request<'_>>,
|
||||||
) -> ConduitResult<delete_tag::Response> {
|
) -> ConduitResult<delete_tag::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ pub fn delete_tag_route(
|
||||||
)]
|
)]
|
||||||
pub fn get_tags_route(
|
pub fn get_tags_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_tags::Request>,
|
body: Ruma<get_tags::Request<'_>>,
|
||||||
) -> ConduitResult<get_tags::Response> {
|
) -> ConduitResult<get_tags::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ use rocket::put;
|
||||||
)]
|
)]
|
||||||
pub fn send_event_to_device_route(
|
pub fn send_event_to_device_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<send_event_to_device::IncomingRequest>,
|
body: Ruma<send_event_to_device::Request<'_>>,
|
||||||
) -> ConduitResult<send_event_to_device::Response> {
|
) -> ConduitResult<send_event_to_device::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use super::State;
|
use super::State;
|
||||||
use crate::{utils, ConduitResult, Database, Ruma};
|
use crate::{utils, ConduitResult, Database, Ruma};
|
||||||
|
use create_typing_event::Typing;
|
||||||
use ruma::api::client::r0::typing::create_typing_event;
|
use ruma::api::client::r0::typing::create_typing_event;
|
||||||
|
|
||||||
#[cfg(feature = "conduit_bin")]
|
#[cfg(feature = "conduit_bin")]
|
||||||
|
@ -11,16 +12,15 @@ use rocket::put;
|
||||||
)]
|
)]
|
||||||
pub fn create_typing_event_route(
|
pub fn create_typing_event_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<create_typing_event::Request>,
|
body: Ruma<create_typing_event::Request<'_>>,
|
||||||
) -> ConduitResult<create_typing_event::Response> {
|
) -> ConduitResult<create_typing_event::Response> {
|
||||||
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
if body.typing {
|
if let Typing::Yes(duration) = body.state {
|
||||||
db.rooms.edus.roomactive_add(
|
db.rooms.edus.roomactive_add(
|
||||||
&sender_id,
|
&sender_id,
|
||||||
&body.room_id,
|
&body.room_id,
|
||||||
body.timeout.map(|d| d.as_millis() as u64).unwrap_or(30000)
|
duration.as_millis() as u64 + utils::millis_since_unix_epoch(),
|
||||||
+ utils::millis_since_unix_epoch(),
|
|
||||||
&db.globals,
|
&db.globals,
|
||||||
)?;
|
)?;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -11,7 +11,7 @@ use rocket::post;
|
||||||
)]
|
)]
|
||||||
pub fn search_users_route(
|
pub fn search_users_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<search_users::IncomingRequest>,
|
body: Ruma<search_users::Request<'_>>,
|
||||||
) -> ConduitResult<search_users::Response> {
|
) -> ConduitResult<search_users::Response> {
|
||||||
let limit = u64::from(body.limit) as usize;
|
let limit = u64::from(body.limit) as usize;
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ impl Media {
|
||||||
pub fn create(
|
pub fn create(
|
||||||
&self,
|
&self,
|
||||||
mxc: String,
|
mxc: String,
|
||||||
filename: Option<&String>,
|
filename: &Option<String>,
|
||||||
content_type: &str,
|
content_type: &str,
|
||||||
file: &[u8],
|
file: &[u8],
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
|
@ -25,7 +25,7 @@ impl Media {
|
||||||
key.extend_from_slice(&0_u32.to_be_bytes()); // Width = 0 if it's not a thumbnail
|
key.extend_from_slice(&0_u32.to_be_bytes()); // Width = 0 if it's not a thumbnail
|
||||||
key.extend_from_slice(&0_u32.to_be_bytes()); // Height = 0 if it's not a thumbnail
|
key.extend_from_slice(&0_u32.to_be_bytes()); // Height = 0 if it's not a thumbnail
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(filename.map(|f| f.as_bytes()).unwrap_or_default());
|
key.extend_from_slice(filename.as_ref().map(|f| f.as_bytes()).unwrap_or_default());
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(content_type.as_bytes());
|
key.extend_from_slice(content_type.as_bytes());
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ use ruma::{
|
||||||
keys::{CrossSigningKey, OneTimeKey},
|
keys::{CrossSigningKey, OneTimeKey},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
encryption::DeviceKeys,
|
encryption::IncomingDeviceKeys,
|
||||||
events::{AnyToDeviceEvent, EventType},
|
events::{AnyToDeviceEvent, EventType},
|
||||||
DeviceId, DeviceKeyAlgorithm, DeviceKeyId, Raw, UserId,
|
DeviceId, DeviceKeyAlgorithm, DeviceKeyId, Raw, UserId,
|
||||||
};
|
};
|
||||||
|
@ -395,7 +395,7 @@ impl Users {
|
||||||
&self,
|
&self,
|
||||||
user_id: &UserId,
|
user_id: &UserId,
|
||||||
device_id: &DeviceId,
|
device_id: &DeviceId,
|
||||||
device_keys: &DeviceKeys,
|
device_keys: &IncomingDeviceKeys,
|
||||||
rooms: &super::rooms::Rooms,
|
rooms: &super::rooms::Rooms,
|
||||||
globals: &super::globals::Globals,
|
globals: &super::globals::Globals,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
|
@ -625,7 +625,7 @@ impl Users {
|
||||||
&self,
|
&self,
|
||||||
user_id: &UserId,
|
user_id: &UserId,
|
||||||
device_id: &DeviceId,
|
device_id: &DeviceId,
|
||||||
) -> Result<Option<DeviceKeys>> {
|
) -> Result<Option<IncomingDeviceKeys>> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.to_string().as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(device_id.as_bytes());
|
key.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
|
@ -70,14 +70,14 @@ where
|
||||||
use ErrorKind::*;
|
use ErrorKind::*;
|
||||||
let (kind, status_code) = match self {
|
let (kind, status_code) = match self {
|
||||||
Self::BadRequest(kind, _) => (
|
Self::BadRequest(kind, _) => (
|
||||||
kind,
|
kind.clone(),
|
||||||
match kind {
|
match kind {
|
||||||
Forbidden | GuestAccessForbidden | ThreepidAuthFailed | ThreepidDenied => {
|
Forbidden | GuestAccessForbidden | ThreepidAuthFailed | ThreepidDenied => {
|
||||||
StatusCode::FORBIDDEN
|
StatusCode::FORBIDDEN
|
||||||
}
|
}
|
||||||
Unauthorized | UnknownToken | MissingToken => StatusCode::UNAUTHORIZED,
|
Unauthorized | UnknownToken { .. } | MissingToken => StatusCode::UNAUTHORIZED,
|
||||||
NotFound => StatusCode::NOT_FOUND,
|
NotFound => StatusCode::NOT_FOUND,
|
||||||
LimitExceeded => StatusCode::TOO_MANY_REQUESTS,
|
LimitExceeded { .. } => StatusCode::TOO_MANY_REQUESTS,
|
||||||
UserDeactivated => StatusCode::FORBIDDEN,
|
UserDeactivated => StatusCode::FORBIDDEN,
|
||||||
TooLarge => StatusCode::PAYLOAD_TOO_LARGE,
|
TooLarge => StatusCode::PAYLOAD_TOO_LARGE,
|
||||||
_ => StatusCode::BAD_REQUEST,
|
_ => StatusCode::BAD_REQUEST,
|
||||||
|
|
|
@ -255,7 +255,7 @@ impl PduEvent {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Build the start of a PDU in order to add it to the `Database`.
|
/// Build the start of a PDU in order to add it to the `Database`.
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Deserialize)]
|
||||||
pub struct PduBuilder {
|
pub struct PduBuilder {
|
||||||
pub room_id: RoomId,
|
pub room_id: RoomId,
|
||||||
pub sender: UserId,
|
pub sender: UserId,
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::Error;
|
use crate::Error;
|
||||||
use ruma::{
|
use ruma::{
|
||||||
api::IncomingRequest,
|
api::{Outgoing, OutgoingRequest},
|
||||||
identifiers::{DeviceId, UserId},
|
identifiers::{DeviceId, UserId},
|
||||||
};
|
};
|
||||||
use std::{convert::TryInto, ops::Deref};
|
use std::{convert::TryFrom, convert::TryInto, ops::Deref};
|
||||||
|
|
||||||
#[cfg(feature = "conduit_bin")]
|
#[cfg(feature = "conduit_bin")]
|
||||||
use {
|
use {
|
||||||
|
@ -24,15 +24,21 @@ use {
|
||||||
|
|
||||||
/// This struct converts rocket requests into ruma structs by converting them into http requests
|
/// This struct converts rocket requests into ruma structs by converting them into http requests
|
||||||
/// first.
|
/// first.
|
||||||
pub struct Ruma<T: IncomingRequest> {
|
pub struct Ruma<T: Outgoing> {
|
||||||
pub body: T,
|
pub body: T::Incoming,
|
||||||
pub sender_id: Option<UserId>,
|
pub sender_id: Option<UserId>,
|
||||||
pub device_id: Option<Box<DeviceId>>,
|
pub device_id: Option<Box<DeviceId>>,
|
||||||
pub json_body: Option<Box<serde_json::value::RawValue>>, // This is None when body is not a valid string
|
pub json_body: Option<Box<serde_json::value::RawValue>>, // This is None when body is not a valid string
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "conduit_bin")]
|
#[cfg(feature = "conduit_bin")]
|
||||||
impl<'a, T: IncomingRequest> FromTransformedData<'a> for Ruma<T> {
|
impl<'a, T: Outgoing + OutgoingRequest> FromTransformedData<'a> for Ruma<T>
|
||||||
|
where
|
||||||
|
<T as Outgoing>::Incoming: TryFrom<http::request::Request<std::vec::Vec<u8>>> + std::fmt::Debug,
|
||||||
|
<<T as Outgoing>::Incoming as std::convert::TryFrom<
|
||||||
|
http::request::Request<std::vec::Vec<u8>>,
|
||||||
|
>>::Error: std::fmt::Debug,
|
||||||
|
{
|
||||||
type Error = (); // TODO: Better error handling
|
type Error = (); // TODO: Better error handling
|
||||||
type Owned = Data;
|
type Owned = Data;
|
||||||
type Borrowed = Self::Owned;
|
type Borrowed = Self::Owned;
|
||||||
|
@ -93,7 +99,7 @@ impl<'a, T: IncomingRequest> FromTransformedData<'a> for Ruma<T> {
|
||||||
let http_request = http_request.body(body.clone()).unwrap();
|
let http_request = http_request.body(body.clone()).unwrap();
|
||||||
log::info!("{:?}", http_request);
|
log::info!("{:?}", http_request);
|
||||||
|
|
||||||
match T::try_from(http_request) {
|
match <T as Outgoing>::Incoming::try_from(http_request) {
|
||||||
Ok(t) => Success(Ruma {
|
Ok(t) => Success(Ruma {
|
||||||
body: t,
|
body: t,
|
||||||
sender_id: user_id,
|
sender_id: user_id,
|
||||||
|
@ -112,8 +118,8 @@ impl<'a, T: IncomingRequest> FromTransformedData<'a> for Ruma<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: IncomingRequest> Deref for Ruma<T> {
|
impl<T: Outgoing> Deref for Ruma<T> {
|
||||||
type Target = T;
|
type Target = T::Incoming;
|
||||||
|
|
||||||
fn deref(&self) -> &Self::Target {
|
fn deref(&self) -> &Self::Target {
|
||||||
&self.body
|
&self.body
|
||||||
|
|
|
@ -207,7 +207,7 @@ pub fn get_server_keys_deprecated(db: State<'_, Database>) -> Json<String> {
|
||||||
)]
|
)]
|
||||||
pub async fn get_public_rooms_route(
|
pub async fn get_public_rooms_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
body: Ruma<get_public_rooms::v1::IncomingRequest>,
|
body: Ruma<get_public_rooms::v1::Request<'_>>,
|
||||||
) -> ConduitResult<get_public_rooms::v1::Response> {
|
) -> ConduitResult<get_public_rooms::v1::Response> {
|
||||||
let Ruma {
|
let Ruma {
|
||||||
body:
|
body:
|
||||||
|
@ -230,7 +230,7 @@ pub async fn get_public_rooms_route(
|
||||||
limit,
|
limit,
|
||||||
since.as_deref(),
|
since.as_deref(),
|
||||||
None,
|
None,
|
||||||
Some(ruma::directory::RoomNetwork::Matrix),
|
Some(ruma::directory::IncomingRoomNetwork::Matrix),
|
||||||
)
|
)
|
||||||
.await?
|
.await?
|
||||||
.0;
|
.0;
|
||||||
|
@ -264,7 +264,7 @@ pub async fn get_public_rooms_route(
|
||||||
)]
|
)]
|
||||||
pub fn send_transaction_message_route<'a>(
|
pub fn send_transaction_message_route<'a>(
|
||||||
_db: State<'a, Database>,
|
_db: State<'a, Database>,
|
||||||
body: Ruma<send_transaction_message::v1::IncomingRequest>,
|
body: Ruma<send_transaction_message::v1::Request<'_>>,
|
||||||
) -> ConduitResult<send_transaction_message::v1::Response> {
|
) -> ConduitResult<send_transaction_message::v1::Response> {
|
||||||
dbg!(&*body);
|
dbg!(&*body);
|
||||||
Ok(send_transaction_message::v1::Response {
|
Ok(send_transaction_message::v1::Response {
|
||||||
|
|
Loading…
Reference in New Issue