Migrate all deserialization business to rustical_xml

This commit is contained in:
Lennart
2024-12-25 10:21:36 +01:00
parent 5e2717e130
commit 80472289dc
15 changed files with 99 additions and 121 deletions

View File

@@ -1,20 +1,20 @@
use serde::{Deserialize, Serialize};
use serde::Serialize;
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
#[derive(Debug, Clone, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct SupportedCalendarComponent {
#[serde(rename = "@name")]
pub name: String,
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
#[derive(Debug, Clone, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct SupportedCalendarComponentSet {
#[serde(rename = "C:comp")]
pub comp: Vec<SupportedCalendarComponent>,
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
#[derive(Debug, Clone, Serialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
pub struct CalendarData {
#[serde(rename = "@content-type")]

View File

@@ -19,7 +19,8 @@ use rustical_dav::resource::{Resource, ResourceService};
use rustical_dav::xml::HrefElement;
use rustical_store::auth::User;
use rustical_store::{Calendar, CalendarStore};
use serde::{Deserialize, Serialize};
use rustical_xml::XmlDeserialize;
use serde::Serialize;
use sha2::{Digest, Sha256};
use std::str::FromStr;
use std::sync::Arc;
@@ -31,7 +32,7 @@ pub struct CalendarResourceService<C: CalendarStore + ?Sized> {
calendar_id: String,
}
#[derive(Default, Deserialize, Serialize, PartialEq, EnumDiscriminants)]
#[derive(Default, XmlDeserialize, Serialize, PartialEq, EnumDiscriminants)]
#[strum_discriminants(
name(CalendarPropName),
derive(EnumString, VariantNames),
@@ -48,6 +49,7 @@ pub enum CalendarProp {
// in DAVx5 yet
// https://github.com/bitfireAT/webdav-push/commit/461259a2f2174454b2b00033419b11fac52b79e3
#[serde(skip_deserializing)]
#[xml(skip_deserializing)]
#[serde(rename = "P:push-transports", alias = "push-transports")]
Transports(Transports),
Topic(String),
@@ -65,15 +67,19 @@ pub enum CalendarProp {
rename = "C:supported-calendar-component-set",
alias = "supported-calendar-component-set"
)]
// TODO: Re-add
#[xml(skip_deserializing)]
SupportedCalendarComponentSet(SupportedCalendarComponentSet),
#[serde(
rename = "C:supported-calendar-data",
alias = "supported-calendar-data"
)]
#[serde(skip_deserializing)]
#[xml(skip_deserializing)]
SupportedCalendarData(SupportedCalendarData),
MaxResourceSize(i64),
#[serde(skip_deserializing)]
#[xml(skip_deserializing)]
SupportedReportSet(SupportedReportSet),
// Collection Synchronization (RFC 6578)

View File

@@ -8,6 +8,7 @@ use rustical_dav::{
resource::{Resource, ResourceService},
};
use rustical_store::{auth::User, CalendarObject, CalendarStore};
use rustical_xml::XmlDeserialize;
use serde::{Deserialize, Serialize};
use std::sync::Arc;
use strum::{EnumDiscriminants, EnumString, VariantNames};
@@ -19,7 +20,7 @@ pub struct CalendarObjectResourceService<C: CalendarStore + ?Sized> {
object_id: String,
}
#[derive(Default, Deserialize, Serialize, PartialEq, EnumDiscriminants)]
#[derive(Default, XmlDeserialize, Serialize, PartialEq, EnumDiscriminants)]
#[strum_discriminants(
name(CalendarObjectPropName),
derive(EnumString, VariantNames),
@@ -36,6 +37,7 @@ pub enum CalendarObjectProp {
CalendarData(String),
#[serde(other)]
#[xml(other)]
#[strum_discriminants(strum(disabled))]
#[default]
Invalid,

View File

@@ -9,7 +9,8 @@ use rustical_dav::resource::{Resource, ResourceService};
use rustical_dav::xml::HrefElement;
use rustical_store::auth::User;
use rustical_store::CalendarStore;
use serde::{Deserialize, Serialize};
use rustical_xml::XmlDeserialize;
use serde::Serialize;
use std::sync::Arc;
use strum::{EnumDiscriminants, EnumString, VariantNames};
@@ -23,7 +24,7 @@ pub struct PrincipalResource {
principal: String,
}
#[derive(Default, Deserialize, Serialize, PartialEq, EnumDiscriminants)]
#[derive(Default, XmlDeserialize, Serialize, PartialEq, EnumDiscriminants)]
#[strum_discriminants(
name(PrincipalPropName),
derive(EnumString, VariantNames),
@@ -43,6 +44,7 @@ pub enum PrincipalProp {
CalendarUserAddressSet(HrefElement),
#[serde(other)]
#[xml(other)]
#[strum_discriminants(strum(disabled))]
#[default]
Invalid,