webdav

package
v1.70.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 9, 2025 License: MIT Imports: 35 Imported by: 19

Documentation

Overview

Package webdav provides an interface to the Webdav object storage system.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrChunkSize is returned when the chunk size is zero
	ErrChunkSize = errors.New("tus chunk size must be greater than zero")
	// ErrNilLogger is returned when the logger is nil
	ErrNilLogger = errors.New("tus logger can't be nil")
	// ErrNilStore is returned when the store is nil
	ErrNilStore = errors.New("tus store can't be nil if resume is enable")
	// ErrNilUpload is returned when the upload is nil
	ErrNilUpload = errors.New("tus upload can't be nil")
	// ErrLargeUpload is returned when the upload body is to large
	ErrLargeUpload = errors.New("tus upload body is to large")
	// ErrVersionMismatch is returned when the tus protocol version is mismatching
	ErrVersionMismatch = errors.New("tus protocol version mismatch")
	// ErrOffsetMismatch is returned when the tus upload offset is mismatching
	ErrOffsetMismatch = errors.New("tus upload offset mismatch")
	// ErrUploadNotFound is returned when the tus upload is not found
	ErrUploadNotFound = errors.New("tus upload not found")
	// ErrResumeNotEnabled is returned when the tus resuming is not enabled
	ErrResumeNotEnabled = errors.New("tus resuming not enabled")
	// ErrFingerprintNotSet is returned when the tus fingerprint is not set
	ErrFingerprintNotSet = errors.New("tus fingerprint not set")
)

Functions

func NewFs

func NewFs(ctx context.Context, name, root string, m configmap.Mapper) (fs.Fs, error)

NewFs constructs an Fs from the path, container:path

Types

type ClientError added in v1.70.0

type ClientError struct {
	Code int
	Body []byte
}

ClientError represents an error state of a client

func (ClientError) Error added in v1.70.0

func (c ClientError) Error() string

Error returns an error string containing the client error code

type Fs

type Fs struct {
	// contains filtered or unexported fields
}

Fs represents a remote webdav

func (*Fs) About

func (f *Fs) About(ctx context.Context) (*fs.Usage, error)

About gets quota information

func (*Fs) Copy

func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object, error)

Copy src to this remote using server-side copy operations.

This is stored with the remote path given.

It returns the destination Object and a possible error.

Will only be called if src.Fs().Name() == f.Name()

If it isn't possible then return fs.ErrorCantCopy

func (*Fs) DirMove

func (f *Fs) DirMove(ctx context.Context, src fs.Fs, srcRemote, dstRemote string) error

DirMove moves src, srcRemote to this remote at dstRemote using server-side move operations.

Will only be called if src.Fs().Name() == f.Name()

If it isn't possible then return fs.ErrorCantDirMove

If destination exists then return fs.ErrorDirExists

func (*Fs) Features

func (f *Fs) Features() *fs.Features

Features returns the optional features of this Fs

func (*Fs) Hashes

func (f *Fs) Hashes() hash.Set

Hashes returns the supported hash sets.

func (*Fs) List

func (f *Fs) List(ctx context.Context, dir string) (entries fs.DirEntries, err error)

List the objects and directories in dir into entries. The entries can be returned in any order but should be for a complete directory.

dir should be "" to list the root, and should not have trailing slashes.

This should return ErrDirNotFound if the directory isn't found.

func (*Fs) Mkdir

func (f *Fs) Mkdir(ctx context.Context, dir string) error

Mkdir creates the directory if it doesn't exist

func (*Fs) Move

func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object, error)

Move src to this remote using server-side move operations.

This is stored with the remote path given.

It returns the destination Object and a possible error.

Will only be called if src.Fs().Name() == f.Name()

If it isn't possible then return fs.ErrorCantMove

func (*Fs) Name

func (f *Fs) Name() string

Name of the remote (as passed into NewFs)

func (*Fs) NewObject

func (f *Fs) NewObject(ctx context.Context, remote string) (fs.Object, error)

NewObject finds the Object at remote. If it can't be found it returns the error fs.ErrorObjectNotFound.

func (*Fs) Precision

func (f *Fs) Precision() time.Duration

Precision return the precision of this Fs

func (*Fs) Purge

func (f *Fs) Purge(ctx context.Context, dir string) error

Purge deletes all the files in the directory

Optional interface: Only implement this if you have a way of deleting all the files quicker than just running Remove() on the result of List()

func (*Fs) Put

func (f *Fs) Put(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (fs.Object, error)

Put the object

Copy the reader in to the new object which is returned.

The new object may have been created if an error is returned

func (*Fs) PutStream

func (f *Fs) PutStream(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (fs.Object, error)

PutStream uploads to the remote path with the modTime given of indeterminate size

func (*Fs) Rmdir

func (f *Fs) Rmdir(ctx context.Context, dir string) error

Rmdir deletes the root folder

Returns an error if it isn't empty

func (*Fs) Root

func (f *Fs) Root() string

Root of the remote (as passed into NewFs)

func (*Fs) String

func (f *Fs) String() string

String converts this Fs to a string

type Metadata added in v1.70.0

type Metadata map[string]string

Metadata is a typedef for a string to string map to hold metadata

type Object

type Object struct {
	// contains filtered or unexported fields
}

Object describes a webdav object

Will definitely have info but maybe not meta

func (*Object) CreateUploader added in v1.70.0

func (o *Object) CreateUploader(ctx context.Context, u *Upload, options ...fs.OpenOption) (*Uploader, error)

CreateUploader creates a new upload to the server.

func (*Object) Fs

func (o *Object) Fs() fs.Info

Fs returns the parent Fs

func (*Object) Hash

func (o *Object) Hash(ctx context.Context, t hash.Type) (string, error)

Hash returns the SHA1 or MD5 of an object returning a lowercase hex string

func (*Object) ModTime

func (o *Object) ModTime(ctx context.Context) time.Time

ModTime returns the modification time of the object

It attempts to read the objects mtime and if that isn't present the LastModified returned in the http headers

func (*Object) Open

func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (in io.ReadCloser, err error)

Open an object for read

func (*Object) Remote

func (o *Object) Remote() string

Remote returns the remote path

func (*Object) Remove

func (o *Object) Remove(ctx context.Context) error

Remove an object

func (*Object) SetModTime

func (o *Object) SetModTime(ctx context.Context, modTime time.Time) error

SetModTime sets the modification time of the local fs object

func (*Object) Size

func (o *Object) Size() int64

Size returns the size of an object in bytes

func (*Object) Storable

func (o *Object) Storable() bool

Storable returns a boolean showing whether this object storable

func (*Object) String

func (o *Object) String() string

Return a string version

func (*Object) Update

func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (err error)

Update the object with the contents of the io.Reader, modTime and size

If existing is set then it updates the object rather than creating a new one.

The new object may have been created if an error is returned

type Options

type Options struct {
	URL                string               `config:"url"`
	Vendor             string               `config:"vendor"`
	User               string               `config:"user"`
	Pass               string               `config:"pass"`
	BearerToken        string               `config:"bearer_token"`
	BearerTokenCommand string               `config:"bearer_token_command"`
	Enc                encoder.MultiEncoder `config:"encoding"`
	Headers            fs.CommaSepList      `config:"headers"`
	PacerMinSleep      fs.Duration          `config:"pacer_min_sleep"`
	ChunkSize          fs.SizeSuffix        `config:"nextcloud_chunk_size"`
	ExcludeShares      bool                 `config:"owncloud_exclude_shares"`
	ExcludeMounts      bool                 `config:"owncloud_exclude_mounts"`
	UnixSocket         string               `config:"unix_socket"`
	AuthRedirect       bool                 `config:"auth_redirect"`
}

Options defines the configuration for this backend

type Upload added in v1.70.0

type Upload struct {
	Fingerprint string
	Metadata    Metadata
	// contains filtered or unexported fields
}

Upload is a struct containing the file status during upload

func NewUpload added in v1.70.0

func NewUpload(reader io.Reader, size int64, metadata Metadata, fingerprint string) *Upload

NewUpload creates a new upload from an io.Reader.

func (*Upload) EncodedMetadata added in v1.70.0

func (u *Upload) EncodedMetadata() string

EncodedMetadata encodes the upload metadata.

func (*Upload) Finished added in v1.70.0

func (u *Upload) Finished() bool

Finished returns whether this upload is finished or not.

func (*Upload) Offset added in v1.70.0

func (u *Upload) Offset() int64

Offset returns the current upload offset.

func (*Upload) Progress added in v1.70.0

func (u *Upload) Progress() int64

Progress returns the progress in a percentage.

func (*Upload) Size added in v1.70.0

func (u *Upload) Size() int64

Size returns the size of the upload body.

type Uploader added in v1.70.0

type Uploader struct {
	// contains filtered or unexported fields
}

Uploader holds all information about a currently running upload

func NewUploader added in v1.70.0

func NewUploader(f *Fs, url string, upload *Upload, offset int64) *Uploader

NewUploader creates a new Uploader.

func (*Uploader) NotifyUploadProgress added in v1.70.0

func (u *Uploader) NotifyUploadProgress(c chan Upload)

NotifyUploadProgress subscribes to progress updates.

func (*Uploader) Upload added in v1.70.0

func (u *Uploader) Upload(ctx context.Context, options ...fs.OpenOption) error

Upload uploads the entire body to the server.

func (*Uploader) UploadChunk added in v1.70.0

func (u *Uploader) UploadChunk(ctx context.Context, cnt int, options ...fs.OpenOption) error

UploadChunk uploads a single chunk.

Directories

Path Synopsis
Package api has type definitions for webdav
Package api has type definitions for webdav
Package odrvcookie can fetch authentication cookies for a sharepoint webdav endpoint
Package odrvcookie can fetch authentication cookies for a sharepoint webdav endpoint

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL