From 4e4a5abed239a37aefa78526044aa63b47a6c21b Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 21 Jan 2020 19:59:09 +0100 Subject: [PATCH] webdav: remove File.Readdir, add FileSystem.Readdir References: https://github.com/emersion/go-webdav/issues/15 --- fs_local.go | 13 +++++++++++++ server.go | 10 ++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/fs_local.go b/fs_local.go index 67f8d6d..97b10d7 100644 --- a/fs_local.go +++ b/fs_local.go @@ -39,4 +39,17 @@ func (fs LocalFileSystem) Stat(name string) (os.FileInfo, error) { return os.Stat(p) } +func (fs LocalFileSystem) Readdir(name string) ([]os.FileInfo, error) { + p, err := fs.path(name) + if err != nil { + return nil, err + } + f, err := os.Open(p) + if err != nil { + return nil, err + } + defer f.Close() + return f.Readdir(-1) +} + var _ FileSystem = LocalFileSystem("") diff --git a/server.go b/server.go index 3078db0..93ea718 100644 --- a/server.go +++ b/server.go @@ -15,12 +15,12 @@ type File interface { io.Closer io.Reader io.Seeker - Readdir(count int) ([]os.FileInfo, error) } type FileSystem interface { Open(name string) (File, error) Stat(name string) (os.FileInfo, error) + Readdir(name string) ([]os.FileInfo, error) } type Handler struct { @@ -109,13 +109,7 @@ func (b *backend) propfind(propfind *internal.Propfind, name string, fi os.FileI childDepth = internal.DepthZero } - f, err := b.FileSystem.Open(name) - if err != nil { - return err - } - defer f.Close() - - children, err := f.Readdir(-1) + children, err := b.FileSystem.Readdir(name) if err != nil { return err }