diff --git a/caldav/client.go b/caldav/client.go index bcbfddf..c63f5a9 100644 --- a/caldav/client.go +++ b/caldav/client.go @@ -191,6 +191,11 @@ func decodeCalendarObjectList(ms *internal.Multistatus) ([]CalendarObject, error return nil, err } + var getContentLength internal.GetContentLength + if err := resp.DecodeProp(&getContentLength); err != nil && !internal.IsNotFound(err) { + return nil, err + } + r := bytes.NewReader(calData.Data) data, err := ical.NewDecoder(r).Decode() if err != nil { @@ -198,10 +203,11 @@ func decodeCalendarObjectList(ms *internal.Multistatus) ([]CalendarObject, error } addrs = append(addrs, CalendarObject{ - Path: path, - ModTime: time.Time(getLastMod.LastModified), - ETag: string(getETag.ETag), - Data: data, + Path: path, + ModTime: time.Time(getLastMod.LastModified), + ContentLength: getContentLength.Length, + ETag: string(getETag.ETag), + Data: data, }) } @@ -277,6 +283,13 @@ func populateCalendarObject(co *CalendarObject, resp *http.Response) error { } co.ETag = etag } + if contentLength := resp.Header.Get("Content-Length"); contentLength != "" { + n, err := strconv.ParseInt(contentLength, 10, 64) + if err != nil { + return err + } + co.ContentLength = n + } if lastModified := resp.Header.Get("Last-Modified"); lastModified != "" { t, err := http.ParseTime(lastModified) if err != nil {