mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-13 20:32:48 +00:00
Minor refactoring and tracing
This commit is contained in:
@@ -8,8 +8,6 @@ use rustical_dav::xml::HrefElement;
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use strum::{EnumString, VariantNames};
|
use strum::{EnumString, VariantNames};
|
||||||
|
|
||||||
pub struct RootResourceService;
|
|
||||||
|
|
||||||
#[derive(EnumString, Debug, VariantNames, Clone)]
|
#[derive(EnumString, Debug, VariantNames, Clone)]
|
||||||
#[strum(serialize_all = "kebab-case")]
|
#[strum(serialize_all = "kebab-case")]
|
||||||
pub enum RootPropName {
|
pub enum RootPropName {
|
||||||
@@ -68,6 +66,8 @@ impl Resource for RootResource {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct RootResourceService;
|
||||||
|
|
||||||
#[async_trait(?Send)]
|
#[async_trait(?Send)]
|
||||||
impl ResourceService for RootResourceService {
|
impl ResourceService for RootResourceService {
|
||||||
type PathComponents = ();
|
type PathComponents = ();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
pub mod depth_extractor;
|
pub mod depth_header;
|
||||||
pub mod error;
|
pub mod error;
|
||||||
pub mod methods;
|
pub mod methods;
|
||||||
pub mod namespace;
|
pub mod namespace;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use crate::depth_extractor::Depth;
|
use crate::depth_header::Depth;
|
||||||
use crate::resource::Resource;
|
use crate::resource::Resource;
|
||||||
use crate::resource::ResourceService;
|
use crate::resource::ResourceService;
|
||||||
use crate::xml::multistatus::PropstatWrapper;
|
use crate::xml::multistatus::PropstatWrapper;
|
||||||
@@ -35,6 +35,7 @@ struct PropfindElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[instrument(parent = root_span.id(), skip(path_components, req, root_span))]
|
#[instrument(parent = root_span.id(), skip(path_components, req, root_span))]
|
||||||
|
#[allow(clippy::type_complexity)]
|
||||||
pub async fn route_propfind<R: ResourceService>(
|
pub async fn route_propfind<R: ResourceService>(
|
||||||
path_components: Path<R::PathComponents>,
|
path_components: Path<R::PathComponents>,
|
||||||
body: String,
|
body: String,
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ use log::debug;
|
|||||||
use rustical_store::auth::User;
|
use rustical_store::auth::User;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
use tracing::instrument;
|
||||||
|
use tracing_actix_web::RootSpan;
|
||||||
|
|
||||||
// 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)]
|
||||||
@@ -47,11 +49,13 @@ struct PropertyupdateElement<T> {
|
|||||||
operations: Vec<Operation<T>>,
|
operations: Vec<Operation<T>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[instrument(parent = root_span.id(), skip(path, req, root_span))]
|
||||||
pub async fn route_proppatch<R: ResourceService>(
|
pub async fn route_proppatch<R: ResourceService>(
|
||||||
path: Path<R::PathComponents>,
|
path: Path<R::PathComponents>,
|
||||||
body: String,
|
body: String,
|
||||||
req: HttpRequest,
|
req: HttpRequest,
|
||||||
user: User,
|
user: User,
|
||||||
|
root_span: RootSpan,
|
||||||
) -> Result<MultistatusElement<PropstatWrapper<String>, PropstatWrapper<String>>, R::Error> {
|
) -> Result<MultistatusElement<PropstatWrapper<String>, PropstatWrapper<String>>, R::Error> {
|
||||||
let path_components = path.into_inner();
|
let path_components = path.into_inner();
|
||||||
let href = req.path().to_owned();
|
let href = req.path().to_owned();
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ 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,
|
||||||
};
|
};
|
||||||
use log::debug;
|
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
|
|
||||||
// Intermediate struct because of a serde limitation, see following article:
|
// Intermediate struct because of a serde limitation, see following article:
|
||||||
@@ -94,7 +93,6 @@ impl<T1: Serialize, T2: Serialize> Responder for MultistatusElement<T1, T2> {
|
|||||||
if let Err(err) = self.serialize(ser) {
|
if let Err(err) = self.serialize(ser) {
|
||||||
return crate::Error::from(err).error_response();
|
return crate::Error::from(err).error_response();
|
||||||
}
|
}
|
||||||
// debug!("Return multistatus:\n{output}");
|
|
||||||
|
|
||||||
HttpResponse::MultiStatus()
|
HttpResponse::MultiStatus()
|
||||||
.content_type(ContentType::xml())
|
.content_type(ContentType::xml())
|
||||||
|
|||||||
Reference in New Issue
Block a user