rustical_caldav/calendar_object/
prop.rs1use rustical_dav::extensions::CommonPropertiesProp;
2use rustical_ical::UtcDateTime;
3use rustical_xml::{EnumVariants, PropName, Unparsed, XmlDeserialize, XmlSerialize};
4
5#[derive(XmlDeserialize, XmlSerialize, PartialEq, Eq, Clone, EnumVariants, PropName)]
6#[xml(unit_variants_ident = "CalendarObjectPropName")]
7pub enum CalendarObjectProp {
8 #[xml(ns = "rustical_dav::namespace::NS_DAV")]
10 Getetag(String),
11 #[xml(ns = "rustical_dav::namespace::NS_DAV", skip_deserializing)]
12 Getcontenttype(&'static str),
13
14 #[xml(ns = "rustical_dav::namespace::NS_CALDAV")]
16 #[xml(prop = "CalendarData")]
17 CalendarData(String),
18}
19
20#[derive(XmlDeserialize, XmlSerialize, PartialEq, Eq, Clone, EnumVariants, PropName)]
21#[xml(unit_variants_ident = "CalendarObjectPropWrapperName", untagged)]
22pub enum CalendarObjectPropWrapper {
23 CalendarObject(CalendarObjectProp),
24 Common(CommonPropertiesProp),
25}
26
27#[derive(XmlDeserialize, Clone, Debug, PartialEq, Eq, Hash)]
28pub struct ExpandElement {
29 #[xml(ty = "attr")]
30 pub(crate) start: UtcDateTime,
31 #[xml(ty = "attr")]
32 pub(crate) end: UtcDateTime,
33}
34
35#[derive(XmlDeserialize, Clone, Debug, PartialEq, Default, Eq, Hash)]
36pub struct CalendarData {
37 #[xml(ns = "rustical_dav::namespace::NS_CALDAV")]
38 pub(crate) comp: Option<Unparsed>,
39 #[xml(ns = "rustical_dav::namespace::NS_CALDAV")]
40 pub(crate) prop: Option<Unparsed>,
41 #[xml(ns = "rustical_dav::namespace::NS_CALDAV")]
42 pub(crate) expand: Option<ExpandElement>,
43 #[xml(ns = "rustical_dav::namespace::NS_CALDAV")]
44 pub(crate) limit_recurrence_set: Option<()>,
45 #[xml(ns = "rustical_dav::namespace::NS_CALDAV")]
46 pub(crate) limit_freebusy_set: Option<()>,
47}