diff --git a/caldav/elements.go b/caldav/elements.go index a59a3d7..ab019c2 100644 --- a/caldav/elements.go +++ b/caldav/elements.go @@ -48,3 +48,44 @@ type maxResourceSize struct { XMLName xml.Name `xml:"urn:ietf:params:xml:ns:caldav max-resource-size"` Size int64 `xml:",chardata"` } + +// https://tools.ietf.org/html/rfc4791#section-9.5 +type calendarQuery struct { + XMLName xml.Name `xml:"urn:ietf:params:xml:ns:caldav calendar-query"` + Prop *internal.Prop `xml:"DAV: prop,omitempty"` + AllProp *struct{} `xml:"DAV: allprop,omitempty"` + PropName *struct{} `xml:"DAV: propname,omitempty"` + // TODO: filter, timezone +} + +// Request variant of https://tools.ietf.org/html/rfc4791#section-9.6 +type calendarDataReq struct { + XMLName xml.Name `xml:"urn:ietf:params:xml:ns:caldav calendar-data"` + Comp *comp `xml:"comp,omitempty"` + // TODO: expand, limit-recurrence-set, limit-freebusy-set +} + +// https://tools.ietf.org/html/rfc4791#section-9.6.1 +type comp struct { + XMLName xml.Name `xml:"urn:ietf:params:xml:ns:caldav comp"` + Name string `xml:"name,attr"` + + Allprop *struct{} `xml:"allprop,omitempty"` + Prop []prop `xml:"prop,omitempty"` + + Allcomp *struct{} `xml:"allcomp,omitempty"` + Comp []comp `xml:"comp,omitempty"` +} + +// https://tools.ietf.org/html/rfc4791#section-9.6.4 +type prop struct { + XMLName xml.Name `xml:"urn:ietf:params:xml:ns:caldav prop"` + Name string `xml:"name,attr"` + // TODO: novalue +} + +// Response variant of https://tools.ietf.org/html/rfc4791#section-9.6 +type calendarData struct { + XMLName xml.Name `xml:"urn:ietf:params:xml:ns:caldav calendar-data"` + Data []byte `xml:",chardata"` +}