Documentation
¶
Index ¶
- Variables
- func AddFileIndexes(catalog *coal.Catalog)
- type Blob
- type ClaimKey
- type File
- type GridFS
- func (g *GridFS) Cleanup(_ context.Context) error
- func (g *GridFS) Delete(ctx context.Context, handle Handle) (bool, error)
- func (g *GridFS) Download(ctx context.Context, handle Handle, w io.Writer) error
- func (g *GridFS) Prepare(_ context.Context) (Handle, error)
- func (g *GridFS) Upload(ctx context.Context, handle Handle, _ string, r io.Reader) (int64, error)
- type Handle
- type Link
- type Memory
- func (s *Memory) Cleanup(_ context.Context) error
- func (s *Memory) Delete(_ context.Context, handle Handle) (bool, error)
- func (s *Memory) Download(_ context.Context, handle Handle, w io.Writer) error
- func (s *Memory) Prepare(_ context.Context) (Handle, error)
- func (s *Memory) Upload(_ context.Context, handle Handle, contentType string, r io.Reader) (int64, error)
- type Service
- type State
- type Storage
- func (s *Storage) Cleanup(ctx context.Context, retention time.Duration) error
- func (s *Storage) CleanupTask(periodicity, retention time.Duration) *axe.Task
- func (s *Storage) Decorator(fields ...string) *fire.Callback
- func (s *Storage) DownloadAction() *fire.Action
- func (s *Storage) UploadAction(limit int64) *fire.Action
- func (s *Storage) Validator(fields ...string) *fire.Callback
- type ViewKey
Constants ¶
This section is empty.
Variables ¶
var ErrInvalidHandle = errors.New("invalid handle")
ErrInvalidHandle is returned if the provided handle is invalid.
var ErrNotFound = errors.New("not found")
ErrNotFound is returned if there is no blob for the provided handle.
var ErrUsedHandle = errors.New("used handle")
ErrUsedHandle is returned if the provided handle has already been used.
Functions ¶
func AddFileIndexes ¶ added in v0.26.0
AddFileIndexes will add files indexes to the specified catalog.
Types ¶
type Blob ¶ added in v0.26.0
Blob may be used instead of a bytes slice for inline storage if the type needs be stored as well.
type ClaimKey ¶ added in v0.26.0
type ClaimKey struct {
heat.Base `json:"-" heat:"fire/blaze.claim,1h"`
// The uploaded file.
File coal.ID
}
ClaimKey is used to authorize file claims.
type File ¶ added in v0.26.0
type File struct {
coal.Base `json:"-" bson:",inline" coal:"files"`
// The current state of the file e.g. "uploading".
State State `json:"state"`
// The last time the file was updated.
Updated time.Time `json:"updated-at" bson:"updated_at"`
// The MIME type of the file e.g. "image/png".
Type string `json:"type"`
// The total length of the file.
Length int64 `json:"length"`
// The service specific blob handle.
Handle Handle `json:"handle"`
}
File tracks uploaded files and their state.
type GridFS ¶ added in v0.26.0
type GridFS struct {
// contains filtered or unexported fields
}
GridFS stores blobs in a GridFs bucket.
type Handle ¶ added in v0.26.0
type Handle map[string]interface{}
Handle is a reference to a blob stored in a service.
type Link ¶ added in v0.26.0
type Link struct {
// The type of the linked file.
Type string `json:"type"`
// The length of the linked file.
Length int64 `json:"length"`
// The key for claiming the linked file.
ClaimKey string `json:"claim-key" bson:"-"`
// The key for viewing the linked file.
ViewKey string `json:"view-key" bson:"-"`
// The reference to the linked file.
File *coal.ID `json:"-" bson:"file_id"`
}
Link is used to link a file to a model.
type Memory ¶ added in v0.26.0
Memory is a service for testing purposes that stores blobs in memory.
func NewMemory ¶ added in v0.26.0
func NewMemory() *Memory
NewMemory will create a new memory service.
type Service ¶ added in v0.26.0
type Service interface {
// Prepare should return a new handle for uploading a blob.
Prepare(ctx context.Context) (Handle, error)
// Upload should persist a blob with data read from the provided reader.
Upload(ctx context.Context, handle Handle, contentType string, r io.Reader) (int64, error)
// Download lookup the blob and stream its content to the provider writer.
Download(ctx context.Context, handle Handle, w io.Writer) error
// Delete should delete the blob.
Delete(ctx context.Context, handle Handle) (bool, error)
// Cleanup is called periodically and allows the service to cleanup its
// storage until the context is cancelled.
Cleanup(ctx context.Context) error
}
Service is responsible for managing blobs.
type State ¶ added in v0.26.0
type State string
State describes the current state of a file. Usually, the state of a file always moves forward by one step but it may also jump directly to "deleting".
type Storage ¶ added in v0.26.0
type Storage struct {
// contains filtered or unexported fields
}
Storage provides file storage services.
func NewStorage ¶ added in v0.26.0
NewStorage creates a new storage.
func (*Storage) Cleanup ¶ added in v0.26.0
Cleanup will remove obsolete files and remove their blobs. Files in the states "uploading" or "uploaded" are removed after the specified retention which defaults to 1 hour if zero. Files in the states "released" and "deleting" are removed immediately. It will also allow the service to cleanup.
func (*Storage) CleanupTask ¶ added in v0.26.0
CleanupTask will return a periodic task that can be run to periodically cleanup obsolete files.
func (*Storage) Decorator ¶ added in v0.26.0
Decorator will generate view keys for all or just the specified link fields on the returned model or models.
func (*Storage) DownloadAction ¶ added in v0.26.0
DownloadAction returns an action that allows downloading files using view keys.
func (*Storage) UploadAction ¶ added in v0.26.0
UploadAction returns an action that provides and upload that service that stores blobs and returns claim keys.