mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-14 01:12:24 +00:00
Merge branch 'main' into sharing
This commit is contained in:
@@ -46,7 +46,7 @@ pub struct PropElement {
|
||||
}
|
||||
|
||||
#[derive(XmlDeserialize, XmlRootTag, Clone, Debug)]
|
||||
#[xml(root = b"mkcalendar")]
|
||||
#[xml(root = "mkcalendar")]
|
||||
#[xml(ns = "rustical_dav::namespace::NS_CALDAV")]
|
||||
struct MkcalendarRequest {
|
||||
#[xml(ns = "rustical_dav::namespace::NS_DAV")]
|
||||
@@ -54,7 +54,7 @@ struct MkcalendarRequest {
|
||||
}
|
||||
|
||||
#[derive(XmlDeserialize, XmlRootTag, Clone, Debug)]
|
||||
#[xml(root = b"mkcol")]
|
||||
#[xml(root = "mkcol")]
|
||||
#[xml(ns = "rustical_dav::namespace::NS_DAV")]
|
||||
struct MkcolRequest {
|
||||
#[xml(ns = "rustical_dav::namespace::NS_DAV")]
|
||||
|
||||
@@ -116,19 +116,17 @@ impl CompFilterElement {
|
||||
// TODO: Implement prop-filter (and comp-filter?) at some point
|
||||
|
||||
if let Some(time_range) = &self.time_range {
|
||||
if let Some(start) = &time_range.start {
|
||||
if let Some(last_occurence) = cal_object.get_last_occurence().unwrap_or(None) {
|
||||
if start.deref() > &last_occurence.utc() {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
if let Some(start) = &time_range.start
|
||||
&& let Some(last_occurence) = cal_object.get_last_occurence().unwrap_or(None)
|
||||
&& start.deref() > &last_occurence.utc()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if let Some(end) = &time_range.end {
|
||||
if let Some(first_occurence) = cal_object.get_first_occurence().unwrap_or(None) {
|
||||
if end.deref() < &first_occurence.utc() {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
if let Some(end) = &time_range.end
|
||||
&& let Some(first_occurence) = cal_object.get_first_occurence().unwrap_or(None)
|
||||
&& end.deref() < &first_occurence.utc()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
true
|
||||
@@ -156,15 +154,15 @@ impl From<&FilterElement> for CalendarQuery {
|
||||
for comp_filter in comp_filter_vcalendar.comp_filter.iter() {
|
||||
// A calendar object cannot contain both VEVENT and VTODO, so we only have to handle
|
||||
// whatever we get first
|
||||
if matches!(comp_filter.name.as_str(), "VEVENT" | "VTODO") {
|
||||
if let Some(time_range) = &comp_filter.time_range {
|
||||
let start = time_range.start.as_ref().map(|start| start.date_naive());
|
||||
let end = time_range.end.as_ref().map(|end| end.date_naive());
|
||||
return CalendarQuery {
|
||||
time_start: start,
|
||||
time_end: end,
|
||||
};
|
||||
}
|
||||
if matches!(comp_filter.name.as_str(), "VEVENT" | "VTODO")
|
||||
&& let Some(time_range) = &comp_filter.time_range
|
||||
{
|
||||
let start = time_range.start.as_ref().map(|start| start.date_naive());
|
||||
let end = time_range.end.as_ref().map(|end| end.date_naive());
|
||||
return CalendarQuery {
|
||||
time_start: start,
|
||||
time_end: end,
|
||||
};
|
||||
}
|
||||
}
|
||||
Default::default()
|
||||
|
||||
@@ -225,12 +225,12 @@ impl Resource for CalendarResource {
|
||||
}
|
||||
CalendarProp::TimezoneServiceSet(_) => Err(rustical_dav::Error::PropReadOnly),
|
||||
CalendarProp::CalendarTimezoneId(timezone_id) => {
|
||||
if let Some(tzid) = &timezone_id {
|
||||
if !vtimezones_rs::VTIMEZONES.contains_key(tzid) {
|
||||
return Err(rustical_dav::Error::BadRequest(format!(
|
||||
"Invalid timezone-id: {tzid}"
|
||||
)));
|
||||
}
|
||||
if let Some(tzid) = &timezone_id
|
||||
&& !vtimezones_rs::VTIMEZONES.contains_key(tzid)
|
||||
{
|
||||
return Err(rustical_dav::Error::BadRequest(format!(
|
||||
"Invalid timezone-id: {tzid}"
|
||||
)));
|
||||
}
|
||||
self.cal.timezone_id = timezone_id;
|
||||
Ok(())
|
||||
|
||||
@@ -16,13 +16,13 @@ pub enum PrincipalProp {
|
||||
CalendarUserAddressSet(HrefElement),
|
||||
|
||||
// WebDAV Access Control (RFC 3744)
|
||||
#[xml(ns = "rustical_dav::namespace::NS_DAV", rename = b"principal-URL")]
|
||||
#[xml(ns = "rustical_dav::namespace::NS_DAV", rename = "principal-URL")]
|
||||
PrincipalUrl(HrefElement),
|
||||
#[xml(ns = "rustical_dav::namespace::NS_DAV")]
|
||||
GroupMembership(GroupMembership),
|
||||
#[xml(ns = "rustical_dav::namespace::NS_DAV")]
|
||||
GroupMemberSet(GroupMemberSet),
|
||||
#[xml(ns = "rustical_dav::namespace::NS_DAV", rename = b"alternate-URI-set")]
|
||||
#[xml(ns = "rustical_dav::namespace::NS_DAV", rename = "alternate-URI-set")]
|
||||
AlternateUriSet,
|
||||
// #[xml(ns = "rustical_dav::namespace::NS_DAV")]
|
||||
// PrincipalCollectionSet(HrefElement),
|
||||
|
||||
@@ -79,5 +79,5 @@ async fn test_propfind() {
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let output = response.serialize_to_string().unwrap();
|
||||
let _output = response.serialize_to_string().unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user