client-api: add support for appservice login
This commit is contained in:
parent
6c00e03c19
commit
c79f9a97e1
@ -71,6 +71,9 @@ pub mod v3 {
|
|||||||
/// SSO-based login.
|
/// SSO-based login.
|
||||||
Sso(SsoLoginType),
|
Sso(SsoLoginType),
|
||||||
|
|
||||||
|
/// Application Service login.
|
||||||
|
ApplicationService(ApplicationServiceLoginType),
|
||||||
|
|
||||||
/// Custom login type.
|
/// Custom login type.
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
_Custom(Box<CustomLoginType>),
|
_Custom(Box<CustomLoginType>),
|
||||||
@ -91,6 +94,7 @@ pub mod v3 {
|
|||||||
"m.login.password" => Self::Password(from_json_object(data)?),
|
"m.login.password" => Self::Password(from_json_object(data)?),
|
||||||
"m.login.token" => Self::Token(from_json_object(data)?),
|
"m.login.token" => Self::Token(from_json_object(data)?),
|
||||||
"m.login.sso" => Self::Sso(from_json_object(data)?),
|
"m.login.sso" => Self::Sso(from_json_object(data)?),
|
||||||
|
"m.login.application_service" => Self::ApplicationService(from_json_object(data)?),
|
||||||
_ => {
|
_ => {
|
||||||
Self::_Custom(Box::new(CustomLoginType { type_: login_type.to_owned(), data }))
|
Self::_Custom(Box::new(CustomLoginType { type_: login_type.to_owned(), data }))
|
||||||
}
|
}
|
||||||
@ -103,6 +107,7 @@ pub mod v3 {
|
|||||||
Self::Password(_) => "m.login.password",
|
Self::Password(_) => "m.login.password",
|
||||||
Self::Token(_) => "m.login.token",
|
Self::Token(_) => "m.login.token",
|
||||||
Self::Sso(_) => "m.login.sso",
|
Self::Sso(_) => "m.login.sso",
|
||||||
|
Self::ApplicationService(_) => "m.login.application_service",
|
||||||
Self::_Custom(c) => &c.type_,
|
Self::_Custom(c) => &c.type_,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -123,6 +128,7 @@ pub mod v3 {
|
|||||||
Self::Password(d) => Cow::Owned(serialize(d)),
|
Self::Password(d) => Cow::Owned(serialize(d)),
|
||||||
Self::Token(d) => Cow::Owned(serialize(d)),
|
Self::Token(d) => Cow::Owned(serialize(d)),
|
||||||
Self::Sso(d) => Cow::Owned(serialize(d)),
|
Self::Sso(d) => Cow::Owned(serialize(d)),
|
||||||
|
Self::ApplicationService(d) => Cow::Owned(serialize(d)),
|
||||||
Self::_Custom(c) => Cow::Borrowed(&c.data),
|
Self::_Custom(c) => Cow::Borrowed(&c.data),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -238,6 +244,19 @@ pub mod v3 {
|
|||||||
_Custom(PrivOwnedStr),
|
_Custom(PrivOwnedStr),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The payload for Application Service login.
|
||||||
|
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
|
||||||
|
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||||
|
#[serde(tag = "type", rename = "m.login.application_service")]
|
||||||
|
pub struct ApplicationServiceLoginType {}
|
||||||
|
|
||||||
|
impl ApplicationServiceLoginType {
|
||||||
|
/// Creates a new `ApplicationServiceLoginType`.
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A custom login payload.
|
/// A custom login payload.
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
@ -282,6 +301,9 @@ pub mod v3 {
|
|||||||
"m.login.password" => Self::Password(from_raw_json_value(&json)?),
|
"m.login.password" => Self::Password(from_raw_json_value(&json)?),
|
||||||
"m.login.token" => Self::Token(from_raw_json_value(&json)?),
|
"m.login.token" => Self::Token(from_raw_json_value(&json)?),
|
||||||
"m.login.sso" => Self::Sso(from_raw_json_value(&json)?),
|
"m.login.sso" => Self::Sso(from_raw_json_value(&json)?),
|
||||||
|
"m.login.application_service" => {
|
||||||
|
Self::ApplicationService(from_raw_json_value(&json)?)
|
||||||
|
}
|
||||||
_ => Self::_Custom(from_raw_json_value(&json)?),
|
_ => Self::_Custom(from_raw_json_value(&json)?),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -210,6 +210,9 @@ pub mod v3 {
|
|||||||
match login_type {
|
match login_type {
|
||||||
"m.login.password" => from_json_value(json).map(Self::Password),
|
"m.login.password" => from_json_value(json).map(Self::Password),
|
||||||
"m.login.token" => from_json_value(json).map(Self::Token),
|
"m.login.token" => from_json_value(json).map(Self::Token),
|
||||||
|
"m.login.application_service" => {
|
||||||
|
from_json_value(json).map(Self::ApplicationService)
|
||||||
|
}
|
||||||
_ => from_json_value(json).map(Self::_Custom),
|
_ => from_json_value(json).map(Self::_Custom),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user