mirror of
https://github.com/get-drexa/drive.git
synced 2025-12-03 15:01:39 +00:00
44 lines
1.5 KiB
Go
44 lines
1.5 KiB
Go
package blob
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"time"
|
|
)
|
|
|
|
type UploadURLOptions struct {
|
|
Duration time.Duration
|
|
}
|
|
|
|
type DownloadURLOptions struct {
|
|
Duration time.Duration
|
|
}
|
|
|
|
type UpdateOptions struct {
|
|
ContentType string
|
|
}
|
|
|
|
type Store interface {
|
|
// SupportsDirectUpload returns true if the store allows files to be uploaded directly to the blob store.
|
|
SupportsDirectUpload() bool
|
|
|
|
// SupportsDirectDownload returns true if the store allows files to be downloaded directly from the blob store.
|
|
SupportsDirectDownload() bool
|
|
|
|
Initialize(ctx context.Context) error
|
|
Put(ctx context.Context, key Key, reader io.Reader) error
|
|
Update(ctx context.Context, key Key, opts UpdateOptions) error
|
|
Delete(ctx context.Context, key Key) error
|
|
DeletePrefix(ctx context.Context, prefix Key) error
|
|
Move(ctx context.Context, srcKey, dstKey Key) error
|
|
Read(ctx context.Context, key Key) (io.ReadCloser, error)
|
|
ReadRange(ctx context.Context, key Key, offset, length int64) (io.ReadCloser, error)
|
|
ReadSize(ctx context.Context, key Key) (int64, error)
|
|
|
|
// GenerateUploadURL generates a URL that can be used to upload a file directly to the blob store. If unsupported, returns an empty string with no error.
|
|
GenerateUploadURL(ctx context.Context, key Key, opts UploadURLOptions) (string, error)
|
|
|
|
// GenerateDownloadURL generates a URL that can be used to download a file directly from the blob store. If unsupported, returns an empty string with no error.
|
|
GenerateDownloadURL(ctx context.Context, key Key, opts DownloadURLOptions) (string, error)
|
|
}
|