save progress: Move from serde::Serialize to XmlSerialize

This commit is contained in:
Lennart
2024-12-28 12:47:33 +01:00
parent 759bb1f1be
commit c16a5214bc
16 changed files with 230 additions and 200 deletions

View File

@@ -1,25 +1,30 @@
use rustical_xml::XmlSerialize;
use serde::Serialize;
#[derive(Debug, Clone, Serialize, PartialEq)]
#[derive(Debug, Clone, XmlSerialize, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct SupportedCalendarComponent {
#[serde(rename = "@name")]
#[xml(ty = "attr")]
pub name: String,
}
#[derive(Debug, Clone, Serialize, PartialEq)]
#[derive(Debug, Clone, XmlSerialize, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct SupportedCalendarComponentSet {
#[serde(rename = "C:comp")]
#[xml(flatten)]
pub comp: Vec<SupportedCalendarComponent>,
}
#[derive(Debug, Clone, Serialize, PartialEq)]
#[derive(Debug, Clone, XmlSerialize, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct CalendarData {
#[serde(rename = "@content-type")]
#[xml(ty = "attr")]
content_type: String,
#[serde(rename = "@version")]
#[xml(ty = "attr")]
version: String,
}
@@ -32,14 +37,14 @@ impl Default for CalendarData {
}
}
#[derive(Debug, Clone, Serialize, Default, PartialEq)]
#[derive(Debug, Clone, XmlSerialize, Serialize, Default, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct SupportedCalendarData {
#[serde(rename = "C:calendar-data", alias = "calendar-data")]
calendar_data: CalendarData,
}
#[derive(Debug, Clone, Serialize, PartialEq)]
#[derive(Debug, Clone, XmlSerialize, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub enum ReportMethod {
CalendarQuery,
@@ -47,14 +52,15 @@ pub enum ReportMethod {
SyncCollection,
}
#[derive(Debug, Clone, Serialize, PartialEq)]
#[derive(Debug, Clone, XmlSerialize, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct ReportWrapper {
#[serde(rename = "$value")]
#[xml(ty = "untagged")]
report: ReportMethod,
}
#[derive(Debug, Clone, Serialize, PartialEq)]
#[derive(Debug, Clone, XmlSerialize, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct SupportedReportWrapper {
report: ReportWrapper,
@@ -69,9 +75,10 @@ impl From<ReportMethod> for SupportedReportWrapper {
}
// RFC 3253 section-3.1.5
#[derive(Debug, Clone, Serialize, PartialEq)]
#[derive(Debug, Clone, XmlSerialize, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct SupportedReportSet {
#[xml(flatten)]
supported_report: Vec<SupportedReportWrapper>,
}
@@ -87,27 +94,29 @@ impl Default for SupportedReportSet {
}
}
#[derive(Debug, Clone, Serialize, PartialEq)]
#[derive(Debug, Clone, XmlSerialize, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub enum Transport {
#[serde(rename = "P:web-push")]
WebPush,
}
#[derive(Debug, Clone, Serialize, PartialEq)]
#[derive(Debug, Clone, XmlSerialize, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct TransportWrapper {
#[serde(rename = "$value")]
#[xml(ty = "untagged")]
transport: Transport,
}
#[derive(Debug, Clone, Serialize, PartialEq)]
#[derive(Debug, Clone, XmlSerialize, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct Transports {
// NOTE: Here we implement an older version of the spec since the new property name is not reflected
// in DAVx5 yet
// https://github.com/bitfireAT/webdav-push/commit/461259a2f2174454b2b00033419b11fac52b79e3
#[serde(rename = "P:transport")]
#[xml(flatten)]
transports: Vec<TransportWrapper>,
}