Documentation
¶
Overview ¶
Package webdav provides a client and server WebDAV filesystem implementation.
WebDAV is defined in RFC 4918.
Index ¶
- Constants
- Variables
- func New(config ...Config) fiber.Handler
- func NewHTTPError(statusCode int, cause error) error
- func ServePrincipal(w http.ResponseWriter, r *http.Request, options *ServePrincipalOptions)
- type Capability
- type Client
- func (c *Client) Copy(ctx context.Context, name, dest string, options *CopyOptions) error
- func (c *Client) Create(ctx context.Context, name string) (io.WriteCloser, error)
- func (c *Client) FindCurrentUserPrincipal(ctx context.Context) (string, error)
- func (c *Client) Mkdir(ctx context.Context, name string) error
- func (c *Client) Move(ctx context.Context, name, dest string, options *MoveOptions) error
- func (c *Client) Open(ctx context.Context, name string) (io.ReadCloser, error)
- func (c *Client) ReadDir(ctx context.Context, name string, recursive bool) ([]FileInfo, error)
- func (c *Client) RemoveAll(ctx context.Context, name string) error
- func (c *Client) Stat(ctx context.Context, name string) (*FileInfo, error)
- type ConditionalMatch
- type Config
- type CopyOptions
- type CreateOptions
- type FileInfo
- type FileSystem
- type HTTPClient
- type Handler
- type LocalFileSystem
- func (fs LocalFileSystem) Copy(ctx context.Context, src, dst string, options *CopyOptions) (created bool, err error)
- func (fs LocalFileSystem) Create(ctx context.Context, name string, body io.ReadCloser, opts *CreateOptions) (fi *FileInfo, created bool, err error)
- func (fs LocalFileSystem) Mkdir(ctx context.Context, name string) error
- func (fs LocalFileSystem) Move(ctx context.Context, src, dst string, options *MoveOptions) (created bool, err error)
- func (fs LocalFileSystem) Open(ctx context.Context, name string) (io.ReadCloser, error)
- func (fs LocalFileSystem) ReadDir(ctx context.Context, name string, recursive bool) ([]FileInfo, error)
- func (fs LocalFileSystem) RemoveAll(ctx context.Context, name string, opts *RemoveAllOptions) error
- func (fs LocalFileSystem) Stat(ctx context.Context, name string) (*FileInfo, error)
- type LockSystem
- type MoveOptions
- type RemoveAllOptions
- type ServePrincipalOptions
- type UserPrincipalBackend
Constants ¶
const ( MethodMkcol = "MKCOL" MethodCopy = "COPY" MethodMove = "MOVE" MethodLock = "LOCK" MethodUnlock = "UNLOCK" MethodPropfind = "PROPFIND" MethodProppatch = "PROPPATCH" )
Variables ¶
var ExtendedMethods = append(fiber.DefaultMethods[:], Methods...)
var Methods = []string{ MethodMkcol, MethodCopy, MethodMove, MethodLock, MethodUnlock, MethodPropfind, MethodProppatch, }
Functions ¶
func NewHTTPError ¶
NewHTTPError creates a new error that is associated with an HTTP status code and optionally an error that lead to it. Backends can use this functions to return errors that convey some semantics (e.g. 404 not found, 403 access denied, etc.) while also providing an (optional) arbitrary error context (intended for humans).
func ServePrincipal ¶
func ServePrincipal(w http.ResponseWriter, r *http.Request, options *ServePrincipalOptions)
ServePrincipal replies to requests for a principal URL.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client provides access to a remote WebDAV filesystem.
func NewClient ¶
func NewClient(c HTTPClient, endpoint string) (*Client, error)
NewClient creates a new WebDAV client.
If the HTTPClient is nil, http.DefaultClient is used.
To use HTTP basic authentication, HTTPClientWithBasicAuth can be used.
func (*Client) Copy ¶
Copy copies a file.
By default, if the file is a directory, all descendants are recursively copied as well.
func (*Client) FindCurrentUserPrincipal ¶
FindCurrentUserPrincipal finds the current user's principal path.
type ConditionalMatch ¶
type ConditionalMatch string
ConditionalMatch represents the value of a conditional header according to RFC 2068 section 14.25 and RFC 2068 section 14.26 The (optional) value can either be a wildcard or an ETag.
func (ConditionalMatch) ETag ¶
func (val ConditionalMatch) ETag() (string, error)
func (ConditionalMatch) IsSet ¶
func (val ConditionalMatch) IsSet() bool
func (ConditionalMatch) IsWildcard ¶
func (val ConditionalMatch) IsWildcard() bool
type Config ¶
type Config struct {
// Prefix is the URL path prefix to mount the WebDAV server on
Prefix string
// Root is the base directory for the WebDAV server
Root FileSystem
// Lock enables WebDAV locking support
Lock bool
}
type CopyOptions ¶
type CreateOptions ¶
type CreateOptions struct {
IfMatch ConditionalMatch
IfNoneMatch ConditionalMatch
}
type FileInfo ¶
type FileInfo struct {
Path string
Size int64
ModTime time.Time
IsDir bool
MIMEType string
ETag string
}
FileInfo holds information about a WebDAV file.
type FileSystem ¶
type FileSystem interface {
Open(ctx context.Context, name string) (io.ReadCloser, error)
Stat(ctx context.Context, name string) (*FileInfo, error)
ReadDir(ctx context.Context, name string, recursive bool) ([]FileInfo, error)
Create(ctx context.Context, name string, body io.ReadCloser, opts *CreateOptions) (fileInfo *FileInfo, created bool, err error)
RemoveAll(ctx context.Context, name string, opts *RemoveAllOptions) error
Mkdir(ctx context.Context, name string) error
Copy(ctx context.Context, name, dest string, options *CopyOptions) (created bool, err error)
Move(ctx context.Context, name, dest string, options *MoveOptions) (created bool, err error)
}
FileSystem is a WebDAV server backend.
type HTTPClient ¶
HTTPClient performs HTTP requests. It's implemented by *http.Client.
func HTTPClientWithBasicAuth ¶
func HTTPClientWithBasicAuth(c HTTPClient, username, password string) HTTPClient
HTTPClientWithBasicAuth returns an HTTP client that adds basic authentication to all outgoing requests. If c is nil, http.DefaultClient is used.
type Handler ¶
type Handler struct {
FileSystem FileSystem
LockSystem *LockSystem
// contains filtered or unexported fields
}
Handler handles WebDAV HTTP requests. It can be used to create a WebDAV server.
type LocalFileSystem ¶
type LocalFileSystem string
LocalFileSystem implements FileSystem for a local directory.
func (LocalFileSystem) Copy ¶
func (fs LocalFileSystem) Copy(ctx context.Context, src, dst string, options *CopyOptions) (created bool, err error)
func (LocalFileSystem) Create ¶
func (fs LocalFileSystem) Create(ctx context.Context, name string, body io.ReadCloser, opts *CreateOptions) (fi *FileInfo, created bool, err error)
func (LocalFileSystem) Mkdir ¶
func (fs LocalFileSystem) Mkdir(ctx context.Context, name string) error
func (LocalFileSystem) Move ¶
func (fs LocalFileSystem) Move(ctx context.Context, src, dst string, options *MoveOptions) (created bool, err error)
func (LocalFileSystem) Open ¶
func (fs LocalFileSystem) Open(ctx context.Context, name string) (io.ReadCloser, error)
func (LocalFileSystem) RemoveAll ¶
func (fs LocalFileSystem) RemoveAll(ctx context.Context, name string, opts *RemoveAllOptions) error
type LockSystem ¶
type LockSystem struct {
// contains filtered or unexported fields
}
LockSystem provides an in-memory implementation of WebDAV locks.
func GetGlobalLockSystem ¶
func GetGlobalLockSystem() *LockSystem
GetGlobalLockSystem returns the global lock system, creating it if necessary.
func NewLockSystem ¶
func NewLockSystem() *LockSystem
NewLockSystem creates a new in-memory lock system.
func (*LockSystem) CleanExpiredLocks ¶
func (ls *LockSystem) CleanExpiredLocks()
CleanExpiredLocks removes expired locks.
type MoveOptions ¶
type MoveOptions struct {
NoOverwrite bool
}
type RemoveAllOptions ¶
type RemoveAllOptions struct {
IfMatch ConditionalMatch
IfNoneMatch ConditionalMatch
}
type ServePrincipalOptions ¶
type ServePrincipalOptions struct {
CurrentUserPrincipalPath string
Capabilities []Capability
}
ServePrincipalOptions holds options for ServePrincipal.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
webdav-server
command
|
|
|
Package internal provides low-level helpers for WebDAV clients and servers.
|
Package internal provides low-level helpers for WebDAV clients and servers. |