From 3c9c1c7abf771b81080a10c06cdcfb016f4c491c Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Mon, 2 Jun 2025 20:18:59 +0200 Subject: [PATCH] slightly more refactoring --- crates/caldav/src/calendar/methods/post.rs | 17 +++++++++++------ crates/caldav/src/calendar/resource.rs | 7 +++---- crates/carddav/src/addressbook/methods/post.rs | 14 +++++++++----- crates/carddav/src/addressbook/resource.rs | 7 +++---- 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/crates/caldav/src/calendar/methods/post.rs b/crates/caldav/src/calendar/methods/post.rs index fabc0a8..094c723 100644 --- a/crates/caldav/src/calendar/methods/post.rs +++ b/crates/caldav/src/calendar/methods/post.rs @@ -1,5 +1,5 @@ use crate::Error; -use crate::calendar::resource::CalendarResource; +use crate::calendar::resource::{CalendarResource, CalendarResourceService}; use actix_web::http::header; use actix_web::web::{Data, Path}; use actix_web::{HttpRequest, HttpResponse}; @@ -12,13 +12,12 @@ use rustical_xml::XmlDocument; use tracing::instrument; use tracing_actix_web::RootSpan; -#[instrument(parent = root_span.id(), skip(store, subscription_store, root_span, req))] +#[instrument(parent = root_span.id(), skip(resource_service, root_span, req))] pub async fn route_post( path: Path<(String, String)>, body: String, user: User, - store: Data, - subscription_store: Data, + resource_service: Data>, root_span: RootSpan, req: HttpRequest, ) -> Result { @@ -27,7 +26,10 @@ pub async fn route_post( return Err(Error::Unauthorized); } - let calendar = store.get_calendar(&principal, &cal_id).await?; + let calendar = resource_service + .cal_store + .get_calendar(&principal, &cal_id) + .await?; let calendar_resource = CalendarResource { cal: calendar, read_only: true, @@ -70,7 +72,10 @@ pub async fn route_post( .ty, auth_secret: request.subscription.web_push_subscription.auth_secret, }; - subscription_store.upsert_subscription(subscription).await?; + resource_service + .sub_store + .upsert_subscription(subscription) + .await?; let location = req .resource_map() diff --git a/crates/caldav/src/calendar/resource.rs b/crates/caldav/src/calendar/resource.rs index 4d6506c..11aef1f 100644 --- a/crates/caldav/src/calendar/resource.rs +++ b/crates/caldav/src/calendar/resource.rs @@ -5,7 +5,7 @@ use super::prop::{SupportedCalendarComponentSet, SupportedCalendarData, Supporte use crate::calendar_object::resource::{CalendarObjectResource, CalendarObjectResourceService}; use crate::{CalDavPrincipalUri, Error}; use actix_web::http::Method; -use actix_web::web::{self, Data}; +use actix_web::web::{self}; use async_trait::async_trait; use chrono::{DateTime, Utc}; use derive_more::derive::{From, Into}; @@ -309,8 +309,8 @@ impl Resource for CalendarResource { } pub struct CalendarResourceService { - cal_store: Arc, - sub_store: Arc, + pub(crate) cal_store: Arc, + pub(crate) sub_store: Arc, } impl CalendarResourceService { @@ -389,7 +389,6 @@ impl ResourceService for CalendarResourc let report_method = web::method(Method::from_str("REPORT").unwrap()); let mkcalendar_method = web::method(Method::from_str("MKCALENDAR").unwrap()); web::scope("/{calendar_id}") - .app_data(Data::from(self.sub_store.clone())) .service(CalendarObjectResourceService::new(self.cal_store.clone()).actix_scope()) .service( self.actix_resource() diff --git a/crates/carddav/src/addressbook/methods/post.rs b/crates/carddav/src/addressbook/methods/post.rs index 2ec898d..f3866de 100644 --- a/crates/carddav/src/addressbook/methods/post.rs +++ b/crates/carddav/src/addressbook/methods/post.rs @@ -1,4 +1,5 @@ use crate::Error; +use crate::addressbook::resource::AddressbookResourceService; use actix_web::http::header; use actix_web::web::{Data, Path}; use actix_web::{HttpRequest, HttpResponse}; @@ -9,13 +10,12 @@ use rustical_xml::XmlDocument; use tracing::instrument; use tracing_actix_web::RootSpan; -#[instrument(parent = root_span.id(), skip(store, subscription_store, root_span, req))] +#[instrument(parent = root_span.id(), skip(resource_service, root_span, req))] pub async fn route_post( path: Path<(String, String)>, body: String, user: User, - store: Data, - subscription_store: Data, + resource_service: Data>, root_span: RootSpan, req: HttpRequest, ) -> Result { @@ -24,7 +24,8 @@ pub async fn route_post( return Err(Error::Unauthorized); } - let addressbook = store + let addressbook = resource_service + .addr_store .get_addressbook(&principal, &addressbook_id, false) .await?; let request = PushRegister::parse_str(&body)?; @@ -57,7 +58,10 @@ pub async fn route_post( .ty, auth_secret: request.subscription.web_push_subscription.auth_secret, }; - subscription_store.upsert_subscription(subscription).await?; + resource_service + .sub_store + .upsert_subscription(subscription) + .await?; let location = req .resource_map() diff --git a/crates/carddav/src/addressbook/resource.rs b/crates/carddav/src/addressbook/resource.rs index 9f23e3d..fc71727 100644 --- a/crates/carddav/src/addressbook/resource.rs +++ b/crates/carddav/src/addressbook/resource.rs @@ -5,7 +5,7 @@ use super::prop::{SupportedAddressData, SupportedReportSet}; use crate::address_object::resource::{AddressObjectResource, AddressObjectResourceService}; use crate::{CardDavPrincipalUri, Error}; use actix_web::http::Method; -use actix_web::web::{self, Data}; +use actix_web::web; use async_trait::async_trait; use derive_more::derive::{From, Into}; use rustical_dav::extensions::{ @@ -22,8 +22,8 @@ use std::str::FromStr; use std::sync::Arc; pub struct AddressbookResourceService { - addr_store: Arc, - sub_store: Arc, + pub(crate) addr_store: Arc, + pub(crate) sub_store: Arc, } impl AddressbookResourceService { @@ -259,7 +259,6 @@ impl ResourceService let mkcol_method = web::method(Method::from_str("MKCOL").unwrap()); let report_method = web::method(Method::from_str("REPORT").unwrap()); web::scope("/{addressbook_id}") - .app_data(Data::from(self.sub_store.clone())) .service(AddressObjectResourceService::::new(self.addr_store.clone()).actix_scope()) .service( self.actix_resource()