make calendar object id extrinsic

This commit is contained in:
Lennart K
2026-01-07 13:14:50 +01:00
parent 758793a11a
commit a2255bc7f1
17 changed files with 116 additions and 96 deletions

View File

@@ -94,13 +94,13 @@ pub async fn put_event<C: CalendarStore>(
true
};
let Ok(object) = CalendarObject::from_ics(body.clone(), Some(object_id)) else {
let Ok(object) = CalendarObject::from_ics(body.clone()) else {
debug!("invalid calendar data:\n{body}");
return Err(Error::PreconditionFailed(Precondition::ValidCalendarData));
};
let etag = object.get_etag();
cal_store
.put_object(principal, calendar_id, object, overwrite)
.put_object(&principal, &calendar_id, &object_id, object, overwrite)
.await?;
let mut headers = HeaderMap::new();

View File

@@ -1,5 +1,3 @@
use std::borrow::Cow;
use super::prop::{
CalendarData, CalendarObjectProp, CalendarObjectPropName, CalendarObjectPropWrapper,
CalendarObjectPropWrapperName,
@@ -14,16 +12,18 @@ use rustical_dav::{
};
use rustical_ical::CalendarObject;
use rustical_store::auth::Principal;
use std::borrow::Cow;
#[derive(Clone, From, Into)]
pub struct CalendarObjectResource {
pub object: CalendarObject,
pub object_id: String,
pub principal: String,
}
impl ResourceName for CalendarObjectResource {
fn get_name(&self) -> Cow<'_, str> {
Cow::from(format!("{}.ics", self.object.get_id()))
Cow::from(format!("{}.ics", self.object_id))
}
}

View File

@@ -66,6 +66,7 @@ impl<C: CalendarStore> ResourceService for CalendarObjectResourceService<C> {
.await?;
Ok(CalendarObjectResource {
object,
object_id: object_id.to_owned(),
principal: principal.to_owned(),
})
}