propfind does not need to be async

This commit is contained in:
Lennart
2024-10-08 16:13:48 +02:00
parent 97457d72d3
commit d593a28381
5 changed files with 18 additions and 25 deletions

View File

@@ -90,11 +90,11 @@ pub async fn handle_calendar_multiget<C: CalendarStore + ?Sized>(
let mut responses = Vec::new(); let mut responses = Vec::new();
for object in objects { for object in objects {
let path = format!("{}/{}", req.path(), object.get_uid()); let path = format!("{}/{}", req.path(), object.get_uid());
responses.push( responses.push(CalendarObjectResource::from(object).propfind(
CalendarObjectResource::from(object) &path,
.propfind(&path, props.clone(), req.resource_map()) props.clone(),
.await?, req.resource_map(),
); )?);
} }
let not_found_responses = not_found let not_found_responses = not_found

View File

@@ -236,11 +236,11 @@ pub async fn handle_calendar_query<C: CalendarStore + ?Sized>(
vec![principal, cid, object.get_uid()], vec![principal, cid, object.get_uid()],
) )
.unwrap(); .unwrap();
responses.push( responses.push(CalendarObjectResource::from(object).propfind(
CalendarObjectResource::from(object) &path,
.propfind(&path, props.clone(), req.resource_map()) props.clone(),
.await?, req.resource_map(),
); )?);
} }
Ok(MultistatusElement { Ok(MultistatusElement {

View File

@@ -75,11 +75,11 @@ pub async fn handle_sync_collection<C: CalendarStore + ?Sized>(
vec![principal, cid, &object.get_uid()], vec![principal, cid, &object.get_uid()],
) )
.unwrap(); .unwrap();
responses.push( responses.push(CalendarObjectResource::from(object).propfind(
CalendarObjectResource::from(object) &path,
.propfind(&path, props.clone(), req.resource_map()) props.clone(),
.await?, req.resource_map(),
); )?);
} }
for object_uid in deleted_objects { for object_uid in deleted_objects {

View File

@@ -76,18 +76,12 @@ pub async fn route_propfind<R: ResourceService>(
let mut member_responses = Vec::new(); let mut member_responses = Vec::new();
if depth != Depth::Zero { if depth != Depth::Zero {
for (path, member) in resource_service.get_members(req.resource_map()).await? { for (path, member) in resource_service.get_members(req.resource_map()).await? {
member_responses.push( member_responses.push(member.propfind(&path, props.clone(), req.resource_map())?);
member
.propfind(&path, props.clone(), req.resource_map())
.await?,
);
} }
} }
let resource = resource_service.get_resource(user.id).await?; let resource = resource_service.get_resource(user.id).await?;
let response = resource let response = resource.propfind(req.path(), props, req.resource_map())?;
.propfind(req.path(), props, req.resource_map())
.await?;
Ok(MultistatusElement { Ok(MultistatusElement {
responses: vec![response], responses: vec![response],

View File

@@ -52,8 +52,7 @@ pub trait Resource: Clone {
.to_owned()) .to_owned())
} }
#[allow(async_fn_in_trait)] fn propfind(
async fn propfind(
&self, &self,
path: &str, path: &str,
mut props: Vec<&str>, mut props: Vec<&str>,