diff options
author | Quentin Dufour <quentin@deuxfleurs.fr> | 2024-04-23 15:43:48 +0200 |
---|---|---|
committer | Quentin Dufour <quentin@deuxfleurs.fr> | 2024-04-23 15:43:48 +0200 |
commit | adbccd88348f472751373a2e1d536e818be8fa67 (patch) | |
tree | 6e87f26cce79339854414e2de328e1dd20d1d2a9 | |
parent | 50ce8621c2eaf91c46be0a2a9c2b82b19e66880b (diff) | |
download | aerogramme-adbccd88348f472751373a2e1d536e818be8fa67.tar.gz aerogramme-adbccd88348f472751373a2e1d536e818be8fa67.zip |
Add support for content type
-rw-r--r-- | aero-proto/src/dav/controller.rs | 2 | ||||
-rw-r--r-- | aero-proto/src/dav/node.rs | 2 | ||||
-rw-r--r-- | aero-proto/src/dav/resource.rs | 25 |
3 files changed, 28 insertions, 1 deletions
diff --git a/aero-proto/src/dav/controller.rs b/aero-proto/src/dav/controller.rs index de6403e..5762581 100644 --- a/aero-proto/src/dav/controller.rs +++ b/aero-proto/src/dav/controller.rs @@ -209,7 +209,7 @@ impl Controller { let response = Response::builder() .status(200) - //.header("content-type", "application/xml; charset=\"utf-8\"") + .header("content-type", self.node.content_type()) .body(boxed_body)?; Ok(response) diff --git a/aero-proto/src/dav/node.rs b/aero-proto/src/dav/node.rs index e2835e9..0b63900 100644 --- a/aero-proto/src/dav/node.rs +++ b/aero-proto/src/dav/node.rs @@ -34,6 +34,8 @@ pub(crate) trait DavNode: Send { fn properties(&self, user: &ArcUser, prop: dav::PropName<All>) -> Vec<dav::AnyProperty<All>>; /// Put an element (create or update) fn put<'a>(&'a self, policy: PutPolicy, stream: Content<'a>) -> BoxFuture<'a, Result<Etag>>; + /// Content type of the element + fn content_type(&self) -> &str; /// Get content fn content<'a>(&'a self) -> BoxFuture<'a, Content<'static>>; diff --git a/aero-proto/src/dav/resource.rs b/aero-proto/src/dav/resource.rs index bd377fb..f13fb0c 100644 --- a/aero-proto/src/dav/resource.rs +++ b/aero-proto/src/dav/resource.rs @@ -70,6 +70,10 @@ impl DavNode for RootNode { futures::stream::once(futures::future::err(std::io::Error::from(std::io::ErrorKind::Unsupported))).boxed() }.boxed() } + + fn content_type(&self) -> &str { + "text/plain" + } } #[derive(Clone)] @@ -139,6 +143,11 @@ impl DavNode for HomeNode { futures::stream::once(futures::future::err(std::io::Error::from(std::io::ErrorKind::Unsupported))).boxed() }.boxed() } + + + fn content_type(&self) -> &str { + "text/plain" + } } #[derive(Clone)] @@ -218,6 +227,10 @@ impl DavNode for CalendarListNode { futures::stream::once(futures::future::err(std::io::Error::from(std::io::ErrorKind::Unsupported))).boxed() }.boxed() } + + fn content_type(&self) -> &str { + "text/plain" + } } #[derive(Clone)] @@ -314,6 +327,10 @@ impl DavNode for CalendarNode { futures::stream::once(futures::future::err(std::io::Error::from(std::io::ErrorKind::Unsupported))).boxed() }.boxed() } + + fn content_type(&self) -> &str { + "text/plain" + } } const FAKE_ICS: &str = r#"BEGIN:VCALENDAR @@ -432,6 +449,10 @@ impl DavNode for EventNode { futures::stream::once(Box::pin(r)).boxed() }.boxed() } + + fn content_type(&self) -> &str { + "text/calendar" + } } #[derive(Clone)] @@ -484,4 +505,8 @@ impl DavNode for CreateEventNode { futures::stream::once(futures::future::err(std::io::Error::from(std::io::ErrorKind::Unsupported))).boxed() }.boxed() } + + fn content_type(&self) -> &str { + "text/plain" + } } |