Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ComposableFS ¶ added in v2.20.0
type ComposableFS interface {
UseIn(composer *tusd.StoreComposer)
}
Composable is the interface that a struct needs to implement to be composable, so that it can support the TUS methods
type FS ¶
type FS interface { // Shutdown is called when the process is exiting to give the driver a chance to flush and close all open handles Shutdown(ctx context.Context) error // ListStorageSpaces lists the spaces in the storage. // FIXME The unrestricted parameter is an implementation detail of decomposedfs, remove it from the function? ListStorageSpaces(ctx context.Context, filter []*provider.ListStorageSpacesRequest_Filter, unrestricted bool) ([]*provider.StorageSpace, error) // GetQuota returns the quota on the referenced resource GetQuota(ctx context.Context, ref *provider.Reference) (uint64, uint64, uint64, error) // GetMD returns the resuorce info for the referenced resource GetMD(ctx context.Context, ref *provider.Reference, mdKeys, fieldMask []string) (*provider.ResourceInfo, error) // ListFolder returns the resource infos for all children of the referenced resource ListFolder(ctx context.Context, ref *provider.Reference, mdKeys, fieldMask []string) ([]*provider.ResourceInfo, error) // Download returns a ReadCloser for the content of the referenced resource Download(ctx context.Context, ref *provider.Reference, openReaderfunc func(*provider.ResourceInfo) bool) (*provider.ResourceInfo, io.ReadCloser, error) // GetPathByID returns the path for the given resource id relative to the space root // It should only reveal the path visible to the current user to not leak the names uf unshared parent resources // FIXME should be deprecated in favor of calls to GetMD and the fieldmask 'path' GetPathByID(ctx context.Context, id *provider.ResourceId) (string, error) // CreateReference creates a resource of type reference CreateReference(ctx context.Context, path string, targetURI *url.URL) error // CreateDir creates a resource of type container CreateDir(ctx context.Context, ref *provider.Reference) error // TouchFile sets the mtime of a resource, creating an empty file if it does not exist // FIXME the markprocessing flag is an implementation detail of decomposedfs, remove it from the function // FIXME the mtime should either be a time.Time or a CS3 Timestamp, not a string TouchFile(ctx context.Context, ref *provider.Reference, markprocessing bool, mtime string) error // Delete deletes a resource. // If the storage driver supports a recycle bin it should moves it to the recycle bin Delete(ctx context.Context, ref *provider.Reference) error // Move changes the path of a resource Move(ctx context.Context, oldRef, newRef *provider.Reference) error // InitiateUpload returns a list of protocols with urls that can be used to append bytes to a new upload session InitiateUpload(ctx context.Context, ref *provider.Reference, uploadLength int64, metadata map[string]string) (map[string]string, error) // Upload creates or updates a resource of type file with a new revision Upload(ctx context.Context, req UploadRequest, uploadFunc UploadFinishedFunc) (*provider.ResourceInfo, error) // ListRevisions lists all revisions for the referenced resource ListRevisions(ctx context.Context, ref *provider.Reference) ([]*provider.FileVersion, error) // DownloadRevision downloads a revision DownloadRevision(ctx context.Context, ref *provider.Reference, key string, openReaderFunc func(md *provider.ResourceInfo) bool) (*provider.ResourceInfo, io.ReadCloser, error) // RestoreRevision restores a revision RestoreRevision(ctx context.Context, ref *provider.Reference, key string) error // ListRecycle lists the content of the recycle bin ListRecycle(ctx context.Context, ref *provider.Reference, key, relativePath string) ([]*provider.RecycleItem, error) // RestoreRecycleItem restores an item from the recyle bin // if restoreRef is nil the resource should be restored at the original path RestoreRecycleItem(ctx context.Context, ref *provider.Reference, key, relativePath string, restoreRef *provider.Reference) error // PurgeRecycleItem removes a resource from the recycle bin PurgeRecycleItem(ctx context.Context, ref *provider.Reference, key, relativePath string) error // EmptyRecycle removes all resource from the recycle bin EmptyRecycle(ctx context.Context, ref *provider.Reference) error // AddGrant adds a grant to a resource AddGrant(ctx context.Context, ref *provider.Reference, g *provider.Grant) error // DenyGrant marks a resource as denied for a recipient // The resource and its children must be completely hidden for the recipient DenyGrant(ctx context.Context, ref *provider.Reference, g *provider.Grantee) error // RemoveGrant removes a grant from a resource RemoveGrant(ctx context.Context, ref *provider.Reference, g *provider.Grant) error // UpdateGrant updates a grant on a resource UpdateGrant(ctx context.Context, ref *provider.Reference, g *provider.Grant) error // ListGrants lists all grants on a resource ListGrants(ctx context.Context, ref *provider.Reference) ([]*provider.Grant, error) // SetArbitraryMetadata sets arbitraty metadata on a resource SetArbitraryMetadata(ctx context.Context, ref *provider.Reference, md *provider.ArbitraryMetadata) error // UnsetArbitraryMetadata removes arbitraty metadata from a resource UnsetArbitraryMetadata(ctx context.Context, ref *provider.Reference, keys []string) error // GetLock returns an existing lock on the given reference GetLock(ctx context.Context, ref *provider.Reference) (*provider.Lock, error) // SetLock puts a lock on the given reference SetLock(ctx context.Context, ref *provider.Reference, lock *provider.Lock) error // RefreshLock refreshes an existing lock on the given reference RefreshLock(ctx context.Context, ref *provider.Reference, lock *provider.Lock, existingLockID string) error // Unlock removes an existing lock from the given reference Unlock(ctx context.Context, ref *provider.Reference, lock *provider.Lock) error // CreateStorageSpace creates a storage space CreateStorageSpace(ctx context.Context, req *provider.CreateStorageSpaceRequest) (*provider.CreateStorageSpaceResponse, error) // UpdateStorageSpace updates a storage space UpdateStorageSpace(ctx context.Context, req *provider.UpdateStorageSpaceRequest) (*provider.UpdateStorageSpaceResponse, error) // DeleteStorageSpace deletes a storage space DeleteStorageSpace(ctx context.Context, req *provider.DeleteStorageSpaceRequest) error // CreateHome creates a users home // Deprecated: use CreateStorageSpace with type personal CreateHome(ctx context.Context) error // GetHome returns the path to the users home // Deprecated: use ListStorageSpaces with type personal GetHome(ctx context.Context) (string, error) }
FS is the interface to implement access to the storage.
type PathWrapper ¶
type PathWrapper interface { Unwrap(ctx context.Context, rp string) (string, error) Wrap(ctx context.Context, rp string) (string, error) }
PathWrapper is the interface to implement for path transformations
type Registry ¶
type Registry interface { // GetProvider returns the Address of the storage provider that should be used for the given space. // Use it to determine where to create a new storage space. GetProvider(ctx context.Context, space *provider.StorageSpace) (*registry.ProviderInfo, error) // ListProviders returns the storage providers that match the given filter ListProviders(ctx context.Context, filters map[string]string) ([]*registry.ProviderInfo, error) }
Registry is the interface that storage registries implement for discovering storage providers
type UnscopeFunc ¶ added in v2.20.0
type UnscopeFunc func()
UnscopeFunc is a function that unscopes a user
type UploadFinishedFunc ¶ added in v2.4.0
UploadFinishedFunc is a callback function used in storage drivers to indicate that an upload has finished
type UploadRequest ¶ added in v2.16.4
type UploadRequest struct { Ref *provider.Reference Body io.ReadCloser Length int64 }
UploadRequest us used in FS.Upload() to carry required upload metadata
type UploadSession ¶ added in v2.16.4
type UploadSession interface { // ID returns the upload id ID() string // Filename returns the filename of the file Filename() string // Size returns the size of the upload Size() int64 // Offset returns the current offset Offset() int64 // Reference returns a reference for the file being uploaded. May be absolute id based or relative to e.g. a space root Reference() provider.Reference // Executant returns the userid of the user that created the upload Executant() userpb.UserId // SpaceOwner returns the owner of a space if set. optional SpaceOwner() *userpb.UserId // Expires returns the time when the upload can no longer be used Expires() time.Time // IsProcessing returns true if postprocessing has not finished, yet // The actual postprocessing state is tracked in the postprocessing service. IsProcessing() bool // Purge allows completely removing an upload. Should emit a PostprocessingFinished event with a Delete outcome Purge(ctx context.Context) error // ScanData returns the scan data for the UploadSession ScanData() (string, time.Time) }
UploadSession is the interface that storage drivers need to return whan listing upload sessions.
type UploadSessionFilter ¶ added in v2.16.4
UploadSessionFilter can be used to filter upload sessions
type UploadSessionLister ¶ added in v2.16.4
type UploadSessionLister interface { // ListUploadSessions returns the upload sessions matching the given filter ListUploadSessions(ctx context.Context, filter UploadSessionFilter) ([]UploadSession, error) }
UploadSessionLister defines the interface for FS implementations that allow listing and purging upload sessions
type UploadsManager ¶ added in v2.7.3
type UploadsManager interface { ListUploads() ([]tusd.FileInfo, error) PurgeExpiredUploads(chan<- tusd.FileInfo) error }
UploadsManager defines the interface for storage drivers that allow for managing uploads Deprecated: No longer used. Storage drivers should implement the UploadSessionLister.
Directories ¶
Path | Synopsis |
---|---|
fs
|
|
utils
|
|
indexer
Package indexer provides symlink-based indexer for on-disk document-directories.
|
Package indexer provides symlink-based indexer for on-disk document-directories. |
templates
Package templates contains data-driven templates for path layouts.
|
Package templates contains data-driven templates for path layouts. |