Define own, minimal S3API interface
This commit is contained in:
parent
cc78da7de5
commit
37fe99b37d
|
@ -97,7 +97,6 @@ import (
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
"github.com/aws/aws-sdk-go/service/s3"
|
"github.com/aws/aws-sdk-go/service/s3"
|
||||||
"github.com/aws/aws-sdk-go/service/s3/s3iface"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// This regular expression matches every character which is not defined in the
|
// This regular expression matches every character which is not defined in the
|
||||||
|
@ -112,7 +111,7 @@ type S3Store struct {
|
||||||
// Service specifies an interface used to communicate with the S3 backend.
|
// Service specifies an interface used to communicate with the S3 backend.
|
||||||
// Usually, this is an instance of github.com/aws/aws-sdk-go/service/s3.S3
|
// Usually, this is an instance of github.com/aws/aws-sdk-go/service/s3.S3
|
||||||
// (http://docs.aws.amazon.com/sdk-for-go/api/service/s3/S3.html).
|
// (http://docs.aws.amazon.com/sdk-for-go/api/service/s3/S3.html).
|
||||||
Service s3iface.S3API
|
Service S3API
|
||||||
// MaxPartSize specifies the maximum size of a single part uploaded to S3
|
// MaxPartSize specifies the maximum size of a single part uploaded to S3
|
||||||
// in bytes. This value must be bigger than MinPartSize! In order to
|
// in bytes. This value must be bigger than MinPartSize! In order to
|
||||||
// choose the correct number, two things have to be kept in mind:
|
// choose the correct number, two things have to be kept in mind:
|
||||||
|
@ -131,9 +130,21 @@ type S3Store struct {
|
||||||
MinPartSize int64
|
MinPartSize int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type S3API interface {
|
||||||
|
PutObject(input *s3.PutObjectInput) (*s3.PutObjectOutput, error)
|
||||||
|
ListParts(input *s3.ListPartsInput) (*s3.ListPartsOutput, error)
|
||||||
|
UploadPart(input *s3.UploadPartInput) (*s3.UploadPartOutput, error)
|
||||||
|
GetObject(input *s3.GetObjectInput) (*s3.GetObjectOutput, error)
|
||||||
|
CreateMultipartUpload(input *s3.CreateMultipartUploadInput) (*s3.CreateMultipartUploadOutput, error)
|
||||||
|
AbortMultipartUpload(input *s3.AbortMultipartUploadInput) (*s3.AbortMultipartUploadOutput, error)
|
||||||
|
DeleteObjects(input *s3.DeleteObjectsInput) (*s3.DeleteObjectsOutput, error)
|
||||||
|
CompleteMultipartUpload(input *s3.CompleteMultipartUploadInput) (*s3.CompleteMultipartUploadOutput, error)
|
||||||
|
UploadPartCopy(input *s3.UploadPartCopyInput) (*s3.UploadPartCopyOutput, error)
|
||||||
|
}
|
||||||
|
|
||||||
// New constructs a new storage using the supplied bucket and service object.
|
// New constructs a new storage using the supplied bucket and service object.
|
||||||
// The MaxPartSize and MinPartSize properties are set to 6 and 5MB.
|
// The MaxPartSize and MinPartSize properties are set to 6 and 5MB.
|
||||||
func New(bucket string, service s3iface.S3API) S3Store {
|
func New(bucket string, service S3API) S3Store {
|
||||||
return S3Store{
|
return S3Store{
|
||||||
Bucket: bucket,
|
Bucket: bucket,
|
||||||
Service: service,
|
Service: service,
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -15,7 +15,7 @@ import (
|
||||||
"github.com/tus/tusd/s3store"
|
"github.com/tus/tusd/s3store"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:generate mockgen -destination=./s3store_mock_test.go -package=s3store_test github.com/aws/aws-sdk-go/service/s3/s3iface S3API
|
//go:generate mockgen -destination=./s3store_mock_test.go -package=s3store_test github.com/tus/tusd/s3store S3API
|
||||||
|
|
||||||
// Test interface implementations
|
// Test interface implementations
|
||||||
var _ tusd.DataStore = s3store.S3Store{}
|
var _ tusd.DataStore = s3store.S3Store{}
|
||||||
|
|
Loading…
Reference in New Issue