Konstantin Lebedev
12 months ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
14 additions and
0 deletions
-
weed/server/webdav_server.go
-
weed/server/wrapped_webdav_fs.go
|
|
@ -96,6 +96,7 @@ type FileInfo struct { |
|
|
|
size int64 |
|
|
|
mode os.FileMode |
|
|
|
modifiedTime time.Time |
|
|
|
etag string |
|
|
|
isDirectory bool |
|
|
|
} |
|
|
|
|
|
|
@ -106,6 +107,10 @@ func (fi *FileInfo) ModTime() time.Time { return fi.modifiedTime } |
|
|
|
func (fi *FileInfo) IsDir() bool { return fi.isDirectory } |
|
|
|
func (fi *FileInfo) Sys() interface{} { return nil } |
|
|
|
|
|
|
|
func (fi *FileInfo) ETag(ctx context.Context) (string, error) { |
|
|
|
return fi.etag, nil |
|
|
|
} |
|
|
|
|
|
|
|
type WebDavFile struct { |
|
|
|
fs *WebDavFileSystem |
|
|
|
name string |
|
|
@ -369,6 +374,7 @@ func (fs *WebDavFileSystem) stat(ctx context.Context, fullFilePath string) (os.F |
|
|
|
fi.name = string(fullpath) |
|
|
|
fi.mode = os.FileMode(entry.Attributes.FileMode) |
|
|
|
fi.modifiedTime = time.Unix(entry.Attributes.Mtime, 0) |
|
|
|
fi.etag = filer.ETag(entry) |
|
|
|
fi.isDirectory = entry.IsDirectory |
|
|
|
|
|
|
|
if fi.name == "/" { |
|
|
|
|
|
@ -95,3 +95,11 @@ func (w wrappedFileInfo) Name() string { |
|
|
|
name := w.FileInfo.Name() |
|
|
|
return strings.TrimPrefix(name, *w.subFolder) |
|
|
|
} |
|
|
|
|
|
|
|
func (w wrappedFileInfo) ETag(ctx context.Context) (string, error) { |
|
|
|
etag, _ := w.FileInfo.(webdav.ETager).ETag(ctx) |
|
|
|
if len(etag) == 0 { |
|
|
|
return etag, webdav.ErrNotImplemented |
|
|
|
} |
|
|
|
return etag, nil |
|
|
|
} |