resourcetype: Use tuple struct

This commit is contained in:
Lennart
2025-01-05 16:44:31 +01:00
parent 82f52cc0ab
commit 2eb6b1934d
8 changed files with 67 additions and 84 deletions

View File

@@ -99,31 +99,27 @@ impl Resource for CalendarResource {
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
if self.0.subscription_url.is_none() { if self.0.subscription_url.is_none() {
Resourcetype { Resourcetype(&[
inner: &[ ResourcetypeInner {
ResourcetypeInner { ns: rustical_dav::namespace::NS_DAV,
ns: rustical_dav::namespace::NS_DAV, name: "collection",
name: "collection", },
}, ResourcetypeInner {
ResourcetypeInner { ns: rustical_dav::namespace::NS_CALDAV,
ns: rustical_dav::namespace::NS_CALDAV, name: "calendar",
name: "calendar", },
}, ])
],
}
} else { } else {
Resourcetype { Resourcetype(&[
inner: &[ ResourcetypeInner {
ResourcetypeInner { ns: rustical_dav::namespace::NS_DAV,
ns: rustical_dav::namespace::NS_DAV, name: "collection",
name: "collection", },
}, ResourcetypeInner {
ResourcetypeInner { ns: rustical_dav::namespace::NS_CALENDARSERVER,
ns: rustical_dav::namespace::NS_CALENDARSERVER, name: "subscribed",
name: "subscribed", },
}, ])
],
}
} }
} }

View File

@@ -55,7 +55,7 @@ impl Resource for CalendarObjectResource {
type PrincipalResource = PrincipalResource; type PrincipalResource = PrincipalResource;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { inner: &[] } Resourcetype(&[])
} }
fn get_prop( fn get_prop(

View File

@@ -58,18 +58,16 @@ impl Resource for PrincipalResource {
type PrincipalResource = PrincipalResource; type PrincipalResource = PrincipalResource;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { Resourcetype(&[
inner: &[ ResourcetypeInner {
ResourcetypeInner { ns: rustical_dav::namespace::NS_DAV,
ns: rustical_dav::namespace::NS_DAV, name: "collection",
name: "collection", },
}, ResourcetypeInner {
ResourcetypeInner { ns: rustical_dav::namespace::NS_DAV,
ns: rustical_dav::namespace::NS_DAV, name: "principal",
name: "principal", },
}, ])
],
}
} }
fn get_prop( fn get_prop(

View File

@@ -56,7 +56,7 @@ impl Resource for AddressObjectResource {
type PrincipalResource = PrincipalResource; type PrincipalResource = PrincipalResource;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { inner: &[] } Resourcetype(&[])
} }
fn get_prop( fn get_prop(

View File

@@ -71,18 +71,16 @@ impl Resource for AddressbookResource {
type PrincipalResource = PrincipalResource; type PrincipalResource = PrincipalResource;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { Resourcetype(&[
inner: &[ ResourcetypeInner {
ResourcetypeInner { ns: rustical_dav::namespace::NS_DAV,
ns: rustical_dav::namespace::NS_DAV, name: "collection",
name: "collection", },
}, ResourcetypeInner {
ResourcetypeInner { ns: rustical_dav::namespace::NS_CARDDAV,
ns: rustical_dav::namespace::NS_CARDDAV, name: "addressbook",
name: "addressbook", },
}, ])
],
}
} }
fn get_prop( fn get_prop(

View File

@@ -59,18 +59,16 @@ impl Resource for PrincipalResource {
type PrincipalResource = PrincipalResource; type PrincipalResource = PrincipalResource;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { Resourcetype(&[
inner: &[ ResourcetypeInner {
ResourcetypeInner { ns: rustical_dav::namespace::NS_DAV,
ns: rustical_dav::namespace::NS_DAV, name: "collection",
name: "collection", },
}, ResourcetypeInner {
ResourcetypeInner { ns: rustical_dav::namespace::NS_DAV,
ns: rustical_dav::namespace::NS_DAV, name: "principal",
name: "principal", },
}, ])
],
}
} }
fn get_prop( fn get_prop(

View File

@@ -39,12 +39,10 @@ impl<PR: Resource> Resource for RootResource<PR> {
type PrincipalResource = PR; type PrincipalResource = PR;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { Resourcetype(&[ResourcetypeInner {
inner: &[ResourcetypeInner { ns: crate::namespace::NS_DAV,
ns: crate::namespace::NS_DAV, name: "collection",
name: "collection", }])
}],
}
} }
fn get_prop( fn get_prop(

View File

@@ -1,10 +1,7 @@
use rustical_xml::XmlSerialize; use rustical_xml::XmlSerialize;
#[derive(Debug, Clone, PartialEq, XmlSerialize)] #[derive(Debug, Clone, PartialEq, XmlSerialize)]
pub struct Resourcetype { pub struct Resourcetype(#[xml(flatten, ty = "untagged")] pub &'static [ResourcetypeInner]);
#[xml(flatten, ty = "untagged")]
pub inner: &'static [ResourcetypeInner],
}
#[derive(Debug, Clone, PartialEq, XmlSerialize)] #[derive(Debug, Clone, PartialEq, XmlSerialize)]
pub struct ResourcetypeInner { pub struct ResourcetypeInner {
@@ -31,18 +28,16 @@ mod tests {
let mut buf = Vec::new(); let mut buf = Vec::new();
let mut writer = quick_xml::Writer::new(&mut buf); let mut writer = quick_xml::Writer::new(&mut buf);
Document { Document {
resourcetype: Resourcetype { resourcetype: Resourcetype(&[
inner: &[ ResourcetypeInner {
ResourcetypeInner { ns: crate::namespace::NS_DAV,
ns: crate::namespace::NS_DAV, name: "displayname",
name: "displayname", },
}, ResourcetypeInner {
ResourcetypeInner { ns: crate::namespace::NS_CALENDARSERVER,
ns: crate::namespace::NS_CALENDARSERVER, name: "calendar-color",
name: "calendar-color", },
}, ]),
],
},
} }
.serialize_root(&mut writer) .serialize_root(&mut writer)
.unwrap(); .unwrap();