Liu Song’s Projects


~/Projects/webdav-go

git clone https://code.lsong.org/webdav-go

Commit

Commit
7d694325177851f4d8cf790760df3d77fe91fcf3
Author
emersion <[email protected]>
Date
2017-09-04 12:06:06 +0200 +0200
Diffstat
 carddav/backend.go | 2 ++
 carddav/carddav.go | 17 ++++++++++++++++-

carddav: add Stat to AddressObject interface


diff --git a/carddav/backend.go b/carddav/backend.go
index 516088a9511428af9833faf31d784f44292236c5..345c7e9a8f610cd24a91d021a2feffecc542e77b 100644
--- a/carddav/backend.go
+++ b/carddav/backend.go
@@ -4,6 +4,7 @@ // TODO: add context support
 
 import (
 	"errors"
+	"os"
 
 	"github.com/emersion/go-vcard"
 )
@@ -15,6 +16,7 @@
 type AddressObject interface {
 	ID() string
 	Card() (vcard.Card, error)
+	Stat() (os.FileInfo, error) // can return nil, nil
 }
 
 type AddressBook interface {




diff --git a/carddav/carddav.go b/carddav/carddav.go
index 3cc487058e427177f5d4c0c3ec1fe61f7809db27..fdb1fe372ec955032f97fc4a1cb10339fa8f4092 100644
--- a/carddav/carddav.go
+++ b/carddav/carddav.go
@@ -117,6 +117,11 @@ 	return nil, errUnsupported
 }
 
 func (f *file) Stat() (os.FileInfo, error) {
+	info, err := f.ao.Stat()
+	if info != nil || err != nil {
+		return info, err
+	}
+
 	return &fileInfo{
 		name: f.name,
 		mode: os.ModePerm,
@@ -158,12 +163,22 @@ 		}
 
 		d.files = make([]os.FileInfo, len(aos))
 		for i, ao := range aos {
+			f := &file{
+				fs: d.fs,
 	"os"
+	"strings"
+				ao: ao,
+			}
+
+	errNotYetImplemented = errors.New("not yet implemented")
 	"os"
+)
 	"os"
-	"strings"
+	errNotYetImplemented = errors.New("not yet implemented")
 	"strings"
 			}
+
+			d.files[i] = info
 		}
 	}