From 925b26ea0f81018b03556411ec15717261db2e94 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Mon, 28 Oct 2024 15:36:39 +0100 Subject: [PATCH] update quick-xml to 0.37 --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- crates/dav/src/error.rs | 8 ++++++-- crates/dav/src/methods/propfind.rs | 2 +- crates/dav/src/methods/proppatch.rs | 5 ++--- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f880270..2a2e96d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2307,9 +2307,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.36.2" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" +checksum = "ffbfb3ddf5364c9cfcd65549a1e7b801d0e8d1b14c1a1590a6408aa93cfbfa84" dependencies = [ "memchr", "serde", diff --git a/Cargo.toml b/Cargo.toml index 34be00a..a41bd6e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,7 +49,7 @@ url = "2.5" roxmltree = "0.20" base64 = "0.22" thiserror = "1.0" -quick-xml = { version = "0.36", features = [ +quick-xml = { version = "0.37", features = [ "serde", "serde-types", "serialize", diff --git a/crates/dav/src/error.rs b/crates/dav/src/error.rs index f56e059..a183cb5 100644 --- a/crates/dav/src/error.rs +++ b/crates/dav/src/error.rs @@ -21,7 +21,10 @@ pub enum Error { PropReadOnly, #[error(transparent)] - XmlDecodeError(#[from] quick_xml::DeError), + XmlDeserializationError(#[from] quick_xml::DeError), + + #[error(transparent)] + XmlSerializationError(#[from] quick_xml::SeError), #[error("Internal server error")] Other(#[from] anyhow::Error), @@ -35,7 +38,8 @@ impl actix_web::error::ResponseError for Error { Self::NotFound => StatusCode::NOT_FOUND, Self::BadRequest(_) => StatusCode::BAD_REQUEST, Self::Unauthorized => StatusCode::UNAUTHORIZED, - Self::XmlDecodeError(_) => StatusCode::BAD_REQUEST, + Self::XmlDeserializationError(_) => StatusCode::BAD_REQUEST, + Self::XmlSerializationError(_) => StatusCode::BAD_REQUEST, Error::PropReadOnly => StatusCode::CONFLICT, } } diff --git a/crates/dav/src/methods/propfind.rs b/crates/dav/src/methods/propfind.rs index 80df9a0..a24c37a 100644 --- a/crates/dav/src/methods/propfind.rs +++ b/crates/dav/src/methods/propfind.rs @@ -54,7 +54,7 @@ pub async fn route_propfind( // A request body is optional. If empty we MUST return all props let propfind: PropfindElement = if !body.is_empty() { - quick_xml::de::from_str(&body).map_err(Error::XmlDecodeError)? + quick_xml::de::from_str(&body).map_err(Error::XmlDeserializationError)? } else { PropfindElement { prop: PropfindType::Allprop, diff --git a/crates/dav/src/methods/proppatch.rs b/crates/dav/src/methods/proppatch.rs index 0ee2949..ecc5076 100644 --- a/crates/dav/src/methods/proppatch.rs +++ b/crates/dav/src/methods/proppatch.rs @@ -8,7 +8,6 @@ use crate::xml::TagName; use crate::Error; use actix_web::http::StatusCode; use actix_web::{web::Path, HttpRequest}; -use log::debug; use rustical_store::auth::User; use serde::{Deserialize, Serialize}; use std::str::FromStr; @@ -62,12 +61,12 @@ pub async fn route_proppatch( let resource_service = R::new(&req, path_components.clone()).await?; let PropertyupdateElement::<::Prop> { operations } = - quick_xml::de::from_str(&body).map_err(Error::XmlDecodeError)?; + quick_xml::de::from_str(&body).map_err(Error::XmlDeserializationError)?; // Extract all set property names without verification // Weird workaround because quick_xml doesn't allow untagged enums let propnames: Vec = quick_xml::de::from_str::>(&body) - .map_err(Error::XmlDecodeError)? + .map_err(Error::XmlDeserializationError)? .operations .into_iter() .map(|op_el| match op_el {