minor refactoring

This commit is contained in:
Lennart
2024-07-28 21:03:02 +02:00
parent 6ac2948617
commit f497698589
6 changed files with 22 additions and 31 deletions

View File

@@ -5,7 +5,6 @@ use crate::{
use actix_web::HttpRequest; use actix_web::HttpRequest;
use rustical_dav::{ use rustical_dav::{
methods::propfind::{PropElement, PropfindType}, methods::propfind::{PropElement, PropfindType},
namespace::Namespace,
resource::HandlePropfind, resource::HandlePropfind,
xml::{multistatus::PropstatWrapper, MultistatusElement}, xml::{multistatus::PropstatWrapper, MultistatusElement},
}; };
@@ -67,9 +66,6 @@ pub async fn handle_calendar_multiget<C: CalendarStore + ?Sized>(
Ok(MultistatusElement { Ok(MultistatusElement {
responses, responses,
member_responses: vec![], ..Default::default()
ns_dav: Namespace::Dav.as_str(),
ns_caldav: Namespace::CalDAV.as_str(),
ns_ical: Namespace::ICal.as_str(),
}) })
} }

View File

@@ -1,7 +1,6 @@
use actix_web::HttpRequest; use actix_web::HttpRequest;
use rustical_dav::{ use rustical_dav::{
methods::propfind::{PropElement, PropfindType}, methods::propfind::{PropElement, PropfindType},
namespace::Namespace,
resource::HandlePropfind, resource::HandlePropfind,
xml::{multistatus::PropstatWrapper, MultistatusElement}, xml::{multistatus::PropstatWrapper, MultistatusElement},
}; };
@@ -135,9 +134,6 @@ pub async fn handle_calendar_query<C: CalendarStore + ?Sized>(
Ok(MultistatusElement { Ok(MultistatusElement {
responses, responses,
member_responses: vec![], ..Default::default()
ns_dav: Namespace::Dav.as_str(),
ns_caldav: Namespace::CalDAV.as_str(),
ns_ical: Namespace::ICal.as_str(),
}) })
} }

View File

@@ -1,7 +1,6 @@
use actix_web::HttpRequest; use actix_web::HttpRequest;
use rustical_dav::{ use rustical_dav::{
methods::propfind::{PropElement, PropfindType}, methods::propfind::{PropElement, PropfindType},
namespace::Namespace,
resource::HandlePropfind, resource::HandlePropfind,
xml::{multistatus::PropstatWrapper, MultistatusElement}, xml::{multistatus::PropstatWrapper, MultistatusElement},
}; };
@@ -81,9 +80,6 @@ pub async fn handle_sync_collection<C: CalendarStore + ?Sized>(
Ok(MultistatusElement { Ok(MultistatusElement {
responses, responses,
member_responses: vec![], ..Default::default()
ns_dav: Namespace::Dav.as_str(),
ns_caldav: Namespace::CalDAV.as_str(),
ns_ical: Namespace::ICal.as_str(),
}) })
} }

View File

@@ -1,13 +1,13 @@
use crate::depth_extractor::Depth; use crate::depth_extractor::Depth;
use crate::namespace::Namespace;
use crate::resource::HandlePropfind; use crate::resource::HandlePropfind;
use crate::resource::Resource;
use crate::resource::ResourceService; use crate::resource::ResourceService;
use crate::xml::multistatus::PropstatWrapper;
use crate::xml::MultistatusElement; use crate::xml::MultistatusElement;
use crate::xml::TagList; use crate::xml::TagList;
use crate::Error; use crate::Error;
use actix_web::web::{Data, Path}; use actix_web::web::{Data, Path};
use actix_web::HttpRequest; use actix_web::HttpRequest;
use actix_web::Responder;
use log::debug; use log::debug;
use rustical_auth::{AuthInfoExtractor, CheckAuthentication}; use rustical_auth::{AuthInfoExtractor, CheckAuthentication};
use serde::Deserialize; use serde::Deserialize;
@@ -44,7 +44,7 @@ pub async fn route_propfind<A: CheckAuthentication, R: ResourceService + ?Sized>
prefix: Data<ServicePrefix>, prefix: Data<ServicePrefix>,
auth: AuthInfoExtractor<A>, auth: AuthInfoExtractor<A>,
depth: Depth, depth: Depth,
) -> Result<impl Responder, R::Error> { ) -> Result<MultistatusElement<PropstatWrapper<<R::File as Resource>::Prop>, String>, R::Error> {
debug!("{body}"); debug!("{body}");
let auth_info = auth.inner; let auth_info = auth.inner;
let prefix = prefix.0.to_owned(); let prefix = prefix.0.to_owned();
@@ -86,9 +86,6 @@ pub async fn route_propfind<A: CheckAuthentication, R: ResourceService + ?Sized>
Ok(MultistatusElement { Ok(MultistatusElement {
responses: vec![response], responses: vec![response],
member_responses, ..Default::default()
ns_dav: Namespace::Dav.as_str(),
ns_caldav: Namespace::CalDAV.as_str(),
ns_ical: Namespace::ICal.as_str(),
}) })
} }

View File

@@ -1,6 +1,3 @@
use std::str::FromStr;
use crate::namespace::Namespace;
use crate::resource::InvalidProperty; use crate::resource::InvalidProperty;
use crate::resource::Resource; use crate::resource::Resource;
use crate::resource::ResourceService; use crate::resource::ResourceService;
@@ -14,6 +11,7 @@ use actix_web::{web::Path, HttpRequest};
use log::debug; use log::debug;
use rustical_auth::{AuthInfoExtractor, CheckAuthentication}; use rustical_auth::{AuthInfoExtractor, CheckAuthentication};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::str::FromStr;
// https://docs.rs/quick-xml/latest/quick_xml/de/index.html#normal-enum-variant // https://docs.rs/quick-xml/latest/quick_xml/de/index.html#normal-enum-variant
#[derive(Deserialize, Serialize, Clone, Debug)] #[derive(Deserialize, Serialize, Clone, Debug)]
@@ -154,10 +152,6 @@ pub async fn route_proppatch<A: CheckAuthentication, R: ResourceService + ?Sized
}), }),
], ],
}], }],
// Dummy just for typing ..Default::default()
member_responses: vec![],
ns_dav: Namespace::Dav.as_str(),
ns_caldav: Namespace::CalDAV.as_str(),
ns_ical: Namespace::ICal.as_str(),
}) })
} }

View File

@@ -1,4 +1,4 @@
use crate::xml::TagList; use crate::{namespace::Namespace, xml::TagList};
use actix_web::{ use actix_web::{
body::BoxBody, http::header::ContentType, HttpRequest, HttpResponse, Responder, ResponseError, body::BoxBody, http::header::ContentType, HttpRequest, HttpResponse, Responder, ResponseError,
}; };
@@ -56,6 +56,18 @@ pub struct MultistatusElement<T1: Serialize, T2: Serialize> {
pub ns_ical: &'static str, pub ns_ical: &'static str,
} }
impl<T1: Serialize, T2: Serialize> Default for MultistatusElement<T1, T2> {
fn default() -> Self {
Self {
responses: vec![],
member_responses: vec![],
ns_dav: Namespace::Dav.as_str(),
ns_caldav: Namespace::CalDAV.as_str(),
ns_ical: Namespace::ICal.as_str(),
}
}
}
impl<T1: Serialize, T2: Serialize> Responder for MultistatusElement<T1, T2> { impl<T1: Serialize, T2: Serialize> Responder for MultistatusElement<T1, T2> {
type Body = BoxBody; type Body = BoxBody;