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) -> Vec>; /// Put an element (create or update) fn put<'a>(&'a self, policy: PutPolicy, stream: Content<'a>) -> BoxFuture<'a, Result>; + /// 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" + } }