Documentation ¶
Index ¶
- Variables
- type BytesReader
- type File
- type FileReader
- type MultipartReader
- type PathReader
- type System
- func (s *System) Attributes(fileKey string) (*blob.Attributes, error)
- func (s *System) Close() error
- func (s *System) Copy(srcKey, dstKey string) error
- func (s *System) CreateThumb(originalKey string, thumbKey, thumbSize string) error
- func (s *System) Delete(fileKey string) error
- func (s *System) DeletePrefix(prefix string) []error
- func (s *System) Exists(fileKey string) (bool, error)
- func (s *System) GetFile(fileKey string) (*blob.Reader, error)
- func (s *System) List(prefix string) ([]*blob.ListObject, error)
- func (s *System) Serve(res http.ResponseWriter, req *http.Request, fileKey string, name string) error
- func (s *System) SetContext(ctx context.Context)
- func (s *System) Upload(content []byte, fileKey string) error
- func (s *System) UploadFile(file *File, fileKey string) error
- func (s *System) UploadMultipart(fh *multipart.FileHeader, fileKey string) error
Constants ¶
This section is empty.
Variables ¶
var ThumbSizeRegex = regexp.MustCompile(`^(\d+)x(\d+)(t|b|f)?$`)
Functions ¶
This section is empty.
Types ¶
type BytesReader ¶
type BytesReader struct {
Bytes []byte
}
BytesReader defines a FileReader from bytes content.
func (*BytesReader) Open ¶
func (r *BytesReader) Open() (io.ReadSeekCloser, error)
Open implements the filesystem.FileReader interface.
type File ¶
type File struct { Reader FileReader Name string OriginalName string Size int64 }
File defines a single file io.ReadSeekCloser resource.
The file could be from a local path, multipart/form-data header, etc.
func NewFileFromBytes ¶
NewFileFromBytes creates a new File instance from the provided byte slice.
func NewFileFromMultipart ¶
func NewFileFromMultipart(mh *multipart.FileHeader) (*File, error)
NewFileFromMultipart creates a new File from the provided multipart header.
func NewFileFromPath ¶
NewFileFromPath creates a new File instance from the provided local file path.
func NewFileFromUrl ¶
NewFileFromUrl creates a new File from the provided url by downloading the resource and load it as BytesReader.
Example
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() file, err := filesystem.NewFileFromUrl(ctx, "https://example.com/image.png")
type FileReader ¶
type FileReader interface {
Open() (io.ReadSeekCloser, error)
}
FileReader defines an interface for a file resource reader.
type MultipartReader ¶
type MultipartReader struct {
Header *multipart.FileHeader
}
MultipartReader defines a FileReader from multipart.FileHeader.
func (*MultipartReader) Open ¶
func (r *MultipartReader) Open() (io.ReadSeekCloser, error)
Open implements the filesystem.FileReader interface.
type PathReader ¶
type PathReader struct {
Path string
}
PathReader defines a FileReader from a local file path.
func (*PathReader) Open ¶
func (r *PathReader) Open() (io.ReadSeekCloser, error)
Open implements the filesystem.FileReader interface.
type System ¶
type System struct {
// contains filtered or unexported fields
}
func NewLocal ¶
NewLocal initializes a new local filesystem instance.
NB! Make sure to call `Close()` after you are done working with it.
func NewS3 ¶
func NewS3( bucketName string, region string, endpoint string, accessKey string, secretKey string, s3ForcePathStyle bool, ) (*System, error)
NewS3 initializes an S3 filesystem instance.
NB! Make sure to call `Close()` after you are done working with it.
func (*System) Attributes ¶
func (s *System) Attributes(fileKey string) (*blob.Attributes, error)
Attributes returns the attributes for the file with fileKey path.
func (*System) Copy ¶
Copy copies the file stored at srcKey to dstKey.
If dstKey file already exists, it is overwritten.
func (*System) CreateThumb ¶
CreateThumb creates a new thumb image for the file at originalKey location. The new thumb file is stored at thumbKey location.
thumbSize is in the format: - 0xH (eg. 0x100) - resize to H height preserving the aspect ratio - Wx0 (eg. 300x0) - resize to W width preserving the aspect ratio - WxH (eg. 300x100) - resize and crop to WxH viewbox (from center) - WxHt (eg. 300x100t) - resize and crop to WxH viewbox (from top) - WxHb (eg. 300x100b) - resize and crop to WxH viewbox (from bottom) - WxHf (eg. 300x100f) - fit inside a WxH viewbox (without cropping)
func (*System) DeletePrefix ¶
DeletePrefix deletes everything starting with the specified prefix.
The prefix could be subpath (ex. "/a/b/") or filename prefix (ex. "/a/b/file_").
func (*System) GetFile ¶
GetFile returns a file content reader for the given fileKey.
NB! Make sure to call `Close()` after you are done working with it.
func (*System) List ¶
func (s *System) List(prefix string) ([]*blob.ListObject, error)
List returns a flat list with info for all files under the specified prefix.
func (*System) Serve ¶
func (s *System) Serve(res http.ResponseWriter, req *http.Request, fileKey string, name string) error
Serve serves the file at fileKey location to an HTTP response.
If the `download` query parameter is used the file will be always served for download no matter of its type (aka. with "Content-Disposition: attachment").
func (*System) SetContext ¶
SetContext assigns the specified context to the current filesystem.
func (*System) UploadFile ¶
UploadFile uploads the provided multipart file to the fileKey location.
func (*System) UploadMultipart ¶
func (s *System) UploadMultipart(fh *multipart.FileHeader, fileKey string) error
UploadMultipart uploads the provided multipart file to the fileKey location.