diff --git a/crates/ruma-client-api/src/keys/claim_keys.rs b/crates/ruma-client-api/src/keys/claim_keys.rs index 43424267..d90ff764 100644 --- a/crates/ruma-client-api/src/keys/claim_keys.rs +++ b/crates/ruma-client-api/src/keys/claim_keys.rs @@ -2,75 +2,4 @@ //! //! Claims one-time keys for use in pre-key messages. -pub mod v3 { - //! `/v3/` ([spec]) - //! - //! [spec]: https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3keysclaim - - use std::{collections::BTreeMap, time::Duration}; - - use ruma_common::{ - api::{request, response, Metadata}, - encryption::OneTimeKey, - metadata, - serde::Raw, - DeviceKeyAlgorithm, OwnedDeviceId, OwnedDeviceKeyId, OwnedUserId, - }; - use serde_json::Value as JsonValue; - - const METADATA: Metadata = metadata! { - method: POST, - rate_limited: false, - authentication: AccessToken, - history: { - 1.0 => "/_matrix/client/r0/keys/claim", - 1.1 => "/_matrix/client/v3/keys/claim", - } - }; - - /// Request type for the `claim_keys` endpoint. - #[request(error = crate::Error)] - pub struct Request { - /// The time (in milliseconds) to wait when downloading keys from remote servers. - /// 10 seconds is the recommended default. - #[serde( - with = "ruma_common::serde::duration::opt_ms", - default, - skip_serializing_if = "Option::is_none" - )] - pub timeout: Option, - - /// The keys to be claimed. - pub one_time_keys: BTreeMap>, - } - - /// Response type for the `claim_keys` endpoint. - #[response(error = crate::Error)] - pub struct Response { - /// If any remote homeservers could not be reached, they are recorded here. - /// The names of the properties are the names of the unreachable servers. - pub failures: BTreeMap, - - /// One-time keys for the queried devices. - pub one_time_keys: BTreeMap, - } - - impl Request { - /// Creates a new `Request` with the given key claims and the recommended 10 second timeout. - pub fn new( - one_time_keys: BTreeMap>, - ) -> Self { - Self { timeout: Some(Duration::from_secs(10)), one_time_keys } - } - } - - impl Response { - /// Creates a new `Response` with the given keys and no failures. - pub fn new(one_time_keys: BTreeMap) -> Self { - Self { failures: BTreeMap::new(), one_time_keys } - } - } - - /// The one-time keys for a given device. - pub type OneTimeKeys = BTreeMap>>; -} +pub mod v3; diff --git a/crates/ruma-client-api/src/keys/claim_keys/v3.rs b/crates/ruma-client-api/src/keys/claim_keys/v3.rs new file mode 100644 index 00000000..bd063f55 --- /dev/null +++ b/crates/ruma-client-api/src/keys/claim_keys/v3.rs @@ -0,0 +1,70 @@ +//! `/v3/` ([spec]) +//! +//! [spec]: https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3keysclaim + +use std::{collections::BTreeMap, time::Duration}; + +use ruma_common::{ + api::{request, response, Metadata}, + encryption::OneTimeKey, + metadata, + serde::Raw, + DeviceKeyAlgorithm, OwnedDeviceId, OwnedDeviceKeyId, OwnedUserId, +}; +use serde_json::Value as JsonValue; + +const METADATA: Metadata = metadata! { + method: POST, + rate_limited: false, + authentication: AccessToken, + history: { + 1.0 => "/_matrix/client/r0/keys/claim", + 1.1 => "/_matrix/client/v3/keys/claim", + } +}; + +/// Request type for the `claim_keys` endpoint. +#[request(error = crate::Error)] +pub struct Request { + /// The time (in milliseconds) to wait when downloading keys from remote servers. + /// 10 seconds is the recommended default. + #[serde( + with = "ruma_common::serde::duration::opt_ms", + default, + skip_serializing_if = "Option::is_none" + )] + pub timeout: Option, + + /// The keys to be claimed. + pub one_time_keys: BTreeMap>, +} + +/// Response type for the `claim_keys` endpoint. +#[response(error = crate::Error)] +pub struct Response { + /// If any remote homeservers could not be reached, they are recorded here. + /// The names of the properties are the names of the unreachable servers. + pub failures: BTreeMap, + + /// One-time keys for the queried devices. + pub one_time_keys: BTreeMap, +} + +impl Request { + /// Creates a new `Request` with the given key claims and the recommended 10 second timeout. + pub fn new( + one_time_keys: BTreeMap>, + ) -> Self { + Self { timeout: Some(Duration::from_secs(10)), one_time_keys } + } +} + +impl Response { + /// Creates a new `Response` with the given keys and no failures. + pub fn new(one_time_keys: BTreeMap) -> Self { + Self { failures: BTreeMap::new(), one_time_keys } + } +} + +/// The one-time keys for a given device. +pub type OneTimeKeys = BTreeMap>>;