diff --git a/crates/caldav/src/calendar/resource.rs b/crates/caldav/src/calendar/resource.rs index 7ba2e4c..96ae53e 100644 --- a/crates/caldav/src/calendar/resource.rs +++ b/crates/caldav/src/calendar/resource.rs @@ -97,7 +97,9 @@ impl Resource for CalendarResource { type Error = Error; type Principal = User; - const IS_COLLECTION: bool = true; + fn is_collection(&self) -> bool { + true + } fn get_resourcetype(&self) -> Resourcetype { if self.cal.subscription_url.is_none() { diff --git a/crates/caldav/src/calendar_object/resource.rs b/crates/caldav/src/calendar_object/resource.rs index dc46936..1e83d25 100644 --- a/crates/caldav/src/calendar_object/resource.rs +++ b/crates/caldav/src/calendar_object/resource.rs @@ -27,7 +27,9 @@ impl Resource for CalendarObjectResource { type Error = Error; type Principal = User; - const IS_COLLECTION: bool = false; + fn is_collection(&self) -> bool { + false + } fn get_resourcetype(&self) -> Resourcetype { Resourcetype(&[]) diff --git a/crates/caldav/src/principal/mod.rs b/crates/caldav/src/principal/mod.rs index 3bae264..e92c4f0 100644 --- a/crates/caldav/src/principal/mod.rs +++ b/crates/caldav/src/principal/mod.rs @@ -29,7 +29,9 @@ impl Resource for PrincipalResource { type Error = Error; type Principal = User; - const IS_COLLECTION: bool = true; + fn is_collection(&self) -> bool { + true + } fn get_resourcetype(&self) -> Resourcetype { Resourcetype(&[ diff --git a/crates/carddav/src/address_object/resource.rs b/crates/carddav/src/address_object/resource.rs index 46c53ac..783c4e3 100644 --- a/crates/carddav/src/address_object/resource.rs +++ b/crates/carddav/src/address_object/resource.rs @@ -32,7 +32,9 @@ impl Resource for AddressObjectResource { type Error = Error; type Principal = User; - const IS_COLLECTION: bool = false; + fn is_collection(&self) -> bool { + false + } fn get_resourcetype(&self) -> Resourcetype { Resourcetype(&[]) diff --git a/crates/carddav/src/addressbook/resource.rs b/crates/carddav/src/addressbook/resource.rs index c6c13d7..752bddd 100644 --- a/crates/carddav/src/addressbook/resource.rs +++ b/crates/carddav/src/addressbook/resource.rs @@ -38,7 +38,9 @@ impl Resource for AddressbookResource { type Error = Error; type Principal = User; - const IS_COLLECTION: bool = true; + fn is_collection(&self) -> bool { + true + } fn get_resourcetype(&self) -> Resourcetype { Resourcetype(&[ diff --git a/crates/carddav/src/principal/mod.rs b/crates/carddav/src/principal/mod.rs index 0e8ec58..27c3955 100644 --- a/crates/carddav/src/principal/mod.rs +++ b/crates/carddav/src/principal/mod.rs @@ -29,7 +29,9 @@ impl Resource for PrincipalResource { type Error = Error; type Principal = User; - const IS_COLLECTION: bool = true; + fn is_collection(&self) -> bool { + true + } fn get_resourcetype(&self) -> Resourcetype { Resourcetype(&[ diff --git a/crates/dav/src/resource/mod.rs b/crates/dav/src/resource/mod.rs index 06f130c..4361459 100644 --- a/crates/dav/src/resource/mod.rs +++ b/crates/dav/src/resource/mod.rs @@ -37,7 +37,7 @@ pub trait Resource: Clone + Send + 'static { type Error: From; type Principal: Principal; - const IS_COLLECTION: bool; + fn is_collection(&self) -> bool; fn get_resourcetype(&self) -> Resourcetype; @@ -111,7 +111,7 @@ pub trait Resource: Clone + Send + 'static { ) -> Result, Self::Error> { // Collections have a trailing slash let mut path = path.to_string(); - if Self::IS_COLLECTION && !path.ends_with('/') { + if self.is_collection() && !path.ends_with('/') { path.push('/'); } diff --git a/crates/dav/src/resources/root.rs b/crates/dav/src/resources/root.rs index 9c27858..40b8aa8 100644 --- a/crates/dav/src/resources/root.rs +++ b/crates/dav/src/resources/root.rs @@ -24,7 +24,9 @@ impl Resource for RootResource { type Error = PR::Error; type Principal = P; - const IS_COLLECTION: bool = true; + fn is_collection(&self) -> bool { + true + } fn get_resourcetype(&self) -> Resourcetype { Resourcetype(&[ResourcetypeInner(