filesystem

package
v0.0.0-...-18993a5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 5, 2024 License: MIT Imports: 30 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
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

func NewFileFromBytes(b []byte, name string) (*File, error)

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

func NewFileFromPath(path string) (*File, error)

NewFileFromPath creates a new File instance from the provided local file path.

func NewFileFromUrl

func NewFileFromUrl(ctx context.Context, url string) (*File, error)

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

func NewLocal(dirPath string) (*System, error)

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) Close

func (s *System) Close() error

Close releases any resources used for the related filesystem.

func (*System) Copy

func (s *System) Copy(srcKey, dstKey string) error

Copy copies the file stored at srcKey to dstKey.

If dstKey file already exists, it is overwritten.

func (*System) CreateThumb

func (s *System) CreateThumb(originalKey string, thumbKey, thumbSize string) error

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) Delete

func (s *System) Delete(fileKey string) error

Delete deletes stored file at fileKey location.

func (*System) DeletePrefix

func (s *System) DeletePrefix(prefix string) []error

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) Exists

func (s *System) Exists(fileKey string) (bool, error)

Exists checks if file with fileKey path exists or not.

func (*System) GetFile

func (s *System) GetFile(fileKey string) (*blob.Reader, error)

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

func (s *System) SetContext(ctx context.Context)

SetContext assigns the specified context to the current filesystem.

func (*System) Upload

func (s *System) Upload(content []byte, fileKey string) error

Upload writes content into the fileKey location.

func (*System) UploadFile

func (s *System) UploadFile(file *File, fileKey string) error

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.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL