diff --git a/crates/caldav/src/calendar/methods/mkcalendar.rs b/crates/caldav/src/calendar/methods/mkcalendar.rs index b6a9110..ea801df 100644 --- a/crates/caldav/src/calendar/methods/mkcalendar.rs +++ b/crates/caldav/src/calendar/methods/mkcalendar.rs @@ -41,7 +41,7 @@ struct MkcalendarRequest { } #[instrument(parent = root_span.id(), skip(store, root_span))] -pub async fn route_mkcalendar( +pub async fn route_mkcalendar( path: Path<(String, String)>, body: String, user: User, diff --git a/crates/caldav/src/calendar/methods/post.rs b/crates/caldav/src/calendar/methods/post.rs index 32749ba..0574c9a 100644 --- a/crates/caldav/src/calendar/methods/post.rs +++ b/crates/caldav/src/calendar/methods/post.rs @@ -10,7 +10,7 @@ use tracing::instrument; use tracing_actix_web::RootSpan; #[instrument(parent = root_span.id(), skip(store, subscription_store, root_span, req))] -pub async fn route_post( +pub async fn route_post( path: Path<(String, String)>, body: String, user: User, diff --git a/crates/caldav/src/calendar/methods/report/calendar_multiget.rs b/crates/caldav/src/calendar/methods/report/calendar_multiget.rs index aaf0778..46faa19 100644 --- a/crates/caldav/src/calendar/methods/report/calendar_multiget.rs +++ b/crates/caldav/src/calendar/methods/report/calendar_multiget.rs @@ -24,7 +24,7 @@ pub(crate) struct CalendarMultigetRequest { pub(crate) href: Vec, } -pub async fn get_objects_calendar_multiget( +pub async fn get_objects_calendar_multiget( cal_query: &CalendarMultigetRequest, path: &str, principal: &str, @@ -52,7 +52,7 @@ pub async fn get_objects_calendar_multiget( Ok((result, not_found)) } -pub async fn handle_calendar_multiget( +pub async fn handle_calendar_multiget( cal_multiget: CalendarMultigetRequest, req: HttpRequest, user: &User, diff --git a/crates/caldav/src/calendar/methods/report/calendar_query.rs b/crates/caldav/src/calendar/methods/report/calendar_query.rs index 6d8e127..a584076 100644 --- a/crates/caldav/src/calendar/methods/report/calendar_query.rs +++ b/crates/caldav/src/calendar/methods/report/calendar_query.rs @@ -175,7 +175,7 @@ pub struct CalendarQueryRequest { pub(crate) timezone_id: Option, } -pub async fn get_objects_calendar_query( +pub async fn get_objects_calendar_query( cal_query: &CalendarQueryRequest, principal: &str, cal_id: &str, @@ -188,7 +188,7 @@ pub async fn get_objects_calendar_query( Ok(objects) } -pub async fn handle_calendar_query( +pub async fn handle_calendar_query( cal_query: CalendarQueryRequest, req: HttpRequest, user: &User, diff --git a/crates/caldav/src/calendar/methods/report/mod.rs b/crates/caldav/src/calendar/methods/report/mod.rs index 8e6d6ed..ea338eb 100644 --- a/crates/caldav/src/calendar/methods/report/mod.rs +++ b/crates/caldav/src/calendar/methods/report/mod.rs @@ -22,7 +22,7 @@ pub(crate) enum ReportRequest { } #[instrument(skip(req, cal_store))] -pub async fn route_report_calendar( +pub async fn route_report_calendar( path: Path<(String, String)>, body: String, user: User, diff --git a/crates/caldav/src/calendar/methods/report/sync_collection.rs b/crates/caldav/src/calendar/methods/report/sync_collection.rs index 5227dda..adf5156 100644 --- a/crates/caldav/src/calendar/methods/report/sync_collection.rs +++ b/crates/caldav/src/calendar/methods/report/sync_collection.rs @@ -60,7 +60,7 @@ pub(crate) struct SyncCollectionRequest { pub(crate) limit: Option, } -pub async fn handle_sync_collection( +pub async fn handle_sync_collection( sync_collection: SyncCollectionRequest, req: HttpRequest, user: &User, diff --git a/crates/caldav/src/calendar/resource.rs b/crates/caldav/src/calendar/resource.rs index 53be000..1ddd4c4 100644 --- a/crates/caldav/src/calendar/resource.rs +++ b/crates/caldav/src/calendar/resource.rs @@ -255,12 +255,12 @@ impl Resource for CalendarResource { } } -pub struct CalendarResourceService { +pub struct CalendarResourceService { cal_store: Arc, __phantom_sub: PhantomData, } -impl CalendarResourceService { +impl CalendarResourceService { pub fn new(cal_store: Arc) -> Self { Self { cal_store, @@ -270,7 +270,7 @@ impl CalendarResourceS } #[async_trait(?Send)] -impl ResourceService +impl ResourceService for CalendarResourceService { type MemberType = CalendarObjectResource; diff --git a/crates/caldav/src/calendar_object/methods.rs b/crates/caldav/src/calendar_object/methods.rs index aa38c4b..d60ac15 100644 --- a/crates/caldav/src/calendar_object/methods.rs +++ b/crates/caldav/src/calendar_object/methods.rs @@ -12,7 +12,7 @@ use tracing_actix_web::RootSpan; use super::resource::CalendarObjectPathComponents; #[instrument(parent = root_span.id(), skip(store, root_span))] -pub async fn get_event( +pub async fn get_event( path: Path, store: Data, user: User, @@ -42,7 +42,7 @@ pub async fn get_event( } #[instrument(parent = root_span.id(), skip(store, req, root_span))] -pub async fn put_event( +pub async fn put_event( path: Path, store: Data, body: String, diff --git a/crates/caldav/src/calendar_object/resource.rs b/crates/caldav/src/calendar_object/resource.rs index bbf0442..1200370 100644 --- a/crates/caldav/src/calendar_object/resource.rs +++ b/crates/caldav/src/calendar_object/resource.rs @@ -14,11 +14,11 @@ use serde::Deserialize; use std::sync::Arc; use strum::{EnumDiscriminants, EnumString, IntoStaticStr, VariantNames}; -pub struct CalendarObjectResourceService { +pub struct CalendarObjectResourceService { cal_store: Arc, } -impl CalendarObjectResourceService { +impl CalendarObjectResourceService { pub fn new(cal_store: Arc) -> Self { Self { cal_store } } @@ -110,7 +110,7 @@ impl<'de> Deserialize<'de> for CalendarObjectPathComponents { } #[async_trait(?Send)] -impl ResourceService for CalendarObjectResourceService { +impl ResourceService for CalendarObjectResourceService { type PathComponents = CalendarObjectPathComponents; type Resource = CalendarObjectResource; type MemberType = CalendarObjectResource; diff --git a/crates/caldav/src/calendar_set/mod.rs b/crates/caldav/src/calendar_set/mod.rs index 2f7acee..01c71ef 100644 --- a/crates/caldav/src/calendar_set/mod.rs +++ b/crates/caldav/src/calendar_set/mod.rs @@ -67,18 +67,18 @@ impl Resource for CalendarSetResource { } } -pub struct CalendarSetResourceService { +pub struct CalendarSetResourceService { cal_store: Arc, } -impl CalendarSetResourceService { +impl CalendarSetResourceService { pub fn new(cal_store: Arc) -> Self { Self { cal_store } } } #[async_trait(?Send)] -impl ResourceService for CalendarSetResourceService { +impl ResourceService for CalendarSetResourceService { type PathComponents = (String,); type MemberType = CalendarResource; type Resource = CalendarSetResource; diff --git a/crates/caldav/src/lib.rs b/crates/caldav/src/lib.rs index 93d06ec..03ee7ba 100644 --- a/crates/caldav/src/lib.rs +++ b/crates/caldav/src/lib.rs @@ -30,9 +30,9 @@ pub fn configure_well_known(cfg: &mut web::ServiceConfig, caldav_root: String) { pub fn configure_dav< AP: AuthenticationProvider, - AS: AddressbookStore + ?Sized, - C: CalendarStore + ?Sized, - S: SubscriptionStore + ?Sized, + AS: AddressbookStore, + C: CalendarStore, + S: SubscriptionStore, >( cfg: &mut web::ServiceConfig, auth_provider: Arc, diff --git a/crates/caldav/src/subscription.rs b/crates/caldav/src/subscription.rs index f948150..829e4e7 100644 --- a/crates/caldav/src/subscription.rs +++ b/crates/caldav/src/subscription.rs @@ -8,7 +8,7 @@ use rustical_xml::{XmlRootTag, XmlSerialize}; use crate::calendar::resource::CalendarProp; -async fn handle_delete( +async fn handle_delete( store: Data, path: Path, ) -> Result { @@ -17,7 +17,7 @@ async fn handle_delete( Ok(HttpResponse::NoContent().body("Unregistered")) } -pub fn subscription_resource() -> actix_web::Resource { +pub fn subscription_resource() -> actix_web::Resource { web::resource("/subscription/{id}") .name("subscription") .delete(handle_delete::) diff --git a/crates/carddav/src/address_object/methods.rs b/crates/carddav/src/address_object/methods.rs index 4b6fd2c..fe64edf 100644 --- a/crates/carddav/src/address_object/methods.rs +++ b/crates/carddav/src/address_object/methods.rs @@ -11,7 +11,7 @@ use tracing::instrument; use tracing_actix_web::RootSpan; #[instrument(parent = root_span.id(), skip(store, root_span))] -pub async fn get_object( +pub async fn get_object( path: Path, store: Data, user: User, @@ -43,7 +43,7 @@ pub async fn get_object( } #[instrument(parent = root_span.id(), skip(store, req, root_span))] -pub async fn put_object( +pub async fn put_object( path: Path, store: Data, body: String, diff --git a/crates/carddav/src/address_object/resource.rs b/crates/carddav/src/address_object/resource.rs index 71af2a8..d586f73 100644 --- a/crates/carddav/src/address_object/resource.rs +++ b/crates/carddav/src/address_object/resource.rs @@ -1,7 +1,7 @@ use crate::{principal::PrincipalResource, Error}; use actix_web::dev::ResourceMap; use async_trait::async_trait; -use derive_more::derive::{From, Into}; +use derive_more::derive::{Constructor, From, Into}; use rustical_dav::{ privileges::UserPrivilegeSet, resource::{Resource, ResourceService}, @@ -15,16 +15,11 @@ use strum::{EnumDiscriminants, EnumString, IntoStaticStr, VariantNames}; use super::methods::{get_object, put_object}; -pub struct AddressObjectResourceService { +#[derive(Constructor)] +pub struct AddressObjectResourceService { addr_store: Arc, } -impl AddressObjectResourceService { - pub fn new(addr_store: Arc) -> Self { - Self { addr_store } - } -} - #[derive(XmlDeserialize, XmlSerialize, PartialEq, EnumDiscriminants, Clone)] #[strum_discriminants( name(AddressObjectPropName), @@ -111,7 +106,7 @@ impl<'de> Deserialize<'de> for AddressObjectPathComponents { } #[async_trait(?Send)] -impl ResourceService for AddressObjectResourceService { +impl ResourceService for AddressObjectResourceService { type PathComponents = AddressObjectPathComponents; type Resource = AddressObjectResource; type MemberType = AddressObjectResource; diff --git a/crates/carddav/src/addressbook/methods/mkcol.rs b/crates/carddav/src/addressbook/methods/mkcol.rs index 46584da..6ba2fa0 100644 --- a/crates/carddav/src/addressbook/methods/mkcol.rs +++ b/crates/carddav/src/addressbook/methods/mkcol.rs @@ -32,7 +32,7 @@ struct MkcolRequest { } #[instrument(parent = root_span.id(), skip(store, root_span))] -pub async fn route_mkcol( +pub async fn route_mkcol( path: Path<(String, String)>, body: String, user: User, diff --git a/crates/carddav/src/addressbook/methods/post.rs b/crates/carddav/src/addressbook/methods/post.rs index af65569..1778a7a 100644 --- a/crates/carddav/src/addressbook/methods/post.rs +++ b/crates/carddav/src/addressbook/methods/post.rs @@ -10,7 +10,7 @@ use tracing::instrument; use tracing_actix_web::RootSpan; #[instrument(parent = root_span.id(), skip(store, subscription_store, root_span, req))] -pub async fn route_post( +pub async fn route_post( path: Path<(String, String)>, body: String, user: User, diff --git a/crates/carddav/src/addressbook/methods/report/addressbook_multiget.rs b/crates/carddav/src/addressbook/methods/report/addressbook_multiget.rs index e4827d3..3d6742f 100644 --- a/crates/carddav/src/addressbook/methods/report/addressbook_multiget.rs +++ b/crates/carddav/src/addressbook/methods/report/addressbook_multiget.rs @@ -23,7 +23,7 @@ pub struct AddressbookMultigetRequest { href: Vec, } -pub async fn get_objects_addressbook_multiget( +pub async fn get_objects_addressbook_multiget( addressbook_multiget: &AddressbookMultigetRequest, path: &str, principal: &str, @@ -52,7 +52,7 @@ pub async fn get_objects_addressbook_multiget( Ok((result, not_found)) } -pub async fn handle_addressbook_multiget( +pub async fn handle_addressbook_multiget( addr_multiget: AddressbookMultigetRequest, req: HttpRequest, user: &User, diff --git a/crates/carddav/src/addressbook/methods/report/mod.rs b/crates/carddav/src/addressbook/methods/report/mod.rs index 6bd1a98..40f57bd 100644 --- a/crates/carddav/src/addressbook/methods/report/mod.rs +++ b/crates/carddav/src/addressbook/methods/report/mod.rs @@ -19,7 +19,7 @@ pub(crate) enum ReportRequest { } #[instrument(skip(req, addr_store))] -pub async fn route_report_addressbook( +pub async fn route_report_addressbook( path: Path<(String, String)>, body: String, user: User, diff --git a/crates/carddav/src/addressbook/methods/report/sync_collection.rs b/crates/carddav/src/addressbook/methods/report/sync_collection.rs index d1888ba..80e204d 100644 --- a/crates/carddav/src/addressbook/methods/report/sync_collection.rs +++ b/crates/carddav/src/addressbook/methods/report/sync_collection.rs @@ -56,7 +56,7 @@ pub(crate) struct SyncCollectionRequest { pub(crate) limit: Option, } -pub async fn handle_sync_collection( +pub async fn handle_sync_collection( sync_collection: SyncCollectionRequest, req: HttpRequest, user: &User, diff --git a/crates/carddav/src/addressbook/resource.rs b/crates/carddav/src/addressbook/resource.rs index 3b99fb0..4f4fd2a 100644 --- a/crates/carddav/src/addressbook/resource.rs +++ b/crates/carddav/src/addressbook/resource.rs @@ -22,13 +22,13 @@ use std::str::FromStr; use std::sync::Arc; use strum::{EnumDiscriminants, EnumString, IntoStaticStr, VariantNames}; -pub struct AddressbookResourceService +pub struct AddressbookResourceService { addr_store: Arc, __phantom_sub: PhantomData, } -impl AddressbookResourceService { +impl AddressbookResourceService { pub fn new(addr_store: Arc) -> Self { Self { addr_store, @@ -174,7 +174,7 @@ impl Resource for AddressbookResource { } #[async_trait(?Send)] -impl ResourceService +impl ResourceService for AddressbookResourceService { type MemberType = AddressObjectResource; diff --git a/crates/carddav/src/lib.rs b/crates/carddav/src/lib.rs index 94cbccc..c1309e2 100644 --- a/crates/carddav/src/lib.rs +++ b/crates/carddav/src/lib.rs @@ -29,11 +29,7 @@ pub fn configure_well_known(cfg: &mut web::ServiceConfig, carddav_root: String) cfg.service(web::redirect("/carddav", carddav_root).permanent()); } -pub fn configure_dav< - AP: AuthenticationProvider, - A: AddressbookStore + ?Sized, - S: SubscriptionStore + ?Sized, ->( +pub fn configure_dav( cfg: &mut web::ServiceConfig, auth_provider: Arc, store: Arc, diff --git a/crates/carddav/src/principal/mod.rs b/crates/carddav/src/principal/mod.rs index b0c3e0c..9d038e2 100644 --- a/crates/carddav/src/principal/mod.rs +++ b/crates/carddav/src/principal/mod.rs @@ -11,11 +11,11 @@ use rustical_xml::{XmlDeserialize, XmlSerialize}; use std::sync::Arc; use strum::{EnumDiscriminants, EnumString, IntoStaticStr, VariantNames}; -pub struct PrincipalResourceService { +pub struct PrincipalResourceService { addr_store: Arc, } -impl PrincipalResourceService { +impl PrincipalResourceService { pub fn new(addr_store: Arc) -> Self { Self { addr_store } } @@ -102,7 +102,7 @@ impl Resource for PrincipalResource { } #[async_trait(?Send)] -impl ResourceService for PrincipalResourceService { +impl ResourceService for PrincipalResourceService { type PathComponents = (String,); type MemberType = AddressbookResource; type Resource = PrincipalResource; diff --git a/crates/frontend/src/lib.rs b/crates/frontend/src/lib.rs index 0589323..a835772 100644 --- a/crates/frontend/src/lib.rs +++ b/crates/frontend/src/lib.rs @@ -39,7 +39,7 @@ struct UserPage { pub deleted_addressbooks: Vec, } -async fn route_user( +async fn route_user( path: Path, cal_store: Data, addr_store: Data, @@ -99,11 +99,7 @@ fn unauthorized_handler(res: ServiceResponse) -> actix_web::Result( +pub fn configure_frontend( cfg: &mut web::ServiceConfig, auth_provider: Arc, cal_store: Arc, diff --git a/crates/frontend/src/routes/addressbook.rs b/crates/frontend/src/routes/addressbook.rs index a2b7a8c..0f61923 100644 --- a/crates/frontend/src/routes/addressbook.rs +++ b/crates/frontend/src/routes/addressbook.rs @@ -12,7 +12,7 @@ struct AddressbookPage { addressbook: Addressbook, } -pub async fn route_addressbook( +pub async fn route_addressbook( path: Path<(String, String)>, store: Data, _user: User, @@ -23,7 +23,7 @@ pub async fn route_addressbook( }) } -pub async fn route_addressbook_restore( +pub async fn route_addressbook_restore( path: Path<(String, String)>, req: HttpRequest, store: Data, diff --git a/crates/frontend/src/routes/calendar.rs b/crates/frontend/src/routes/calendar.rs index ae92eac..931b5e4 100644 --- a/crates/frontend/src/routes/calendar.rs +++ b/crates/frontend/src/routes/calendar.rs @@ -12,7 +12,7 @@ struct CalendarPage { calendar: Calendar, } -pub async fn route_calendar( +pub async fn route_calendar( path: Path<(String, String)>, store: Data, _user: User, @@ -23,7 +23,7 @@ pub async fn route_calendar( }) } -pub async fn route_calendar_restore( +pub async fn route_calendar_restore( path: Path<(String, String)>, req: HttpRequest, store: Data, diff --git a/crates/store/src/contact_birthday_store.rs b/crates/store/src/contact_birthday_store.rs index c3e93c0..1701ece 100644 --- a/crates/store/src/contact_birthday_store.rs +++ b/crates/store/src/contact_birthday_store.rs @@ -8,7 +8,7 @@ use derive_more::derive::Constructor; use sha2::{Digest, Sha256}; #[derive(Constructor, Clone)] -pub struct ContactBirthdayStore(Arc); +pub struct ContactBirthdayStore(Arc); fn birthday_calendar(addressbook: Addressbook) -> Calendar { Calendar { @@ -35,7 +35,7 @@ fn birthday_calendar(addressbook: Addressbook) -> Calendar { } #[async_trait] -impl CalendarStore for ContactBirthdayStore { +impl CalendarStore for ContactBirthdayStore { async fn get_calendar(&self, principal: &str, id: &str) -> Result { let addressbook = self.0.get_addressbook(principal, id).await?; Ok(birthday_calendar(addressbook)) diff --git a/src/app.rs b/src/app.rs index df8623d..bf9e9a9 100644 --- a/src/app.rs +++ b/src/app.rs @@ -8,11 +8,7 @@ use rustical_store::{AddressbookStore, CalendarStore, SubscriptionStore}; use std::sync::Arc; use tracing_actix_web::TracingLogger; -pub fn make_app< - AS: AddressbookStore + ?Sized, - CS: CalendarStore + ?Sized, - S: SubscriptionStore + ?Sized, ->( +pub fn make_app( addr_store: Arc, cal_store: Arc, subscription_store: Arc, diff --git a/src/main.rs b/src/main.rs index d292af5..71ad0b2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -46,9 +46,9 @@ async fn get_data_stores( migrate: bool, config: &DataStoreConfig, ) -> Result<( - Arc, - Arc, - Arc, + Arc, + Arc, + Arc, Receiver, )> { Ok(match &config {