From 25dfbaf95ee6578648e4466968d38338a2dcc0e0 Mon Sep 17 00:00:00 2001 From: Konstantinos Koukas Date: Tue, 12 Apr 2022 10:18:59 +0300 Subject: [PATCH] caldav: add supported-calendar-component-set field --- caldav/caldav.go | 9 +++++---- caldav/client.go | 20 ++++++++++++++++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/caldav/caldav.go b/caldav/caldav.go index 62cc94d..6bb01e9 100644 --- a/caldav/caldav.go +++ b/caldav/caldav.go @@ -10,10 +10,11 @@ import ( ) type Calendar struct { - Path string - Name string - Description string - MaxResourceSize int64 + Path string + Name string + Description string + MaxResourceSize int64 + SupportedComponentSet []string } type CalendarCompRequest struct { diff --git a/caldav/client.go b/caldav/client.go index 8f7952e..bcbfddf 100644 --- a/caldav/client.go +++ b/caldav/client.go @@ -55,6 +55,7 @@ func (c *Client) FindCalendars(calendarHomeSet string) ([]Calendar, error) { internal.DisplayNameName, calendarDescriptionName, maxResourceSizeName, + supportedCalendarComponentSetName, ) ms, err := c.ic.Propfind(calendarHomeSet, internal.DepthOne, propfind) if err != nil { @@ -94,11 +95,22 @@ func (c *Client) FindCalendars(calendarHomeSet string) ([]Calendar, error) { return nil, fmt.Errorf("carddav: max-resource-size must be a positive integer") } + var supportedCompSet supportedCalendarComponentSet + if err := resp.DecodeProp(&supportedCompSet); err != nil && !internal.IsNotFound(err) { + return nil, err + } + + compNames := make([]string, 0, len(supportedCompSet.Comp)) + for _, comp := range supportedCompSet.Comp { + compNames = append(compNames, comp.Name) + } + l = append(l, Calendar{ - Path: path, - Name: dispName.Name, - Description: desc.Description, - MaxResourceSize: maxResSize.Size, + Path: path, + Name: dispName.Name, + Description: desc.Description, + MaxResourceSize: maxResSize.Size, + SupportedComponentSet: compNames, }) }