pub mod data;
pub mod threepid;
use palpo_macros::StringEnum;
use salvo::prelude::ToSchema;
use serde::{Deserialize, Serialize};
use crate::client::uiaa::AuthData;
use crate::{OwnedClientSecret, OwnedDeviceId, OwnedSessionId, OwnedUserId, PrivOwnedStr};
#[derive(ToSchema, Deserialize, Serialize, Clone, Debug)]
pub struct IdentityServerInfo {
pub id_server: String,
pub id_access_token: String,
}
impl IdentityServerInfo {
pub fn new(id_server: String, id_access_token: String) -> Self {
Self {
id_server,
id_access_token,
}
}
}
#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
#[derive(ToSchema, Clone, StringEnum)]
#[palpo_enum(rename_all = "kebab-case")]
#[non_exhaustive]
pub enum ThirdPartyIdRemovalStatus {
NoSupport,
Success,
#[doc(hidden)]
#[salvo(schema(value_type = String))]
_Custom(PrivOwnedStr),
}
#[derive(ToSchema, Clone, Debug, Default, PartialEq, Eq, Deserialize, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum RegistrationKind {
Guest,
#[default]
User,
}
#[derive(ToSchema, Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
pub enum LoginType {
#[serde(rename = "m.login.application_service")]
Appservice,
}
#[derive(ToSchema, Serialize, Debug)]
pub struct WhoamiResBody {
pub user_id: OwnedUserId,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub device_id: Option<OwnedDeviceId>,
#[serde(default, skip_serializing_if = "palpo_core::serde::is_default")]
pub is_guest: bool,
}
impl WhoamiResBody {
pub fn new(user_id: OwnedUserId, is_guest: bool) -> Self {
Self {
user_id,
device_id: None,
is_guest,
}
}
}
#[derive(ToSchema, Deserialize, Debug)]
pub struct DeactivateReqBody {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub auth: Option<AuthData>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id_server: Option<String>,
#[serde(default, skip_serializing_if = "crate::serde::is_default")]
pub erase: bool,
}
#[derive(ToSchema, Serialize, Debug)]
pub struct DeactivateResBody {
pub id_server_unbind_result: ThirdPartyIdRemovalStatus,
}
impl DeactivateResBody {
pub fn new(id_server_unbind_result: ThirdPartyIdRemovalStatus) -> Self {
Self {
id_server_unbind_result,
}
}
}
#[derive(ToSchema, Deserialize, Debug)]
pub struct ChangePasswordReqBody {
pub new_password: String,
#[serde(
default = "crate::serde::default_true",
skip_serializing_if = "crate::serde::is_true"
)]
pub logout_devices: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub auth: Option<AuthData>,
}
#[derive(ToSchema, Deserialize, Debug)]
pub struct TokenViaEmailReqBody {
pub client_secret: OwnedClientSecret,
pub email: String,
pub send_attempt: u64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
#[derive(ToSchema, Serialize, Debug)]
pub struct TokenViaEmailResBody {
pub sid: OwnedSessionId,
#[serde(
skip_serializing_if = "Option::is_none",
default,
deserialize_with = "crate::serde::empty_string_as_none"
)]
pub submit_url: Option<String>,
}
#[derive(ToSchema, Deserialize, Debug)]
pub struct TokenViaMsisdnReqBody {
pub client_secret: OwnedClientSecret,
pub country: String,
pub phone_number: String,
pub send_attempt: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
#[derive(ToSchema, Serialize, Debug)]
pub struct TokenViaMsisdnResBody {
pub sid: OwnedSessionId,
#[serde(
skip_serializing_if = "Option::is_none",
default,
deserialize_with = "crate::serde::empty_string_as_none"
)]
pub submit_url: Option<String>,
}