s3afero

package
v0.0.3 Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2024 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FsPath

func FsPath(path string, flags FsFlags) (afero.Fs, error)

FsPath returns an afero.Fs rooted to the path provided. If the path is invalid, or is less than 2 levels down from the filesystem root, an error is returned.

func NewBasePathFs

func NewBasePathFs(source afero.Fs, path string, flags FsFlags) (afero.Fs, error)

Types

type FsFlags

type FsFlags int
const (
	FsPathCreate FsFlags = 1 << iota
	FsPathCreateAll
)

type Metadata

type Metadata struct {
	File    string
	ModTime time.Time
	Size    int64
	Hash    []byte
	Meta    map[string]string
}

type MultiBucketBackend

type MultiBucketBackend struct {
	// contains filtered or unexported fields
}

MultiBucketBackend is a gofakes3.Backend that allows you to create multiple buckets within the same afero.Fs. Buckets are stored under the `/buckets` subdirectory. Metadata is stored in the `/metadata` subdirectory by default, but any afero.Fs can be used.

It is STRONGLY recommended that the metadata Fs is not contained within the `/buckets` subdirectory as that could make a significant mess, but this is infeasible to validate, so you're encouraged to be extremely careful!

func MultiBucket

func MultiBucket(fs afero.Fs, opts ...MultiOption) (*MultiBucketBackend, error)

func (*MultiBucketBackend) BucketExists

func (db *MultiBucketBackend) BucketExists(_ context.Context, name string) (exists bool, err error)

func (*MultiBucketBackend) CopyObject

func (db *MultiBucketBackend) CopyObject(ctx context.Context, srcBucket, srcKey, dstBucket, dstKey string, meta map[string]string) (result gofakes3.CopyObjectResult, err error)

func (*MultiBucketBackend) CreateBucket

func (db *MultiBucketBackend) CreateBucket(_ context.Context, name string) error

func (*MultiBucketBackend) DeleteBucket

func (db *MultiBucketBackend) DeleteBucket(_ context.Context, name string) (rerr error)

func (*MultiBucketBackend) DeleteMulti

func (db *MultiBucketBackend) DeleteMulti(_ context.Context, bucketName string, objects ...string) (result gofakes3.MultiDeleteResult, rerr error)

func (*MultiBucketBackend) DeleteObject

func (db *MultiBucketBackend) DeleteObject(_ context.Context, bucketName, objectName string) (result gofakes3.ObjectDeleteResult, rerr error)

func (*MultiBucketBackend) GetObject

func (db *MultiBucketBackend) GetObject(_ context.Context, bucketName, objectName string, rangeRequest *gofakes3.ObjectRangeRequest) (obj *gofakes3.Object, rerr error)

func (*MultiBucketBackend) HeadObject

func (db *MultiBucketBackend) HeadObject(_ context.Context, bucketName, objectName string) (*gofakes3.Object, error)

func (*MultiBucketBackend) ListBucket

func (*MultiBucketBackend) ListBuckets

func (db *MultiBucketBackend) ListBuckets(_ context.Context) ([]gofakes3.BucketInfo, error)

func (*MultiBucketBackend) PutObject

func (db *MultiBucketBackend) PutObject(
	ctx context.Context,
	bucketName, objectName string,
	meta map[string]string,
	input io.Reader, size int64,
) (result gofakes3.PutObjectResult, err error)

type MultiOption

type MultiOption func(b *MultiBucketBackend) error

func MultiFsFlags

func MultiFsFlags(flags FsFlags) MultiOption

func MultiWithMetaFs

func MultiWithMetaFs(fs afero.Fs) MultiOption

type SingleBucketBackend

type SingleBucketBackend struct {
	// contains filtered or unexported fields
}

SingleBucketBackend is a gofakes3.Backend that allows you to treat an existing filesystem as an S3 bucket directly. It does not support multiple buckets.

A second afero.Fs, metaFs, may be passed; if this is nil, afero.NewMemMapFs() is used and the metadata will not persist between restarts of gofakes3.

It is STRONGLY recommended that the metadata Fs is not contained within the `/buckets` subdirectory as that could make a significant mess, but this is infeasible to validate, so you're encouraged to be extremely careful!

func SingleBucket

func SingleBucket(name string, fs afero.Fs, metaFs afero.Fs, opts ...SingleOption) (*SingleBucketBackend, error)

func (*SingleBucketBackend) BucketExists

func (db *SingleBucketBackend) BucketExists(_ context.Context, name string) (exists bool, err error)

func (*SingleBucketBackend) CopyObject

func (db *SingleBucketBackend) CopyObject(ctx context.Context, srcBucket, srcKey, dstBucket, dstKey string, meta map[string]string) (result gofakes3.CopyObjectResult, err error)

func (*SingleBucketBackend) CreateBucket

func (db *SingleBucketBackend) CreateBucket(_ context.Context, name string) error

CreateBucket cannot be implemented by this backend. See MultiBucketBackend if you need a backend that supports it.

func (*SingleBucketBackend) DeleteBucket

func (db *SingleBucketBackend) DeleteBucket(_ context.Context, name string) error

DeleteBucket cannot be implemented by this backend. See MultiBucketBackend if you need a backend that supports it.

func (*SingleBucketBackend) DeleteMulti

func (db *SingleBucketBackend) DeleteMulti(ctx context.Context, bucketName string, objects ...string) (result gofakes3.MultiDeleteResult, rerr error)

func (*SingleBucketBackend) DeleteObject

func (db *SingleBucketBackend) DeleteObject(ctx context.Context, bucketName, objectName string) (result gofakes3.ObjectDeleteResult, rerr error)

func (*SingleBucketBackend) GetObject

func (db *SingleBucketBackend) GetObject(_ context.Context, bucketName, objectName string, rangeRequest *gofakes3.ObjectRangeRequest) (obj *gofakes3.Object, err error)

func (*SingleBucketBackend) HeadObject

func (db *SingleBucketBackend) HeadObject(_ context.Context, bucketName, objectName string) (*gofakes3.Object, error)

func (*SingleBucketBackend) ListBucket

func (*SingleBucketBackend) ListBuckets

func (db *SingleBucketBackend) ListBuckets(_ context.Context) ([]gofakes3.BucketInfo, error)

func (*SingleBucketBackend) PutObject

func (db *SingleBucketBackend) PutObject(
	ctx context.Context,
	bucketName, objectName string,
	meta map[string]string,
	input io.Reader, size int64,
) (result gofakes3.PutObjectResult, err error)

type SingleOption

type SingleOption func(b *SingleBucketBackend) error

Jump to

Keyboard shortcuts

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