use rustical_dav::{extensions::CommonPropertiesProp, xml::HrefElement}; use rustical_xml::{EnumVariants, PropName, XmlDeserialize, XmlSerialize}; #[derive(XmlDeserialize, XmlSerialize, PartialEq, Clone)] pub struct AddressbookHomeSet(#[xml(ty = "untagged", flatten)] pub(super) Vec); #[derive(XmlDeserialize, XmlSerialize, PartialEq, Clone, EnumVariants, PropName)] #[xml(unit_variants_ident = "PrincipalPropName")] pub enum PrincipalProp { // WebDAV Access Control (RFC 3744) #[xml(rename = b"principal-URL")] #[xml(ns = "rustical_dav::namespace::NS_DAV")] PrincipalUrl(HrefElement), #[xml(ns = "rustical_dav::namespace::NS_DAV")] GroupMembership(GroupMembership), #[xml(ns = "rustical_dav::namespace::NS_DAV", rename = b"alternate-URI-set")] AlternateUriSet, // CardDAV (RFC 6352) #[xml(ns = "rustical_dav::namespace::NS_CARDDAV")] AddressbookHomeSet(AddressbookHomeSet), #[xml(ns = "rustical_dav::namespace::NS_CARDDAV")] PrincipalAddress(Option), } #[derive(XmlDeserialize, XmlSerialize, PartialEq, Clone, EnumVariants, PropName)] #[xml(unit_variants_ident = "PrincipalPropWrapperName", untagged)] pub enum PrincipalPropWrapper { Principal(PrincipalProp), Common(CommonPropertiesProp), } #[derive(XmlDeserialize, XmlSerialize, PartialEq, Clone)] pub struct GroupMembership(#[xml(ty = "untagged", flatten)] pub(super) Vec);