pub mod unstable {
use std::collections::BTreeMap;
use ruma_common::{
OwnedDeviceId, OwnedOneTimeKeyId,
api::{auth_scheme::AccessToken, request, response},
encryption::{DeviceKeys, OneTimeKey},
metadata,
serde::Raw,
};
use crate::dehydrated_device::DehydratedDeviceData;
metadata! {
method: PUT,
rate_limited: false,
authentication: AccessToken,
history: {
unstable => "/_matrix/client/unstable/org.matrix.msc3814.v1/dehydrated_device",
}
}
#[request(error = crate::Error)]
pub struct Request {
pub device_id: OwnedDeviceId,
pub initial_device_display_name: Option<String>,
pub device_data: Raw<DehydratedDeviceData>,
pub device_keys: Raw<DeviceKeys>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
pub one_time_keys: BTreeMap<OwnedOneTimeKeyId, Raw<OneTimeKey>>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
pub fallback_keys: BTreeMap<OwnedOneTimeKeyId, Raw<OneTimeKey>>,
}
#[response(error = crate::Error)]
pub struct Response {
pub device_id: OwnedDeviceId,
}
impl Request {
pub fn new(
device_id: OwnedDeviceId,
device_data: Raw<DehydratedDeviceData>,
device_keys: Raw<DeviceKeys>,
) -> Self {
Self {
device_id,
device_data,
device_keys,
initial_device_display_name: None,
one_time_keys: Default::default(),
fallback_keys: Default::default(),
}
}
}
impl Response {
pub fn new(device_id: OwnedDeviceId) -> Self {
Self { device_id }
}
}
}