matrix_sdk/widget/machine/
openid.rsuse std::time::Duration;
use ruma::{
api::client::account::request_openid_token, authentication::TokenType, OwnedServerName,
};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Serialize)]
pub(crate) struct OpenIdState {
pub(crate) original_request_id: String,
pub(crate) access_token: String,
#[serde(with = "ruma::serde::duration::secs")]
pub(crate) expires_in: Duration,
pub(crate) matrix_server_name: OwnedServerName,
pub(crate) token_type: TokenType,
}
impl OpenIdState {
pub(crate) fn new(id: String, ruma: request_openid_token::v3::Response) -> Self {
Self {
original_request_id: id,
access_token: ruma.access_token,
expires_in: ruma.expires_in,
matrix_server_name: ruma.matrix_server_name,
token_type: ruma.token_type,
}
}
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "lowercase")]
#[serde(tag = "state")]
pub(crate) enum OpenIdResponse {
Allowed(OpenIdState),
Blocked {
original_request_id: String,
},
#[serde(rename = "request")]
Pending,
}