Documentation ¶
Overview ¶
Package webdav provides a client and server WebDAV filesystem implementation.
WebDAV is defined in RFC 4918.
Index ¶
- func NewHTTPError(statusCode int, cause error) error
- func ServePrincipal(w http.ResponseWriter, r *http.Request, options *ServePrincipalOptions)
- type BackendSuppliedHomeSet
- 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 CopyOptions
- 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) (*FileInfo, bool, 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) error
- func (fs LocalFileSystem) Stat(ctx context.Context, name string) (*FileInfo, error)
- type MoveOptions
- type ServePrincipalOptions
- type UserPrincipalBackend
Constants ¶
This section is empty.
Variables ¶
This section is empty.
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 BackendSuppliedHomeSet ¶
BackendSuppliedHomeSet represents either a CalDAV calendar-home-set or a CardDAV addressbook-home-set. It should only be created via caldav.NewCalendarHomeSet or carddav.NewAddressBookHomeSet. Only to be used server-side, for listing a user's home sets as determined by the (external) backend.
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 CopyOptions ¶
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) (fileInfo *FileInfo, created bool, err error) RemoveAll(ctx context.Context, name string) 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
}
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) (*FileInfo, bool, 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)
type MoveOptions ¶
type MoveOptions struct {
NoOverwrite bool
}
type ServePrincipalOptions ¶
type ServePrincipalOptions struct { CurrentUserPrincipalPath string HomeSets []BackendSuppliedHomeSet Capabilities []Capability }
ServePrincipalOptions holds options for ServePrincipal.
Directories ¶
Path | Synopsis |
---|---|
Package caldav provides a client and server CalDAV implementation.
|
Package caldav provides a client and server CalDAV implementation. |
Package carddav provides a client and server CardDAV implementation.
|
Package carddav provides a client and server CardDAV implementation. |
cmd
|
|
Package internal provides low-level helpers for WebDAV clients and servers.
|
Package internal provides low-level helpers for WebDAV clients and servers. |