From 303f9aff68c550e26ee5f05ce1eb2d4b51062d40 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Mon, 19 Jan 2026 12:51:51 +0100 Subject: [PATCH] Remove IcalError from caldav/carddav since it had an ambiguous status code --- crates/caldav/src/calendar/methods/import.rs | 10 ++++++++-- crates/caldav/src/error.rs | 5 ----- crates/carddav/src/address_object/methods.rs | 5 ++++- crates/carddav/src/error.rs | 5 ----- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/crates/caldav/src/calendar/methods/import.rs b/crates/caldav/src/calendar/methods/import.rs index fd561e8..d6370a3 100644 --- a/crates/caldav/src/calendar/methods/import.rs +++ b/crates/caldav/src/calendar/methods/import.rs @@ -26,7 +26,10 @@ pub async fn route_import( } let parser = ical::IcalParser::from_slice(body.as_bytes()); - let mut cal = parser.expect_one()?.mutable(); + let mut cal = match parser.expect_one() { + Ok(cal) => cal.mutable(), + Err(err) => return Ok((StatusCode::BAD_REQUEST, err.to_string()).into_response()), + }; // Extract calendar metadata let displayname = cal @@ -67,7 +70,10 @@ pub async fn route_import( cal_components.push(CalendarObjectType::Todo); } - let objects = cal.into_objects()?.into_iter().map(Into::into).collect(); + let objects = match cal.into_objects() { + Ok(objects) => objects.into_iter().map(Into::into).collect(), + Err(err) => return Ok((StatusCode::BAD_REQUEST, err.to_string()).into_response()), + }; let new_cal = Calendar { principal, id: cal_id, diff --git a/crates/caldav/src/error.rs b/crates/caldav/src/error.rs index 49161d7..51e3da5 100644 --- a/crates/caldav/src/error.rs +++ b/crates/caldav/src/error.rs @@ -52,9 +52,6 @@ pub enum Error { #[error(transparent)] XmlDecodeError(#[from] rustical_xml::XmlError), - #[error(transparent)] - IcalError(#[from] rustical_ical::Error), - #[error(transparent)] PreconditionFailed(Precondition), } @@ -75,8 +72,6 @@ impl Error { Self::XmlDecodeError(_) => StatusCode::BAD_REQUEST, Self::ChronoParseError(_) | Self::NotImplemented => StatusCode::INTERNAL_SERVER_ERROR, Self::NotFound => StatusCode::NOT_FOUND, - // TODO: Can also be Bad Request, if it's used input - Self::IcalError(_err) => StatusCode::INTERNAL_SERVER_ERROR, Self::PreconditionFailed(_err) => StatusCode::PRECONDITION_FAILED, } } diff --git a/crates/carddav/src/address_object/methods.rs b/crates/carddav/src/address_object/methods.rs index ceabfd3..9d3ab58 100644 --- a/crates/carddav/src/address_object/methods.rs +++ b/crates/carddav/src/address_object/methods.rs @@ -103,7 +103,10 @@ pub async fn put_object( true }; - let object = AddressObject::from_vcf(body)?; + let object = match AddressObject::from_vcf(body) { + Ok(object) => object, + Err(err) => return Ok((StatusCode::BAD_REQUEST, err.to_string()).into_response()), + }; let etag = object.get_etag(); addr_store .put_object(&principal, &addressbook_id, &object_id, object, overwrite) diff --git a/crates/carddav/src/error.rs b/crates/carddav/src/error.rs index dbdff71..5439529 100644 --- a/crates/carddav/src/error.rs +++ b/crates/carddav/src/error.rs @@ -23,9 +23,6 @@ pub enum Error { #[error(transparent)] XmlDecodeError(#[from] rustical_xml::XmlError), - - #[error(transparent)] - IcalError(#[from] rustical_ical::Error), } impl Error { @@ -43,8 +40,6 @@ impl Error { Self::XmlDecodeError(_) => StatusCode::BAD_REQUEST, Self::ChronoParseError(_) | Self::NotImplemented => StatusCode::INTERNAL_SERVER_ERROR, Self::NotFound => StatusCode::NOT_FOUND, - // TODO: Can also be Bad Request, if it's used input - Self::IcalError(_err) => StatusCode::INTERNAL_SERVER_ERROR, } } }