DAV Push: Add supported-triggers

This commit is contained in:
Lennart
2025-05-02 20:43:58 +02:00
parent 630a4600c2
commit 6330021f05
5 changed files with 54 additions and 6 deletions

View File

@@ -1,4 +1,5 @@
use crate::Transports;
use crate::{ContentUpdate, PropertyUpdate, SupportedTrigger, SupportedTriggers, Transports};
use rustical_dav::header::Depth;
use rustical_xml::{EnumUnitVariants, EnumVariants, XmlDeserialize, XmlSerialize};
#[derive(XmlDeserialize, XmlSerialize, PartialEq, Clone, EnumUnitVariants, EnumVariants)]
@@ -10,11 +11,21 @@ pub enum DavPushExtensionProp {
Transports(Transports),
#[xml(ns = "rustical_dav::namespace::NS_DAVPUSH")]
Topic(String),
#[xml(skip_deserializing)]
#[xml(ns = "rustical_dav::namespace::NS_DAVPUSH")]
SupportedTriggers(SupportedTriggers),
}
pub trait DavPushExtension {
fn get_topic(&self) -> String;
fn supported_triggers(&self) -> SupportedTriggers {
SupportedTriggers(vec![
SupportedTrigger::ContentUpdate(ContentUpdate(Depth::One)),
SupportedTrigger::PropertyUpdate(PropertyUpdate(Depth::One)),
])
}
fn get_prop(
&self,
prop: &DavPushExtensionPropName,
@@ -24,6 +35,9 @@ pub trait DavPushExtension {
DavPushExtensionProp::Transports(Default::default())
}
DavPushExtensionPropName::Topic => DavPushExtensionProp::Topic(self.get_topic()),
DavPushExtensionPropName::SupportedTriggers => {
DavPushExtensionProp::SupportedTriggers(self.supported_triggers())
}
})
}