aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2024-04-23 15:43:48 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2024-04-23 15:43:48 +0200
commitadbccd88348f472751373a2e1d536e818be8fa67 (patch)
tree6e87f26cce79339854414e2de328e1dd20d1d2a9
parent50ce8621c2eaf91c46be0a2a9c2b82b19e66880b (diff)
downloadaerogramme-adbccd88348f472751373a2e1d536e818be8fa67.tar.gz
aerogramme-adbccd88348f472751373a2e1d536e818be8fa67.zip
Add support for content type
-rw-r--r--aero-proto/src/dav/controller.rs2
-rw-r--r--aero-proto/src/dav/node.rs2
-rw-r--r--aero-proto/src/dav/resource.rs25
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"
+ }
}