carddav: 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 CardDAV 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:
Conrad Hoffmann
2022-05-17 15:12:12 +02:00
committed by Simon Ser
parent 9ed4abce57
commit a3e56141d9
2 changed files with 10 additions and 4 deletions

View File

@@ -441,6 +441,11 @@ func (b *backend) propfindAddressObject(ctx context.Context, propfind *internal.
},
}
if ao.ContentLength > 0 {
props[internal.GetContentLengthName] = func(*internal.RawXMLValue) (interface{}, error) {
return &internal.GetContentLength{Length: ao.ContentLength}, nil
}
}
if !ao.ModTime.IsZero() {
props[internal.GetLastModifiedName] = func(*internal.RawXMLValue) (interface{}, error) {
return &internal.GetLastModified{LastModified: internal.Time(ao.ModTime)}, nil