webdav: replace os.FileInfo with our own type

This commit is contained in:
Simon Ser
2020-01-21 22:36:42 +01:00
parent 6023eb58a0
commit c673e7c7e7
4 changed files with 71 additions and 74 deletions

View File

@@ -32,15 +32,28 @@ func (fs LocalFileSystem) Open(name string) (io.ReadCloser, error) {
return os.Open(p)
}
func (fs LocalFileSystem) Stat(name string) (os.FileInfo, error) {
func fileInfoFromOS(href string, fi os.FileInfo) *FileInfo {
return &FileInfo{
Href: href,
Size: fi.Size(),
ModTime: fi.ModTime(),
IsDir: fi.IsDir(),
}
}
func (fs LocalFileSystem) Stat(name string) (*FileInfo, error) {
p, err := fs.path(name)
if err != nil {
return nil, err
}
return os.Stat(p)
fi, err := os.Stat(p)
if err != nil {
return nil, err
}
return fileInfoFromOS(name, fi), nil
}
func (fs LocalFileSystem) Readdir(name string) ([]os.FileInfo, error) {
func (fs LocalFileSystem) Readdir(name string) ([]FileInfo, error) {
p, err := fs.path(name)
if err != nil {
return nil, err
@@ -50,7 +63,17 @@ func (fs LocalFileSystem) Readdir(name string) ([]os.FileInfo, error) {
return nil, err
}
defer f.Close()
return f.Readdir(-1)
fis, err := f.Readdir(-1)
if err != nil {
return nil, err
}
l := make([]FileInfo, len(fis))
for i, fi := range fis {
l[i] = *fileInfoFromOS(path.Join(name, fi.Name()), fi)
}
return l, nil
}
func (fs LocalFileSystem) Create(name string) (io.WriteCloser, error) {