mirror of
https://github.com/1f349/go-webdav.git
synced 2024-12-22 08:14:15 +00:00
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:
parent
9ed4abce57
commit
a3e56141d9
@ -100,10 +100,11 @@ type AddressBookMultiGet struct {
|
||||
}
|
||||
|
||||
type AddressObject struct {
|
||||
Path string
|
||||
ModTime time.Time
|
||||
ETag string
|
||||
Card vcard.Card
|
||||
Path string
|
||||
ModTime time.Time
|
||||
ContentLength int64
|
||||
ETag string
|
||||
Card vcard.Card
|
||||
}
|
||||
|
||||
//SyncQuery is the query struct represents a sync-collection request
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user