diff options
author | Quentin Dufour <quentin@deuxfleurs.fr> | 2024-03-18 20:45:30 +0100 |
---|---|---|
committer | Quentin Dufour <quentin@deuxfleurs.fr> | 2024-03-18 20:45:30 +0100 |
commit | d0c47b93fe19a9ebc35d624b9dbed7d1d539ecaa (patch) | |
tree | 6503142e21a5dd36796bb99a4406f491e62d92e9 /aero-dav/src/xml.rs | |
parent | 2e7ffd4f4ca6ba82069290e0a3a70e85a3a79a7b (diff) | |
download | aerogramme-d0c47b93fe19a9ebc35d624b9dbed7d1d539ecaa.tar.gz aerogramme-d0c47b93fe19a9ebc35d624b9dbed7d1d539ecaa.zip |
Rework webdav types
Diffstat (limited to 'aero-dav/src/xml.rs')
-rw-r--r-- | aero-dav/src/xml.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/aero-dav/src/xml.rs b/aero-dav/src/xml.rs index 827e9d0..26f54cc 100644 --- a/aero-dav/src/xml.rs +++ b/aero-dav/src/xml.rs @@ -258,6 +258,17 @@ impl<T: IRead> Reader<T> { Ok(evt) } + pub async fn open_start(&mut self, ns: &[u8], key: &str) -> Result<Event<'static>, ParsingError> { + let evt = match self.peek() { + Event::Start(_) if self.is_tag(ns, key) => self.next().await?, + _ => return Err(ParsingError::Recoverable), + }; + + //println!("open tag {:?}", evt); + self.parents.push(evt.clone()); + Ok(evt) + } + pub async fn maybe_open(&mut self, ns: &[u8], key: &str) -> Result<Option<Event<'static>>, ParsingError> { match self.open(ns, key).await { Ok(v) => Ok(Some(v)), @@ -266,6 +277,14 @@ impl<T: IRead> Reader<T> { } } + pub async fn maybe_open_start(&mut self, ns: &[u8], key: &str) -> Result<Option<Event<'static>>, ParsingError> { + match self.open_start(ns, key).await { + Ok(v) => Ok(Some(v)), + Err(ParsingError::Recoverable) => Ok(None), + Err(e) => Err(e), + } + } + pub fn prev_attr(&self, attr: &str) -> Option<String> { match &self.prev { Event::Start(bs) | Event::Empty(bs) => match bs.try_get_attribute(attr) { |