backend

package
v1.0.9 Latest Latest
Warning

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

Go to latest
Published: Dec 7, 2024 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// this is the media type for directories in AWS and Nextcloud
	DirContentType     = "application/x-directory"
	DefaultContentType = "binary/octet-stream"
)

Variables

View Source
var ErrSkipObj = errors.New("skip this object")

Functions

func CreateExceedingRangeErr added in v1.0.2

func CreateExceedingRangeErr(objSize int64) s3err.APIError

func GetMultipartMD5

func GetMultipartMD5(parts []types.CompletedPart) string

func GetPtrFromString added in v1.0.8

func GetPtrFromString(str string) *string

func GetStringFromPtr added in v1.0.9

func GetStringFromPtr(str *string) string

func GetTimePtr

func GetTimePtr(t time.Time) *time.Time

func IsValidBucketName

func IsValidBucketName(name string) bool

func MkdirAll

func MkdirAll(path string, uid, gid int, doChown bool, dirPerm fs.FileMode) error

MkdirAll is similar to os.MkdirAll but it will return ErrObjectParentIsFile when appropriate MkdirAll creates a directory named path, along with any necessary parents, and returns nil, or else returns an error. The permission bits perm (before umask) are used for all directories that MkdirAll creates. Any newly created directory is set to provided uid/gid ownership. If path is already a directory, MkdirAll does nothing and returns nil. Any directory created will be set to provided uid/gid ownership if doChown is true.

func ParseCopySource added in v1.0.8

func ParseCopySource(copySourceHeader string) (string, string, string, error)

ParseCopySource parses x-amz-copy-source header and returns source bucket, source object, versionId, error respectively

func ParseRange

func ParseRange(size int64, acceptRange string) (int64, int64, error)

ParseRange parses input range header and returns startoffset, length, and error. If no endoffset specified, then length is set to -1.

Types

type Backend

type Backend interface {
	fmt.Stringer
	Shutdown()

	// bucket operations
	ListBuckets(context.Context, s3response.ListBucketsInput) (s3response.ListAllMyBucketsResult, error)
	HeadBucket(context.Context, *s3.HeadBucketInput) (*s3.HeadBucketOutput, error)
	GetBucketAcl(context.Context, *s3.GetBucketAclInput) ([]byte, error)
	CreateBucket(_ context.Context, _ *s3.CreateBucketInput, defaultACL []byte) error
	PutBucketAcl(_ context.Context, bucket string, data []byte) error
	DeleteBucket(_ context.Context, bucket string) error
	PutBucketVersioning(_ context.Context, bucket string, status types.BucketVersioningStatus) error
	GetBucketVersioning(_ context.Context, bucket string) (s3response.GetBucketVersioningOutput, error)
	PutBucketPolicy(_ context.Context, bucket string, policy []byte) error
	GetBucketPolicy(_ context.Context, bucket string) ([]byte, error)
	DeleteBucketPolicy(_ context.Context, bucket string) error
	PutBucketOwnershipControls(_ context.Context, bucket string, ownership types.ObjectOwnership) error
	GetBucketOwnershipControls(_ context.Context, bucket string) (types.ObjectOwnership, error)
	DeleteBucketOwnershipControls(_ context.Context, bucket string) error

	// multipart operations
	CreateMultipartUpload(context.Context, *s3.CreateMultipartUploadInput) (s3response.InitiateMultipartUploadResult, error)
	CompleteMultipartUpload(context.Context, *s3.CompleteMultipartUploadInput) (*s3.CompleteMultipartUploadOutput, error)
	AbortMultipartUpload(context.Context, *s3.AbortMultipartUploadInput) error
	ListMultipartUploads(context.Context, *s3.ListMultipartUploadsInput) (s3response.ListMultipartUploadsResult, error)
	ListParts(context.Context, *s3.ListPartsInput) (s3response.ListPartsResult, error)
	UploadPart(context.Context, *s3.UploadPartInput) (etag string, err error)
	UploadPartCopy(context.Context, *s3.UploadPartCopyInput) (s3response.CopyObjectResult, error)

	// standard object operations
	PutObject(context.Context, *s3.PutObjectInput) (s3response.PutObjectOutput, error)
	HeadObject(context.Context, *s3.HeadObjectInput) (*s3.HeadObjectOutput, error)
	GetObject(context.Context, *s3.GetObjectInput) (*s3.GetObjectOutput, error)
	GetObjectAcl(context.Context, *s3.GetObjectAclInput) (*s3.GetObjectAclOutput, error)
	GetObjectAttributes(context.Context, *s3.GetObjectAttributesInput) (s3response.GetObjectAttributesResponse, error)
	CopyObject(context.Context, *s3.CopyObjectInput) (*s3.CopyObjectOutput, error)
	ListObjects(context.Context, *s3.ListObjectsInput) (s3response.ListObjectsResult, error)
	ListObjectsV2(context.Context, *s3.ListObjectsV2Input) (s3response.ListObjectsV2Result, error)
	DeleteObject(context.Context, *s3.DeleteObjectInput) (*s3.DeleteObjectOutput, error)
	DeleteObjects(context.Context, *s3.DeleteObjectsInput) (s3response.DeleteResult, error)
	PutObjectAcl(context.Context, *s3.PutObjectAclInput) error
	ListObjectVersions(context.Context, *s3.ListObjectVersionsInput) (s3response.ListVersionsResult, error)

	// special case object operations
	RestoreObject(context.Context, *s3.RestoreObjectInput) error
	SelectObjectContent(ctx context.Context, input *s3.SelectObjectContentInput) func(w *bufio.Writer)

	// bucket tagging operations
	GetBucketTagging(_ context.Context, bucket string) (map[string]string, error)
	PutBucketTagging(_ context.Context, bucket string, tags map[string]string) error
	DeleteBucketTagging(_ context.Context, bucket string) error

	// object tagging operations
	GetObjectTagging(_ context.Context, bucket, object string) (map[string]string, error)
	PutObjectTagging(_ context.Context, bucket, object string, tags map[string]string) error
	DeleteObjectTagging(_ context.Context, bucket, object string) error

	// object lock operations
	PutObjectLockConfiguration(_ context.Context, bucket string, config []byte) error
	GetObjectLockConfiguration(_ context.Context, bucket string) ([]byte, error)
	PutObjectRetention(_ context.Context, bucket, object, versionId string, bypass bool, retention []byte) error
	GetObjectRetention(_ context.Context, bucket, object, versionId string) ([]byte, error)
	PutObjectLegalHold(_ context.Context, bucket, object, versionId string, status bool) error
	GetObjectLegalHold(_ context.Context, bucket, object, versionId string) (*bool, error)

	// non AWS actions
	ChangeBucketOwner(_ context.Context, bucket string, acl []byte) error
	ListBucketsAndOwners(context.Context) ([]s3response.Bucket, error)
}

func New

func New() Backend

type BackendUnsupported

type BackendUnsupported struct{}

func (BackendUnsupported) AbortMultipartUpload

func (BackendUnsupported) ChangeBucketOwner

func (BackendUnsupported) ChangeBucketOwner(_ context.Context, bucket string, acl []byte) error

func (BackendUnsupported) CopyObject

func (BackendUnsupported) CreateBucket

func (BackendUnsupported) DeleteBucket

func (BackendUnsupported) DeleteBucket(_ context.Context, bucket string) error

func (BackendUnsupported) DeleteBucketOwnershipControls added in v1.0.3

func (BackendUnsupported) DeleteBucketOwnershipControls(_ context.Context, bucket string) error

func (BackendUnsupported) DeleteBucketPolicy

func (BackendUnsupported) DeleteBucketPolicy(_ context.Context, bucket string) error

func (BackendUnsupported) DeleteBucketTagging

func (BackendUnsupported) DeleteBucketTagging(_ context.Context, bucket string) error

func (BackendUnsupported) DeleteObject

func (BackendUnsupported) DeleteObjectTagging

func (BackendUnsupported) DeleteObjectTagging(_ context.Context, bucket, object string) error

func (BackendUnsupported) DeleteObjects

func (BackendUnsupported) GetBucketAcl

func (BackendUnsupported) GetBucketOwnershipControls added in v1.0.3

func (BackendUnsupported) GetBucketOwnershipControls(_ context.Context, bucket string) (types.ObjectOwnership, error)

func (BackendUnsupported) GetBucketPolicy

func (BackendUnsupported) GetBucketPolicy(_ context.Context, bucket string) ([]byte, error)

func (BackendUnsupported) GetBucketTagging

func (BackendUnsupported) GetBucketTagging(_ context.Context, bucket string) (map[string]string, error)

func (BackendUnsupported) GetBucketVersioning

func (BackendUnsupported) GetObject

func (BackendUnsupported) GetObjectAcl

func (BackendUnsupported) GetObjectLegalHold

func (BackendUnsupported) GetObjectLegalHold(_ context.Context, bucket, object, versionId string) (*bool, error)

func (BackendUnsupported) GetObjectLockConfiguration

func (BackendUnsupported) GetObjectLockConfiguration(_ context.Context, bucket string) ([]byte, error)

func (BackendUnsupported) GetObjectRetention

func (BackendUnsupported) GetObjectRetention(_ context.Context, bucket, object, versionId string) ([]byte, error)

func (BackendUnsupported) GetObjectTagging

func (BackendUnsupported) GetObjectTagging(_ context.Context, bucket, object string) (map[string]string, error)

func (BackendUnsupported) HeadBucket

func (BackendUnsupported) HeadObject

func (BackendUnsupported) ListBucketsAndOwners

func (BackendUnsupported) ListBucketsAndOwners(context.Context) ([]s3response.Bucket, error)

func (BackendUnsupported) ListParts

func (BackendUnsupported) PutBucketAcl

func (BackendUnsupported) PutBucketAcl(_ context.Context, bucket string, data []byte) error

func (BackendUnsupported) PutBucketOwnershipControls added in v1.0.3

func (BackendUnsupported) PutBucketOwnershipControls(_ context.Context, bucket string, ownership types.ObjectOwnership) error

func (BackendUnsupported) PutBucketPolicy

func (BackendUnsupported) PutBucketPolicy(_ context.Context, bucket string, policy []byte) error

func (BackendUnsupported) PutBucketTagging

func (BackendUnsupported) PutBucketTagging(_ context.Context, bucket string, tags map[string]string) error

func (BackendUnsupported) PutBucketVersioning

func (BackendUnsupported) PutBucketVersioning(_ context.Context, bucket string, status types.BucketVersioningStatus) error

func (BackendUnsupported) PutObject

func (BackendUnsupported) PutObjectAcl

func (BackendUnsupported) PutObjectLegalHold

func (BackendUnsupported) PutObjectLegalHold(_ context.Context, bucket, object, versionId string, status bool) error

func (BackendUnsupported) PutObjectLockConfiguration

func (BackendUnsupported) PutObjectLockConfiguration(_ context.Context, bucket string, config []byte) error

func (BackendUnsupported) PutObjectRetention

func (BackendUnsupported) PutObjectRetention(_ context.Context, bucket, object, versionId string, bypass bool, retention []byte) error

func (BackendUnsupported) PutObjectTagging

func (BackendUnsupported) PutObjectTagging(_ context.Context, bucket, object string, tags map[string]string) error

func (BackendUnsupported) RestoreObject

func (BackendUnsupported) SelectObjectContent

func (BackendUnsupported) SelectObjectContent(ctx context.Context, input *s3.SelectObjectContentInput) func(w *bufio.Writer)

func (BackendUnsupported) Shutdown

func (BackendUnsupported) Shutdown()

func (BackendUnsupported) String

func (BackendUnsupported) String() string

func (BackendUnsupported) UploadPart

func (BackendUnsupported) UploadPart(context.Context, *s3.UploadPartInput) (etag string, err error)

type ByBucketName

type ByBucketName []s3response.ListAllMyBucketsEntry

func (ByBucketName) Len

func (d ByBucketName) Len() int

func (ByBucketName) Less

func (d ByBucketName) Less(i, j int) bool

func (ByBucketName) Swap

func (d ByBucketName) Swap(i, j int)

type ByObjectName

type ByObjectName []types.Object

func (ByObjectName) Len

func (d ByObjectName) Len() int

func (ByObjectName) Less

func (d ByObjectName) Less(i, j int) bool

func (ByObjectName) Swap

func (d ByObjectName) Swap(i, j int)

type FileSectionReadCloser added in v1.0.3

type FileSectionReadCloser struct {
	R io.Reader
	F *os.File
}

func (*FileSectionReadCloser) Close added in v1.0.3

func (f *FileSectionReadCloser) Close() error

func (*FileSectionReadCloser) Read added in v1.0.3

func (f *FileSectionReadCloser) Read(p []byte) (int, error)

type GetObjFunc

type GetObjFunc func(path string, d fs.DirEntry) (s3response.Object, error)

type GetVersionsFunc added in v1.0.8

type GetVersionsFunc func(path, versionIdMarker string, pastVersionIdMarker *bool, availableObjCount int, d fs.DirEntry) (*ObjVersionFuncResult, error)

type ObjVersionFuncResult added in v1.0.8

type ObjVersionFuncResult struct {
	ObjectVersions      []types.ObjectVersion
	DelMarkers          []types.DeleteMarkerEntry
	NextVersionIdMarker string
	Truncated           bool
}

type WalkResults

type WalkResults struct {
	CommonPrefixes []types.CommonPrefix
	Objects        []s3response.Object
	Truncated      bool
	NextMarker     string
}

func Walk

func Walk(ctx context.Context, fileSystem fs.FS, prefix, delimiter, marker string, max int32, getObj GetObjFunc, skipdirs []string) (WalkResults, error)

Walk walks the supplied fs.FS and returns results compatible with list objects responses

type WalkVersioningResults added in v1.0.8

type WalkVersioningResults struct {
	CommonPrefixes      []types.CommonPrefix
	ObjectVersions      []types.ObjectVersion
	DelMarkers          []types.DeleteMarkerEntry
	Truncated           bool
	NextMarker          string
	NextVersionIdMarker string
}

func WalkVersions added in v1.0.8

func WalkVersions(ctx context.Context, fileSystem fs.FS, prefix, delimiter, keyMarker, versionIdMarker string, max int, getObj GetVersionsFunc, skipdirs []string) (WalkVersioningResults, error)

WalkVersions walks the supplied fs.FS and returns results compatible with ListObjectVersions action response

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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