go-webdav/webdav.go
2022-05-02 16:14:48 +02:00

65 lines
990 B
Go

// Package webdav provides a client and server WebDAV filesystem implementation.
//
// WebDAV is defined in RFC 4918.
package webdav
import (
"io/fs"
"path"
"time"
)
type FileInfo struct {
Path string
Size int64
ModTime time.Time
IsDir bool
MIMEType string
ETag string
}
type fileInfo struct {
FileInfo
}
var (
_ fs.FileInfo = (*fileInfo)(nil)
_ fs.DirEntry = (*fileInfo)(nil)
)
func (fi *fileInfo) Name() string {
return path.Base(fi.Path)
}
func (fi *fileInfo) Size() int64 {
return fi.FileInfo.Size
}
func (fi *fileInfo) Mode() fs.FileMode {
var mode fs.FileMode
if fi.FileInfo.IsDir {
mode |= fs.ModeDir
}
return mode
}
func (fi *fileInfo) ModTime() time.Time {
return fi.FileInfo.ModTime
}
func (fi *fileInfo) IsDir() bool {
return fi.FileInfo.IsDir
}
func (fi *fileInfo) Sys() interface{} {
return nil
}
func (fi *fileInfo) Type() fs.FileMode {
return fi.Mode()
}
func (fi *fileInfo) Info() (fs.FileInfo, error) {
return fi, nil
}