mirror of
https://github.com/lennart-k/rustical.git
synced 2026-01-30 14:08:23 +00:00
carddav calendar-query: Add parsing support for limit
This commit is contained in:
@@ -105,4 +105,30 @@ pub struct AddressbookQueryRequest {
|
||||
pub prop: PropfindType<AddressObjectPropWrapperName>,
|
||||
#[xml(ns = "rustical_dav::namespace::NS_CARDDAV")]
|
||||
pub(crate) filter: FilterElement,
|
||||
#[xml(ns = "rustical_dav::namespace::NS_CARDDAV")]
|
||||
pub(crate) limit: Option<LimitElement>,
|
||||
}
|
||||
|
||||
// https://datatracker.ietf.org/doc/html/rfc5323#section-5.17
|
||||
#[derive(XmlDeserialize, Clone, Debug, PartialEq, Eq)]
|
||||
pub struct LimitElement {
|
||||
#[xml(ns = "rustical_dav::namespace::NS_CARDDAV")]
|
||||
pub nresults: NresultsElement,
|
||||
}
|
||||
|
||||
impl From<u64> for LimitElement {
|
||||
fn from(value: u64) -> Self {
|
||||
Self {
|
||||
nresults: NresultsElement(value),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<LimitElement> for u64 {
|
||||
fn from(value: LimitElement) -> Self {
|
||||
value.nresults.0
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(XmlDeserialize, Clone, Debug, PartialEq, Eq)]
|
||||
pub struct NresultsElement(#[xml(ty = "text")] pub u64);
|
||||
|
||||
@@ -159,7 +159,7 @@ mod tests {
|
||||
use crate::{
|
||||
address_object::AddressObjectPropName,
|
||||
addressbook::methods::report::addressbook_query::{
|
||||
Allof, FilterElement, PropFilterElement,
|
||||
Allof, FilterElement, LimitElement, NresultsElement, PropFilterElement,
|
||||
},
|
||||
};
|
||||
use rustical_dav::xml::{PropElement, sync_collection::SyncLevel};
|
||||
@@ -237,6 +237,9 @@ mod tests {
|
||||
<card:filter>
|
||||
<card:prop-filter name="FN"/>
|
||||
</card:filter>
|
||||
<card:limit>
|
||||
<card:nresults>100</card:nresults>
|
||||
</card:limit>
|
||||
</card:addressbook-query>
|
||||
"#,
|
||||
)
|
||||
@@ -259,8 +262,11 @@ mod tests {
|
||||
text_match: vec![],
|
||||
param_filter: vec![],
|
||||
test: Allof::default()
|
||||
}]
|
||||
}
|
||||
}],
|
||||
},
|
||||
limit: Some(LimitElement {
|
||||
nresults: NresultsElement(100)
|
||||
})
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user