diff options
author | Quentin Dufour <quentin@deuxfleurs.fr> | 2024-05-28 13:59:40 +0200 |
---|---|---|
committer | Quentin Dufour <quentin@deuxfleurs.fr> | 2024-05-28 13:59:40 +0200 |
commit | 171a762768aabd799a1012d2fb939d869ff53f7b (patch) | |
tree | f375107c43ea3e57762548c777c5a8b9d15e6f69 /aero-dav/src/syncencoder.rs | |
parent | 410d663a5ecbb6ca46ac049227afdaaaf50ac27f (diff) | |
download | aerogramme-171a762768aabd799a1012d2fb939d869ff53f7b.tar.gz aerogramme-171a762768aabd799a1012d2fb939d869ff53f7b.zip |
implement sync multistatus extension
Diffstat (limited to 'aero-dav/src/syncencoder.rs')
-rw-r--r-- | aero-dav/src/syncencoder.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/aero-dav/src/syncencoder.rs b/aero-dav/src/syncencoder.rs index 59ad6cc..8badc92 100644 --- a/aero-dav/src/syncencoder.rs +++ b/aero-dav/src/syncencoder.rs @@ -32,6 +32,12 @@ impl QWrite for ReportTypeName { } } +impl QWrite for Multistatus { + async fn qwrite(&self, xml: &mut Writer<impl IWrite>) -> Result<(), QError> { + self.sync_token.qwrite(xml).await + } +} + impl<E: Extension> QWrite for SyncCollection<E> { async fn qwrite(&self, xml: &mut Writer<impl IWrite>) -> Result<(), QError> { let start = xml.create_dav_element("sync-collection"); @@ -196,4 +202,24 @@ mod tests { ])) .await; } + + #[tokio::test] + async fn multistatus_ext() { + serialize_deserialize(&dav::Multistatus::<All> { + responses: vec![dav::Response { + status_or_propstat: dav::StatusOrPropstat::Status( + vec![dav::Href("/".into())], + dav::Status(http::status::StatusCode::OK), + ), + error: None, + location: None, + responsedescription: None, + }], + responsedescription: None, + extension: Some(realization::Multistatus::Sync(Multistatus { + sync_token: SyncToken("http://example.com/ns/sync/1232".into()), + })), + }) + .await; + } } |