client-api: Add LoginInfo::ApplicationService
According to MSC2778
This commit is contained in:
parent
2047dbf420
commit
6866b2e5c2
@ -103,6 +103,9 @@ pub mod v3 {
|
|||||||
/// Token-based login.
|
/// Token-based login.
|
||||||
Token(Token<'a>),
|
Token(Token<'a>),
|
||||||
|
|
||||||
|
/// Application Service-specific login.
|
||||||
|
ApplicationService(ApplicationService<'a>),
|
||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
_Custom(CustomLoginInfo<'a>),
|
_Custom(CustomLoginInfo<'a>),
|
||||||
}
|
}
|
||||||
@ -124,6 +127,9 @@ pub mod v3 {
|
|||||||
Self::Password(serde_json::from_value(JsonValue::Object(data))?)
|
Self::Password(serde_json::from_value(JsonValue::Object(data))?)
|
||||||
}
|
}
|
||||||
"m.login.token" => Self::Token(serde_json::from_value(JsonValue::Object(data))?),
|
"m.login.token" => Self::Token(serde_json::from_value(JsonValue::Object(data))?),
|
||||||
|
"m.login.application_service" => {
|
||||||
|
Self::ApplicationService(serde_json::from_value(JsonValue::Object(data))?)
|
||||||
|
}
|
||||||
_ => Self::_Custom(IncomingCustomLoginInfo {
|
_ => Self::_Custom(IncomingCustomLoginInfo {
|
||||||
login_type: login_type.into(),
|
login_type: login_type.into(),
|
||||||
extra: data,
|
extra: data,
|
||||||
@ -136,6 +142,7 @@ pub mod v3 {
|
|||||||
match self {
|
match self {
|
||||||
Self::Password(a) => LoginInfo::Password(a.to_outgoing()),
|
Self::Password(a) => LoginInfo::Password(a.to_outgoing()),
|
||||||
Self::Token(a) => LoginInfo::Token(a.to_outgoing()),
|
Self::Token(a) => LoginInfo::Token(a.to_outgoing()),
|
||||||
|
Self::ApplicationService(a) => LoginInfo::ApplicationService(a.to_outgoing()),
|
||||||
Self::_Custom(a) => LoginInfo::_Custom(CustomLoginInfo {
|
Self::_Custom(a) => LoginInfo::_Custom(CustomLoginInfo {
|
||||||
login_type: &a.login_type,
|
login_type: &a.login_type,
|
||||||
extra: &a.extra,
|
extra: &a.extra,
|
||||||
@ -216,6 +223,29 @@ pub mod v3 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// An identifier to supply for Application Service authentication.
|
||||||
|
#[derive(Clone, Debug, Outgoing, Serialize)]
|
||||||
|
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||||
|
#[serde(tag = "type", rename = "m.login.application_service")]
|
||||||
|
pub struct ApplicationService<'a> {
|
||||||
|
/// Identification information for the user.
|
||||||
|
pub identifier: UserIdentifier<'a>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> ApplicationService<'a> {
|
||||||
|
/// Creates a new `ApplicationService` with the given identifier.
|
||||||
|
pub fn new(identifier: UserIdentifier<'a>) -> Self {
|
||||||
|
Self { identifier }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl IncomingApplicationService {
|
||||||
|
/// Convert `IncomingApplicationService` to `ApplicationService`.
|
||||||
|
fn to_outgoing(&self) -> ApplicationService<'_> {
|
||||||
|
ApplicationService { identifier: self.identifier.to_outgoing() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[derive(Clone, Debug, Serialize)]
|
#[derive(Clone, Debug, Serialize)]
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user