From a4b2e104e744549c9a91d3f4614c341c250a3a0b Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Thu, 14 Sep 2023 14:00:53 +0200 Subject: [PATCH] Move error-prone parts to section before output generation --- crates/caldav/src/routes/calendar.rs | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/crates/caldav/src/routes/calendar.rs b/crates/caldav/src/routes/calendar.rs index 5602abd..af0905c 100644 --- a/crates/caldav/src/routes/calendar.rs +++ b/crates/caldav/src/routes/calendar.rs @@ -49,19 +49,22 @@ async fn handle_report_calendar_query( .children() .map(|node| node.tag_name().name()) .collect(); - let output = generate_multistatus(vec![Namespace::Dav, Namespace::CalDAV], |writer| { - for event in events { - let path = format!("{}/{}", request.path(), event.get_uid()); - let event_resource = EventResource { - cal_store: cal_store.clone(), - path: path.clone(), - event, - }; - // TODO: proper error handling - let propfind_result = event_resource.propfind(props.clone())?; + let mut event_results = Vec::new(); + for event in events { + let path = format!("{}/{}", request.path(), event.get_uid()); + let event_resource = EventResource { + cal_store: cal_store.clone(), + path: path.clone(), + event, + }; + event_results.push(event_resource.propfind(props.clone())?); + } + + let output = generate_multistatus(vec![Namespace::Dav, Namespace::CalDAV], |writer| { + for result in event_results { writer.write_event(quick_xml::events::Event::Text(BytesText::from_escaped( - propfind_result, + result, )))?; } Ok(())