Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrFileStore is the general error for this package. ErrFileStore = errors.New("file store") // ErrStore is the error with the store by itself. ErrStore = errors.Wrap(ErrFileStore, "store") // ErrVersionsNotAllowed is an error if the store doesn't support file versions. ErrVersionsNotAllowed = errors.Wrap(ErrStore, "versions not allowed") // ErrFileName is an error for invalid file names. ErrFileName = errors.Wrap(ErrFileStore, "file name") // ErrExists is an error if the file already exists. ErrExists = errors.Wrap(ErrFileStore, "exists") // ErrFileIsDir is an error if provided file name is a directory. ErrFileIsDir = errors.Wrap(ErrFileStore, "file is dir") // ErrNotExists is an error when the file doesn't exists. ErrNotExists = errors.Wrap(ErrFileStore, "not exists") // ErrNotOpened is an error if the file is not opened yet and wanted to be read. ErrNotOpened = errors.Wrap(ErrFileStore, "not opened") // ErrAlreadyOpened is an error thrown when the file is already opened. ErrAlreadyOpened = errors.Wrap(ErrFileStore, "already opened") // ErrClosed is an error if the file is already closed. ErrClosed = errors.Wrap(ErrFileStore, "closed") // ErrInternal is an internal error for this package. ErrInternal = errors.Wrap(errors.ErrInternal, "file store") // ErrPermission is an error with the file permissions. ErrPermission = errors.Wrap(ErrFileStore, "permission") )
var MimeTypes = map[string]string{
"css": "text/css",
"html": "text/html",
"txt": "text/plain",
"gif": "image/gif",
"jpeg": "image/jpeg",
"png": "image/png",
"tiff": "image/tiff",
"ico": "image/vnd.microsoft.icon",
"js": "application/javascript",
"json": "application/json",
"xml": "application/xml",
"mp3": "audio/mpeg",
"wma": "audio/x-ms-wma",
"ra": "audio/vnd.rn-realaudio",
"rm": "audio/vnd.rn-realaudio",
"ram": "audio/vnd.rn-realaudio",
"wav": "audio/x-wav",
"mpeg": "video/mpeg",
"mp4": "video/mp4",
"wmv": "video/x-ms-wmv",
"qt": "video/quicktime",
"mov": "video/quicktime",
}
MimeTypes are the file extension well-known mime types.
Functions ¶
func GetMimeType ¶
GetMimeType gets the default mime type for given file extension.
Types ¶
type File ¶
type File interface {
// Name returns file name with extension.
Name() string
// Bucket returns file's bucket.
Bucket() string
// Directory returns file directory.
Directory() string
// Version returns file version.
Version() string
// Parameters obtainable after open.
// ModifiedAt is the last modification time.
ModifiedAt() time.Time
// Size returns byte size of given file.
Size() int64
// I/O
//
// Read functions.
//
// Open opens the file in an read-only way.
Open(ctx context.Context) error
// Close after successful read the file needs to be closed.
Close(ctx context.Context) error
// Read the file content when it is opened. Implements io.Reader
Read(data []byte) (int, error)
// Write the file content Implements io.Writer. The write is independent of the Open -> Read -> Close cycle.
// In order to store the changes the file needs to be put into the store.
Write(data []byte) (int, error)
}
File is a basic interface for the file abstraction.
type FileOption ¶
type FileOption func(o *FileOptions)
FileOption is function that changes file options.
func FileWithBucket ¶
func FileWithBucket(bucket string) FileOption
FileWithBucket create file with provided bucket.
func FileWithDirectory ¶
func FileWithDirectory(directory string) FileOption
FileWithDirectory create the file with given 'directory'.
type FileOptions ¶
FileOptions are the options file creating new file.
type GetOption ¶
type GetOption func(o *GetOptions)
GetOption is an option function that set get options.
func GetWithBucket ¶
GetWithBucket get file with provided bucket.
func GetWithDirectory ¶
GetWithDirectory sets the get file options with 'directory'.
func GetWithVersion ¶
GetWithVersion gets the file with given version. Used only for get method.
type GetOptions ¶
GetOptions are the options while getting the file.
type ListOption ¶
type ListOption func(o *ListOptions)
ListOption is a function that sets up list options.
func ListWithBucket ¶
func ListWithBucket(bucket string) ListOption
ListWithBucket sets the list bucket filter.
func ListWithExtension ¶
func ListWithExtension(ext string) ListOption
ListWithExtension sets the list extension filter.
func ListWithLimit ¶
func ListWithLimit(limit int) ListOption
ListWithLimit sets the list limit filter.
func ListWithOffset ¶
func ListWithOffset(offset int) ListOption
ListWithOffset sets the list offset filter.
type ListOptions ¶
type ListOptions struct {
// Limit, Offset sets the limit and offset while listing the files.
Limit, Offset int
// Extension is a filter type of the file extension.
Extension string
// Bucket could be used for S3 implementations.
Bucket string
}
ListOptions are the settings while listing the files.
type Metadater ¶
type Metadater interface {
Metadata() map[string]interface{}
GetMeta(key string) (interface{}, bool)
SetMeta(key string, value interface{})
}
Metadater is an interface used
type Model ¶
type Model interface {
mapping.Model
// BucketField returns golang name for the bucket field.
BucketField() string
// DirectoryField returns golang name for the directory field.
DirectoryField() string
// NameField returns golang name for the file name field.
NameField() string
// VersionField returns golang name for the version field.
VersionField() string
// ExtensionField returns golang name for the file extension field.
ExtensionField() string
}
Model is the interface that defines file model.
type PutOption ¶
type PutOption func(o *PutOptions)
PutOption is the function that changes the put options.
func PutWithOverwrite ¶
func PutWithOverwrite() PutOption
PutWithOverwrite is the put option that forces the put to overwrite given file.
type PutOptions ¶
type PutOptions struct {
// Overwrite defines if the file with given version should be overwritten by the input.
Overwrite bool
}
PutOptions are the options used on putting the file.
type Store ¶
type Store interface {
// Type returns the name of the file store.
Type() string
// NewFile creates new file with given name and with provided options.
NewFile(ctx context.Context, name string, options ...FileOption) (File, error)
// PutFile stores the file created previously.
PutFile(ctx context.Context, file File, options ...PutOption) error
// GetFile gets the file header with provided name (only file name with extension) and possible options.
GetFile(ctx context.Context, name string, options ...GetOption) (File, error)
// ListFiles lists the file headers for provided directory with optional filters.
ListFiles(ctx context.Context, dir string, options ...ListOption) ([]File, error)
// DeleteFile deletes provided file.
DeleteFile(ctx context.Context, file File) error
}
Store is an interface that allows to execute operation on files.