Modify configuration structure. ()

This commit is contained in:
Antonio Navarro Perez 2021-04-04 19:24:58 +02:00 committed by GitHub
parent cfede1d8f1
commit 5bb067be1a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 352 additions and 170 deletions

View file

@ -16,16 +16,11 @@ import (
var _ webdav.FileSystem = &WebDAV{}
type WebDAV struct {
fss []fs.Filesystem
fs fs.Filesystem
}
func newFS(mFss map[string]fs.Filesystem) *WebDAV {
var fss []fs.Filesystem
for _, fs := range mFss {
fss = append(fss, fs)
}
return &WebDAV{fss: fss}
func newFS(fs fs.Filesystem) *WebDAV {
return &WebDAV{fs: fs}
}
func (wd *WebDAV) OpenFile(ctx context.Context, name string, flag int, perm os.FileMode) (webdav.File, error) {
@ -73,34 +68,18 @@ func (wd *WebDAV) Rename(ctx context.Context, oldName, newName string) error {
}
func (wd *WebDAV) lookupFile(path string) (fs.File, error) {
for _, f := range wd.fss {
file, err := f.Open(path)
if err == os.ErrNotExist {
continue
}
if err != nil {
return nil, err
}
if file != nil {
return file, nil
}
}
return nil, os.ErrNotExist
return wd.fs.Open(path)
}
func (wd *WebDAV) listDir(path string) ([]os.FileInfo, error) {
var out []os.FileInfo
for _, ifs := range wd.fss {
files, err := ifs.ReadDir(path)
if err != nil {
return nil, err
}
files, err := wd.fs.ReadDir(path)
if err != nil {
return nil, err
}
for n, f := range files {
out = append(out, newFileInfo(n, f.Size(), f.IsDir()))
}
var out []os.FileInfo
for n, f := range files {
out = append(out, newFileInfo(n, f.Size(), f.IsDir()))
}
return out, nil

View file

@ -5,10 +5,10 @@ import (
"golang.org/x/net/webdav"
)
func newHandler(fss map[string]fs.Filesystem) *webdav.Handler {
func newHandler(fs fs.Filesystem) *webdav.Handler {
return &webdav.Handler{
Prefix: "/",
FileSystem: newFS(fss),
FileSystem: newFS(fs),
LockSystem: webdav.NewMemLS(),
}
}

View file

@ -8,7 +8,7 @@ import (
"github.com/rs/zerolog/log"
)
func NewWebDAVServer(fss map[string]fs.Filesystem, port int) error {
func NewWebDAVServer(fs fs.Filesystem, port int) error {
log.Info().Str("host", fmt.Sprintf("0.0.0.0:%d", port)).Msg("starting webDAV server")
return http.ListenAndServe(fmt.Sprintf("0.0.0.0:%d", port), newHandler(fss))
return http.ListenAndServe(fmt.Sprintf("0.0.0.0:%d", port), newHandler(fs))
}