caldav: add expand request to client

This commit is contained in:
Jonathan Liu
2024-08-18 15:07:19 -07:00
committed by Simon Ser
parent b689d5daff
commit 75c185517e
3 changed files with 28 additions and 2 deletions

View File

@@ -79,6 +79,12 @@ type CalendarCompRequest struct {
AllComps bool AllComps bool
Comps []CalendarCompRequest Comps []CalendarCompRequest
Expand *CalendarExpandRequest
}
type CalendarExpandRequest struct {
Start, End time.Time
} }
type CompFilter struct { type CompFilter struct {

View File

@@ -154,7 +154,9 @@ func encodeCalendarReq(c *CalendarCompRequest) (*internal.Prop, error) {
return nil, err return nil, err
} }
calDataReq := calendarDataReq{Comp: compReq} expandReq := encodeExpandRequest(c.Expand)
calDataReq := calendarDataReq{Comp: compReq, Expand: expandReq}
getLastModReq := internal.NewRawXMLElement(internal.GetLastModifiedName, nil, nil) getLastModReq := internal.NewRawXMLElement(internal.GetLastModifiedName, nil, nil)
getETagReq := internal.NewRawXMLElement(internal.GetETagName, nil, nil) getETagReq := internal.NewRawXMLElement(internal.GetETagName, nil, nil)
@@ -213,6 +215,17 @@ func encodeTextMatch(tm *TextMatch) *textMatch {
return encoded return encoded
} }
func encodeExpandRequest(e *CalendarExpandRequest) *expand {
if e == nil {
return nil
}
encoded := expand{
Start: dateWithUTCTime(e.Start),
End: dateWithUTCTime(e.End),
}
return &encoded
}
func decodeCalendarObjectList(ms *internal.MultiStatus) ([]CalendarObject, error) { func decodeCalendarObjectList(ms *internal.MultiStatus) ([]CalendarObject, error) {
addrs := make([]CalendarObject, 0, len(ms.Responses)) addrs := make([]CalendarObject, 0, len(ms.Responses))
for _, resp := range ms.Responses { for _, resp := range ms.Responses {

View File

@@ -179,7 +179,8 @@ func (t *dateWithUTCTime) MarshalText() ([]byte, error) {
type calendarDataReq struct { type calendarDataReq struct {
XMLName xml.Name `xml:"urn:ietf:params:xml:ns:caldav calendar-data"` XMLName xml.Name `xml:"urn:ietf:params:xml:ns:caldav calendar-data"`
Comp *comp `xml:"comp,omitempty"` Comp *comp `xml:"comp,omitempty"`
// TODO: expand, limit-recurrence-set, limit-freebusy-set Expand *expand `xml:"expand,omitempty"`
// TODO: limit-recurrence-set, limit-freebusy-set
} }
// https://tools.ietf.org/html/rfc4791#section-9.6.1 // https://tools.ietf.org/html/rfc4791#section-9.6.1
@@ -194,6 +195,12 @@ type comp struct {
Comp []comp `xml:"comp,omitempty"` Comp []comp `xml:"comp,omitempty"`
} }
type expand struct {
XMLName xml.Name `xml:"urn:ietf:params:xml:ns:caldav expand"`
Start dateWithUTCTime `xml:"start,attr"`
End dateWithUTCTime `xml:"end,attr"`
}
// https://tools.ietf.org/html/rfc4791#section-9.6.4 // https://tools.ietf.org/html/rfc4791#section-9.6.4
type prop struct { type prop struct {
XMLName xml.Name `xml:"urn:ietf:params:xml:ns:caldav prop"` XMLName xml.Name `xml:"urn:ietf:params:xml:ns:caldav prop"`