mirror of
https://github.com/1f349/go-webdav.git
synced 2024-12-22 08:14:15 +00:00
caldav: add support for getcontentlength property
Allow the backend to provide a value for the `getcontentlength` property as described in [RFC 2518 section 13.4][1]. The implementation treats is as optional, allthough it is a required property per RFC. Most clients do perfectly fine without it, though. Properly setting this in the backend makes the CalDAV collection listable with clients that do require it, e.g. cadaver. [1]: https://datatracker.ietf.org/doc/html/rfc2518#section-13.4
This commit is contained in:
parent
cabaf3268b
commit
491af8e42c
@ -117,8 +117,9 @@ type CalendarMultiGet struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type CalendarObject struct {
|
type CalendarObject struct {
|
||||||
Path string
|
Path string
|
||||||
ModTime time.Time
|
ModTime time.Time
|
||||||
ETag string
|
ContentLength int64
|
||||||
Data *ical.Calendar
|
ETag string
|
||||||
|
Data *ical.Calendar
|
||||||
}
|
}
|
||||||
|
@ -465,6 +465,11 @@ func (b *backend) propfindCalendarObject(ctx context.Context, propfind *internal
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if co.ContentLength > 0 {
|
||||||
|
props[internal.GetContentLengthName] = func(*internal.RawXMLValue) (interface{}, error) {
|
||||||
|
return &internal.GetContentLength{Length: co.ContentLength}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
if !co.ModTime.IsZero() {
|
if !co.ModTime.IsZero() {
|
||||||
props[internal.GetLastModifiedName] = func(*internal.RawXMLValue) (interface{}, error) {
|
props[internal.GetLastModifiedName] = func(*internal.RawXMLValue) (interface{}, error) {
|
||||||
return &internal.GetLastModified{LastModified: internal.Time(co.ModTime)}, nil
|
return &internal.GetLastModified{LastModified: internal.Time(co.ModTime)}, nil
|
||||||
|
Loading…
Reference in New Issue
Block a user