add some serde skip

This commit is contained in:
rustdesk 2023-06-11 13:33:38 +08:00
parent f72ed0d3e5
commit 1ededa3476

View File

@ -291,33 +291,74 @@ pub struct PeerInfoSerde {
#[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq)] #[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq)]
pub struct ConfigOidc { pub struct ConfigOidc {
#[serde(default, deserialize_with = "deserialize_usize")] #[serde(
default,
skip_serializing_if = "is_default",
deserialize_with = "deserialize_usize"
)]
pub max_auth_count: usize, pub max_auth_count: usize,
#[serde(default, deserialize_with = "deserialize_string")] #[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "deserialize_string"
)]
pub callback_url: String, pub callback_url: String,
#[serde( #[serde(
default, default,
skip_serializing_if = "HashMap::is_empty",
deserialize_with = "deserialize_hashmap_string_configoidcprovider" deserialize_with = "deserialize_hashmap_string_configoidcprovider"
)] )]
pub providers: HashMap<String, ConfigOidcProvider>, pub providers: HashMap<String, ConfigOidcProvider>,
} }
fn is_default<T: PartialEq + Default>(v: &T) -> bool {
*v == T::default()
}
#[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq)] #[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq)]
pub struct ConfigOidcProvider { pub struct ConfigOidcProvider {
// seconds. 0 means never expires // seconds. 0 means never expires
#[serde(default, deserialize_with = "deserialize_u32")] #[serde(
default,
skip_serializing_if = "is_default",
deserialize_with = "deserialize_u32"
)]
pub refresh_token_expires_in: u32, pub refresh_token_expires_in: u32,
#[serde(default, deserialize_with = "deserialize_string")] #[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "deserialize_string"
)]
pub client_id: String, pub client_id: String,
#[serde(default, deserialize_with = "deserialize_string")] #[serde(
default,
skip_serializing_if = "String::is_empty",
deserialize_with = "deserialize_string"
)]
pub client_secret: String, pub client_secret: String,
#[serde(default, deserialize_with = "deserialize_option_string")] #[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "deserialize_option_string"
)]
pub issuer: Option<String>, pub issuer: Option<String>,
#[serde(default, deserialize_with = "deserialize_option_string")] #[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "deserialize_option_string"
)]
pub authorization_endpoint: Option<String>, pub authorization_endpoint: Option<String>,
#[serde(default, deserialize_with = "deserialize_option_string")] #[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "deserialize_option_string"
)]
pub token_endpoint: Option<String>, pub token_endpoint: Option<String>,
#[serde(default, deserialize_with = "deserialize_option_string")] #[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "deserialize_option_string"
)]
pub userinfo_endpoint: Option<String>, pub userinfo_endpoint: Option<String>,
} }