use rustical_xml::{ValueDeserialize, ValueSerialize, XmlDeserialize}; use super::PropfindType; #[derive(Clone, Debug, PartialEq)] pub enum SyncLevel { One, Infinity, } impl ValueDeserialize for SyncLevel { fn deserialize(val: &str) -> Result { Ok(match val { "1" => Self::One, "Infinity" => Self::Infinity, _ => { return Err(rustical_xml::XmlError::InvalidValue( rustical_xml::ParseValueError::Other("Invalid sync-level".to_owned()), )); } }) } } impl ValueSerialize for SyncLevel { fn serialize(&self) -> String { match self { SyncLevel::One => "1", SyncLevel::Infinity => "Infinity", } .to_owned() } } #[derive(XmlDeserialize, Clone, Debug, PartialEq)] // // // #[xml(ns = "crate::namespace::NS_DAV")] pub struct SyncCollectionRequest { #[xml(ns = "crate::namespace::NS_DAV")] pub sync_token: String, #[xml(ns = "crate::namespace::NS_DAV")] pub sync_level: SyncLevel, #[xml(ns = "crate::namespace::NS_DAV", ty = "untagged")] pub prop: PropfindType, #[xml(ns = "crate::namespace::NS_DAV")] pub limit: Option, }