rustical_dav/extensions/
synctoken.rs1use rustical_xml::{EnumUnitVariants, EnumVariants, XmlDeserialize, XmlSerialize};
2
3#[derive(XmlDeserialize, XmlSerialize, PartialEq, Clone, EnumUnitVariants, EnumVariants)]
4#[xml(unit_variants_ident = "SyncTokenExtensionPropName")]
5pub enum SyncTokenExtensionProp {
6 #[xml(ns = "crate::namespace::NS_DAV")]
8 SyncToken(String),
9
10 #[xml(ns = "crate::namespace::NS_CALENDARSERVER")]
12 Getctag(String),
13}
14
15pub trait SyncTokenExtension {
16 fn get_synctoken(&self) -> String;
17
18 fn get_prop(
19 &self,
20 prop: &SyncTokenExtensionPropName,
21 ) -> Result<SyncTokenExtensionProp, crate::Error> {
22 Ok(match &prop {
23 SyncTokenExtensionPropName::SyncToken => {
24 SyncTokenExtensionProp::SyncToken(self.get_synctoken())
25 }
26 SyncTokenExtensionPropName::Getctag => {
27 SyncTokenExtensionProp::Getctag(self.get_synctoken())
28 }
29 })
30 }
31
32 fn set_prop(&self, _prop: SyncTokenExtensionProp) -> Result<(), crate::Error> {
33 Err(crate::Error::PropReadOnly)
34 }
35
36 fn remove_prop(&self, _prop: &SyncTokenExtensionPropName) -> Result<(), crate::Error> {
37 Err(crate::Error::PropReadOnly)
38 }
39}