refactor from file to resource

This commit is contained in:
Lennart
2024-09-29 14:42:56 +02:00
parent e9e16a71f0
commit f2f66c95d2
8 changed files with 25 additions and 25 deletions

View File

@@ -221,10 +221,10 @@ impl Resource for CalendarResource {
impl<C: CalendarStore + ?Sized> ResourceService for CalendarResourceService<C> {
type MemberType = EventResource;
type PathComponents = (String, String); // principal, calendar_id
type File = CalendarResource;
type Resource = CalendarResource;
type Error = Error;
async fn get_file(&self) -> Result<Self::File, Error> {
async fn get_resource(&self) -> Result<Self::Resource, Error> {
let calendar = self
.cal_store
.read()
@@ -270,7 +270,7 @@ impl<C: CalendarStore + ?Sized> ResourceService for CalendarResourceService<C> {
})
}
async fn save_file(&self, file: Self::File) -> Result<(), Self::Error> {
async fn save_resource(&self, file: Self::Resource) -> Result<(), Self::Error> {
self.cal_store
.write()
.await
@@ -283,7 +283,7 @@ impl<C: CalendarStore + ?Sized> ResourceService for CalendarResourceService<C> {
Ok(())
}
async fn delete_file(&self, use_trashbin: bool) -> Result<(), Self::Error> {
async fn delete_resource(&self, use_trashbin: bool) -> Result<(), Self::Error> {
self.cal_store
.write()
.await

View File

@@ -66,7 +66,7 @@ impl Resource for EventResource {
#[async_trait(?Send)]
impl<C: CalendarStore + ?Sized> ResourceService for EventResourceService<C> {
type PathComponents = (String, String, String); // principal, calendar, event
type File = EventResource;
type Resource = EventResource;
type MemberType = EventResource;
type Error = Error;
@@ -96,7 +96,7 @@ impl<C: CalendarStore + ?Sized> ResourceService for EventResourceService<C> {
})
}
async fn get_file(&self) -> Result<Self::File, Self::Error> {
async fn get_resource(&self) -> Result<Self::Resource, Self::Error> {
let event = self
.cal_store
.read()
@@ -106,11 +106,11 @@ impl<C: CalendarStore + ?Sized> ResourceService for EventResourceService<C> {
Ok(event.into())
}
async fn save_file(&self, _file: Self::File) -> Result<(), Self::Error> {
async fn save_resource(&self, _file: Self::Resource) -> Result<(), Self::Error> {
Err(Error::NotImplemented)
}
async fn delete_file(&self, use_trashbin: bool) -> Result<(), Self::Error> {
async fn delete_resource(&self, use_trashbin: bool) -> Result<(), Self::Error> {
self.cal_store
.write()
.await

View File

@@ -88,7 +88,7 @@ impl Resource for PrincipalResource {
impl<C: CalendarStore + ?Sized> ResourceService for PrincipalResourceService<C> {
type PathComponents = (String,);
type MemberType = CalendarResource;
type File = PrincipalResource;
type Resource = PrincipalResource;
type Error = Error;
async fn new(
@@ -112,7 +112,7 @@ impl<C: CalendarStore + ?Sized> ResourceService for PrincipalResourceService<C>
})
}
async fn get_file(&self) -> Result<Self::File, Self::Error> {
async fn get_resource(&self) -> Result<Self::Resource, Self::Error> {
Ok(PrincipalResource {
principal: self.principal.to_owned(),
})
@@ -134,7 +134,7 @@ impl<C: CalendarStore + ?Sized> ResourceService for PrincipalResourceService<C>
.collect())
}
async fn save_file(&self, _file: Self::File) -> Result<(), Self::Error> {
async fn save_resource(&self, _file: Self::Resource) -> Result<(), Self::Error> {
Err(Error::NotImplemented)
}
}

View File

@@ -64,7 +64,7 @@ impl Resource for RootResource {
impl ResourceService for RootResourceService {
type PathComponents = ();
type MemberType = RootResource;
type File = RootResource;
type Resource = RootResource;
type Error = Error;
async fn new(
@@ -77,13 +77,13 @@ impl ResourceService for RootResourceService {
})
}
async fn get_file(&self) -> Result<Self::File, Self::Error> {
async fn get_resource(&self) -> Result<Self::Resource, Self::Error> {
Ok(RootResource {
principal: self.principal.to_owned(),
})
}
async fn save_file(&self, _file: Self::File) -> Result<(), Self::Error> {
async fn save_resource(&self, _file: Self::Resource) -> Result<(), Self::Error> {
Err(Error::NotImplemented)
}
}

View File

@@ -20,7 +20,7 @@ pub async fn route_delete<A: CheckAuthentication, R: ResourceService>(
.unwrap_or(false);
let resource_service = R::new(&req, &auth_info, path_components.clone()).await?;
resource_service.delete_file(!no_trash).await?;
resource_service.delete_resource(!no_trash).await?;
Ok(HttpResponse::Ok().body(""))
}

View File

@@ -48,7 +48,7 @@ pub async fn route_propfind<A: CheckAuthentication, R: ResourceService>(
depth: Depth,
) -> Result<
MultistatusElement<
PropstatWrapper<<R::File as Resource>::Prop>,
PropstatWrapper<<R::Resource as Resource>::Prop>,
PropstatWrapper<<R::MemberType as Resource>::Prop>,
>,
R::Error,
@@ -88,7 +88,7 @@ pub async fn route_propfind<A: CheckAuthentication, R: ResourceService>(
}
}
let resource = resource_service.get_file().await?;
let resource = resource_service.get_resource().await?;
let response = resource.propfind(&prefix, path, props).await?;
Ok(MultistatusElement {

View File

@@ -60,7 +60,7 @@ pub async fn route_proppatch<A: CheckAuthentication, R: ResourceService>(
debug!("{body}");
let PropertyupdateElement::<<R::File as Resource>::Prop> { operations } =
let PropertyupdateElement::<<R::Resource as Resource>::Prop> { operations } =
quick_xml::de::from_str(&body).map_err(Error::XmlDecodeError)?;
// Extract all set property names without verification
@@ -76,7 +76,7 @@ pub async fn route_proppatch<A: CheckAuthentication, R: ResourceService>(
})
.collect();
let mut resource = resource_service.get_file().await?;
let mut resource = resource_service.get_resource().await?;
let mut props_ok = Vec::new();
let mut props_conflict = Vec::new();
@@ -105,7 +105,7 @@ pub async fn route_proppatch<A: CheckAuthentication, R: ResourceService>(
}
}
Operation::Remove(_remove_el) => {
match <<R::File as Resource>::PropName as FromStr>::from_str(&propname) {
match <<R::Resource as Resource>::PropName as FromStr>::from_str(&propname) {
Ok(prop) => {
match resource.remove_prop(prop) {
Ok(()) => {
@@ -131,7 +131,7 @@ pub async fn route_proppatch<A: CheckAuthentication, R: ResourceService>(
if props_not_found.is_empty() && props_conflict.is_empty() {
// Only save if no errors occured
resource_service.save_file(resource).await?;
resource_service.save_resource(resource).await?;
}
Ok(MultistatusElement {

View File

@@ -42,7 +42,7 @@ pub trait InvalidProperty {
pub trait ResourceService: Sized {
type MemberType: Resource<Error = Self::Error>;
type PathComponents: Sized + Clone; // defines how the resource URI maps to parameters, i.e. /{principal}/{calendar} -> (String, String)
type File: Resource<Error = Self::Error>;
type Resource: Resource<Error = Self::Error>;
type Error: ResponseError + From<crate::Error> + From<anyhow::Error>;
async fn new(
@@ -58,9 +58,9 @@ pub trait ResourceService: Sized {
Ok(vec![])
}
async fn get_file(&self) -> Result<Self::File, Self::Error>;
async fn save_file(&self, file: Self::File) -> Result<(), Self::Error>;
async fn delete_file(&self, _use_trashbin: bool) -> Result<(), Self::Error> {
async fn get_resource(&self) -> Result<Self::Resource, Self::Error>;
async fn save_resource(&self, file: Self::Resource) -> Result<(), Self::Error>;
async fn delete_resource(&self, _use_trashbin: bool) -> Result<(), Self::Error> {
Err(crate::Error::Unauthorized.into())
}
}