diff --git a/Cargo.lock b/Cargo.lock index c6228af..484d96e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -51,6 +51,7 @@ dependencies = [ "eml-codec", "futures", "hex", + "icalendar", "im", "lazy_static", "rand", @@ -1662,8 +1663,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] @@ -1972,6 +1975,18 @@ dependencies = [ "cc", ] +[[package]] +name = "icalendar" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd83e81e8a329918d84e49032f8e596f4f079380942d172724cea3599a80807e" +dependencies = [ + "chrono", + "iso8601", + "nom 7.1.3", + "uuid", +] + [[package]] name = "idna" version = "0.2.3" @@ -2087,6 +2102,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "iso8601" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924e5d73ea28f59011fec52a0d12185d496a9b075d360657aed2a5707f701153" +dependencies = [ + "nom 7.1.3", +] + [[package]] name = "itoa" version = "1.0.10" @@ -3636,6 +3660,10 @@ name = "uuid" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" +dependencies = [ + "getrandom", + "wasm-bindgen", +] [[package]] name = "valuable" diff --git a/Cargo.toml b/Cargo.toml index d4bc543..68b1eae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -57,6 +57,9 @@ smtp-server = { git = "http://github.com/Alexis211/kannader", branch = "feature/ imap-codec = { version = "2.0.0", features = ["bounded-static", "ext_condstore_qresync"] } imap-flow = { git = "https://github.com/duesee/imap-flow.git", branch = "main" } +# dav protocols +icalendar = "0.16" + # http & web http = "1.1" http-body-util = "0.1.1" diff --git a/aero-collections/Cargo.toml b/aero-collections/Cargo.toml index 90d285e..95ab142 100644 --- a/aero-collections/Cargo.toml +++ b/aero-collections/Cargo.toml @@ -22,3 +22,4 @@ rand.workspace = true im.workspace = true sodiumoxide.workspace = true eml-codec.workspace = true +icalendar.workspace = true diff --git a/aero-proto/src/dav/controller.rs b/aero-proto/src/dav/controller.rs index f3b5496..885828f 100644 --- a/aero-proto/src/dav/controller.rs +++ b/aero-proto/src/dav/controller.rs @@ -104,9 +104,11 @@ impl Controller { // Multiget is really like a propfind where Depth: 0|1|Infinity is replaced by an arbitrary // list of URLs + // @FIXME let multiget = match report { cal::Report::Multiget(m) => m, - _ => return Ok(Response::builder() + cal::Report::Query(q) => todo!(), + cal::Report::FreeBusy(_) => return Ok(Response::builder() .status(501) .body(text_body("Not implemented"))?), };