Documentation
¶
Index ¶
- Constants
- Variables
- func AbortDirectUpload(ctx context.Context, request CompleteDirectUploadRequest) error
- func CleanupPending(ctx context.Context, before time.Time, limit int) (int, error)
- func Configure(writeStore Store, readStores ...Store) error
- func ConfigureFromPreferences() error
- func Delete(ctx context.Context, name string) error
- func NewUploadName(filename string, customPath string) string
- func SupportsDirectUpload() bool
- type AvatarUpload
- type CompleteDirectUploadRequest
- type DirectUpload
- type DirectUploadRequest
- type DirectUploadSession
- type DirectUploadStore
- type Metadata
- func CompleteDirectUpload(ctx context.Context, request CompleteDirectUploadRequest) (*Metadata, error)
- func Put(ctx context.Context, request PutRequest) (*Metadata, error)
- func SaveAvatar(ctx context.Context, userId uint64, data []byte, filename string) (*Metadata, error)
- func SaveAvatarSet(ctx context.Context, userId uint64, uploads []AvatarUpload) ([]*Metadata, error)
- func SaveFileFromUpload(ctx context.Context, userId uint64, data []byte, filename string, ...) (*Metadata, error)
- func Stat(ctx context.Context, name string) (*Metadata, error)
- type Object
- type PutRequest
- type S3Config
- type S3Store
- func (store *S3Store) Delete(ctx context.Context, name string) error
- func (*S3Store) Driver() string
- func (store *S3Store) Open(ctx context.Context, name string) (*StoredObject, error)
- func (store *S3Store) PresignUpload(ctx context.Context, request DirectUploadRequest) (*DirectUpload, error)
- func (store *S3Store) Put(ctx context.Context, request WriteRequest) error
- func (store *S3Store) VerifyUpload(ctx context.Context, request DirectUploadRequest) error
- type Service
- func (service *Service) AbortDirectUpload(ctx context.Context, request CompleteDirectUploadRequest) error
- func (service *Service) BeginDirectUpload(ctx context.Context, request DirectUploadRequest) (*DirectUploadSession, error)
- func (service *Service) CleanupPending(ctx context.Context, before time.Time, limit int) (int, error)
- func (service *Service) CompleteDirectUpload(ctx context.Context, request CompleteDirectUploadRequest) (*Metadata, error)
- func (service *Service) Delete(ctx context.Context, name string) error
- func (service *Service) Open(ctx context.Context, name string) (*Object, error)
- func (service *Service) Put(ctx context.Context, request PutRequest) (*Metadata, error)
- func (service *Service) Stat(ctx context.Context, name string) (*Metadata, error)
- func (service *Service) SupportsDirectUpload() bool
- type Store
- type StoredObject
- type WriteRequest
Constants ¶
View Source
const ( MaxFileSize = 4 * 1024 * 1024 AvatarPath = "avatars" )
View Source
const DatabaseDriver = "database"
View Source
const (
S3Driver = "s3"
)
Variables ¶
View Source
var ErrDirectUploadInvalidObject = errors.New("uploaded object failed validation")
View Source
var ErrDirectUploadOwnerMismatch = errors.New("pending upload does not belong to user")
View Source
var ErrDirectUploadUnsupported = errors.New("file storage does not support direct uploads")
Functions ¶
func AbortDirectUpload ¶
func AbortDirectUpload(ctx context.Context, request CompleteDirectUploadRequest) error
func CleanupPending ¶
func ConfigureFromPreferences ¶
func ConfigureFromPreferences() error
func NewUploadName ¶
func SupportsDirectUpload ¶
func SupportsDirectUpload() bool
Types ¶
type AvatarUpload ¶
type DirectUpload ¶
type DirectUploadRequest ¶
type DirectUploadSession ¶
type DirectUploadSession struct {
Metadata Metadata
Upload DirectUpload
}
func BeginDirectUpload ¶
func BeginDirectUpload(ctx context.Context, request DirectUploadRequest) (*DirectUploadSession, error)
type DirectUploadStore ¶
type DirectUploadStore interface {
PresignUpload(context.Context, DirectUploadRequest) (*DirectUpload, error)
VerifyUpload(context.Context, DirectUploadRequest) error
}
DirectUploadStore is an optional capability implemented by remote stores.
type Metadata ¶
type Metadata struct {
Id uint64
Name string
ContentType string
Size int64
UserId uint64
StorageDriver string
StorageStatus string
CreatedAt time.Time
UpdatedAt time.Time
}
func CompleteDirectUpload ¶
func CompleteDirectUpload(ctx context.Context, request CompleteDirectUploadRequest) (*Metadata, error)
func SaveAvatar ¶
func SaveAvatarSet ¶
func SaveFileFromUpload ¶
func (Metadata) GetAccessPath ¶
type Object ¶
type Object struct {
Metadata Metadata
Body io.ReadCloser
}
type PutRequest ¶
type S3Store ¶
type S3Store struct {
// contains filtered or unexported fields
}
func NewS3Store ¶
func (*S3Store) PresignUpload ¶
func (store *S3Store) PresignUpload(ctx context.Context, request DirectUploadRequest) (*DirectUpload, error)
func (*S3Store) VerifyUpload ¶
func (store *S3Store) VerifyUpload(ctx context.Context, request DirectUploadRequest) error
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
func (*Service) AbortDirectUpload ¶
func (service *Service) AbortDirectUpload(ctx context.Context, request CompleteDirectUploadRequest) error
func (*Service) BeginDirectUpload ¶
func (service *Service) BeginDirectUpload(ctx context.Context, request DirectUploadRequest) (*DirectUploadSession, error)
func (*Service) CleanupPending ¶
func (*Service) CompleteDirectUpload ¶
func (*Service) SupportsDirectUpload ¶
type Store ¶
type Store interface {
Driver() string
Put(context.Context, WriteRequest) error
Open(context.Context, string) (*StoredObject, error)
Delete(context.Context, string) error
}
Store only owns file content. Forum metadata is maintained by Service.
func NewDatabaseStore ¶
func NewDatabaseStore() Store
type StoredObject ¶
type StoredObject struct {
Size int64
Body io.ReadCloser
}
Click to show internal directories.
Click to hide internal directories.