From 63f4975d5a3cbc841439f698a7cea85660fcb78e Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Tue, 18 Jul 2023 19:05:51 +0200 Subject: [PATCH] Fix deserialization of FlatDomainSettings boolean flags --- src/service/util.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/service/util.rs b/src/service/util.rs index 7912f44..13fdd77 100644 --- a/src/service/util.rs +++ b/src/service/util.rs @@ -1,9 +1,22 @@ use std::convert::TryFrom; -use serde::{Deserialize, Serialize}; +use serde::{de, Deserialize, Serialize}; use crate::{domain, error::unexpected, origin}; +fn deserialize_bool<'de, D>(deserializer: D) -> Result +where + D: de::Deserializer<'de>, +{ + let s: &str = de::Deserialize::deserialize(deserializer)?; + + match s { + "true" => Ok(true), + "false" => Ok(false), + _ => Err(de::Error::unknown_variant(s, &["true", "false"])), + } +} + #[derive(Serialize, Deserialize, Default)] pub struct FlatDomainSettings { domain_setting_origin_descr_kind: String, @@ -14,8 +27,11 @@ pub struct FlatDomainSettings { domain_setting_origin_descr_proxy_url: Option, #[serde(default)] + #[serde(deserialize_with = "deserialize_bool")] domain_setting_serve_protocol_http: bool, + #[serde(default)] + #[serde(deserialize_with = "deserialize_bool")] domain_setting_serve_protocol_https: bool, }