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

@@ -7,6 +7,7 @@ use rustical_dav::{
resource::{Resource, ResourceService},
};
use rustical_store::{auth::User, AddressObject, AddressbookStore};
use rustical_xml::XmlDeserialize;
use serde::{Deserialize, Serialize};
use std::sync::Arc;
use strum::{EnumDiscriminants, EnumString, VariantNames};
@@ -20,7 +21,7 @@ pub struct AddressObjectResourceService<AS: AddressbookStore + ?Sized> {
object_id: String,
}
#[derive(Default, Deserialize, Serialize, PartialEq, EnumDiscriminants)]
#[derive(Default, XmlDeserialize, Serialize, PartialEq, EnumDiscriminants)]
#[strum_discriminants(
name(AddressObjectPropName),
derive(EnumString, VariantNames),
@@ -37,6 +38,7 @@ pub enum AddressObjectProp {
AddressData(String),
#[serde(other)]
#[xml(other)]
#[strum_discriminants(strum(disabled))]
#[default]
Invalid,

View File

@@ -14,7 +14,8 @@ use rustical_dav::privileges::UserPrivilegeSet;
use rustical_dav::resource::{Resource, ResourceService};
use rustical_store::auth::User;
use rustical_store::{Addressbook, AddressbookStore};
use serde::{Deserialize, Serialize};
use rustical_xml::XmlDeserialize;
use serde::Serialize;
use std::str::FromStr;
use std::sync::Arc;
use strum::{EnumDiscriminants, EnumString, VariantNames};
@@ -25,7 +26,7 @@ pub struct AddressbookResourceService<AS: AddressbookStore + ?Sized> {
addressbook_id: String,
}
#[derive(Default, Deserialize, Serialize, PartialEq, EnumDiscriminants)]
#[derive(Default, XmlDeserialize, Serialize, PartialEq, EnumDiscriminants)]
#[serde(rename_all = "kebab-case")]
#[strum_discriminants(
name(AddressbookPropName),
@@ -48,8 +49,10 @@ pub enum AddressbookProp {
alias = "supported-address-data"
)]
#[serde(skip_deserializing)]
#[xml(skip_deserializing)]
SupportedAddressData(SupportedAddressData),
#[serde(skip_deserializing)]
#[xml(skip_deserializing)]
SupportedReportSet(SupportedReportSet),
MaxResourceSize(i64),
@@ -60,6 +63,7 @@ pub enum AddressbookProp {
Getctag(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::AddressbookStore;
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 {
PrincipalAddress(Option<HrefElement>),
#[serde(other)]
#[xml(other)]
#[strum_discriminants(strum(disabled))]
#[default]
Invalid,