aboutsummaryrefslogtreecommitdiff
path: root/aero-dav/src/xml.rs
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2024-03-18 20:45:30 +0100
committerQuentin Dufour <quentin@deuxfleurs.fr>2024-03-18 20:45:30 +0100
commitd0c47b93fe19a9ebc35d624b9dbed7d1d539ecaa (patch)
tree6503142e21a5dd36796bb99a4406f491e62d92e9 /aero-dav/src/xml.rs
parent2e7ffd4f4ca6ba82069290e0a3a70e85a3a79a7b (diff)
downloadaerogramme-d0c47b93fe19a9ebc35d624b9dbed7d1d539ecaa.tar.gz
aerogramme-d0c47b93fe19a9ebc35d624b9dbed7d1d539ecaa.zip
Rework webdav types
Diffstat (limited to 'aero-dav/src/xml.rs')
-rw-r--r--aero-dav/src/xml.rs19
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) {