1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
12 "golang.org/x/net/context"
13 "golang.org/x/net/webdav"
16 var errReadOnly = errors.New("read-only filesystem")
18 // webdavFS implements a read-only webdav.FileSystem by wrapping
20 type webdavFS struct {
21 httpfs http.FileSystem
24 var _ webdav.FileSystem = &webdavFS{}
26 func (fs *webdavFS) Mkdir(ctx context.Context, name string, perm os.FileMode) error {
30 func (fs *webdavFS) OpenFile(ctx context.Context, name string, flag int, perm os.FileMode) (webdav.File, error) {
31 f, err := fs.httpfs.Open(name)
35 return &webdavFile{File: f}, nil
38 func (fs *webdavFS) RemoveAll(ctx context.Context, name string) error {
42 func (fs *webdavFS) Rename(ctx context.Context, oldName, newName string) error {
46 func (fs *webdavFS) Stat(ctx context.Context, name string) (os.FileInfo, error) {
47 if f, err := fs.httpfs.Open(name); err != nil {
54 // webdavFile implements a read-only webdav.File by wrapping
55 // http.File. Writes fail.
56 type webdavFile struct {
60 func (f *webdavFile) Write([]byte) (int, error) {