// ReadDir reads the contents of the directory associated with file and // returns a slice of FileInfo values in directory order. func ReadDir(fs webdav.FileSystem, name string) ([]os.FileInfo, error) { f, err := fs.OpenFile(context.Background(), name, os.O_RDONLY, 0) if err != nil { return nil, err } defer f.Close() return f.Readdir(0) }
// WriteFile writes data to a file named by name. // If the file does not exist, WriteFile creates it with permissions perm; // otherwise WriteFile truncates it before writing. func WriteFile(fs webdav.FileSystem, name string, data []byte, perm os.FileMode) error { f, err := fs.OpenFile(context.Background(), name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm) if err != nil { return err } n, err := f.Write(data) if err == nil && n < len(data) { err = io.ErrShortWrite } if err1 := f.Close(); err == nil { err = err1 } return err }
// Open opens the named file for reading. If successful, methods on // the returned file can be used for reading; the associated file // descriptor has mode O_RDONLY. // If there is an error, it will be of type *PathError. func Open(fs webdav.FileSystem, name string) (http.File, error) { return fs.OpenFile(context.Background(), name, os.O_RDONLY, 0) }
// Create creates the named file with mode 0644 (before umask), truncating // it if it already exists. If successful, methods on the returned // File can be used for I/O; the associated file descriptor has mode O_RDWR. // If there is an error, it will be of type *PathError. func Create(fs webdav.FileSystem, name string) (webdav.File, error) { return fs.OpenFile(context.Background(), name, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) }