From 1152b72a07fa1715abad0ddb5ab6e2e7b6d13eef Mon Sep 17 00:00:00 2001 From: emersion Date: Sat, 9 Sep 2017 16:45:31 +0200 Subject: [PATCH] carddav: add AddressBook.Info --- carddav/backend.go | 7 +++++++ carddav/carddav.go | 15 +++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/carddav/backend.go b/carddav/backend.go index 345c7e9..ca6b0ab 100644 --- a/carddav/backend.go +++ b/carddav/backend.go @@ -13,6 +13,12 @@ var ( ErrNotFound = errors.New("carddav: not found") ) +type AddressBookInfo struct { + Name string + Description string + MaxResourceSize int +} + type AddressObject interface { ID() string Card() (vcard.Card, error) @@ -20,6 +26,7 @@ type AddressObject interface { } type AddressBook interface { + Info() (*AddressBookInfo, error) GetAddressObject(id string) (AddressObject, error) ListAddressObjects() ([]AddressObject, error) } diff --git a/carddav/carddav.go b/carddav/carddav.go index ec42fa8..269db83 100644 --- a/carddav/carddav.go +++ b/carddav/carddav.go @@ -6,6 +6,7 @@ import ( "errors" "net/http" "os" + "strconv" "strings" "time" @@ -202,6 +203,11 @@ func (d *dir) Stat() (os.FileInfo, error) { } func (d *dir) DeadProps() (map[xml.Name]webdav.Property, error) { + info, err := d.fs.ab.Info() + if err != nil { + return nil, err + } + return map[xml.Name]webdav.Property{ resourcetype: webdav.Property{ XMLName: resourcetype, @@ -209,19 +215,20 @@ func (d *dir) DeadProps() (map[xml.Name]webdav.Property, error) { }, displayname: webdav.Property{ XMLName: displayname, - InnerXML: []byte("Test"), + InnerXML: []byte(info.Name), }, addressBookDescription: webdav.Property{ XMLName: addressBookDescription, - InnerXML: []byte("C'est juste un test mdr."), + InnerXML: []byte(info.Description), }, addressBookSupportedAddressData: webdav.Property{ XMLName: addressBookSupportedAddressData, - InnerXML: []byte(``), + InnerXML: []byte(`` + + ``), }, addressBookMaxResourceSize: webdav.Property{ XMLName: addressBookMaxResourceSize, - InnerXML: []byte("102400"), + InnerXML: []byte(strconv.Itoa(info.MaxResourceSize)), }, addressBookHomeSet: webdav.Property{ XMLName: addressBookHomeSet,