1package manager
2
3import (
4	"context"
5
6	"github.com/aws/aws-sdk-go-v2/service/s3"
7)
8
9// DeleteObjectsAPIClient is an S3 API client that can invoke the DeleteObjects operation.
10type DeleteObjectsAPIClient interface {
11	DeleteObjects(context.Context, *s3.DeleteObjectsInput, ...func(*s3.Options)) (*s3.DeleteObjectsOutput, error)
12}
13
14// DownloadAPIClient is an S3 API client that can invoke the GetObject operation.
15type DownloadAPIClient interface {
16	GetObject(context.Context, *s3.GetObjectInput, ...func(*s3.Options)) (*s3.GetObjectOutput, error)
17}
18
19// HeadBucketAPIClient is an S3 API client that can invoke the HeadBucket operation.
20type HeadBucketAPIClient interface {
21	HeadBucket(context.Context, *s3.HeadBucketInput, ...func(*s3.Options)) (*s3.HeadBucketOutput, error)
22}
23
24// ListObjectsV2APIClient is an S3 API client that can invoke the ListObjectV2 operation.
25type ListObjectsV2APIClient interface {
26	ListObjectsV2(context.Context, *s3.ListObjectsV2Input, ...func(*s3.Options)) (*s3.ListObjectsV2Output, error)
27}
28
29// UploadAPIClient is an S3 API client that can invoke PutObject, UploadPart, CreateMultipartUpload,
30// CompleteMultipartUpload, and AbortMultipartUpload operations.
31type UploadAPIClient interface {
32	PutObject(context.Context, *s3.PutObjectInput, ...func(*s3.Options)) (*s3.PutObjectOutput, error)
33	UploadPart(context.Context, *s3.UploadPartInput, ...func(*s3.Options)) (*s3.UploadPartOutput, error)
34	CreateMultipartUpload(context.Context, *s3.CreateMultipartUploadInput, ...func(*s3.Options)) (*s3.CreateMultipartUploadOutput, error)
35	CompleteMultipartUpload(context.Context, *s3.CompleteMultipartUploadInput, ...func(*s3.Options)) (*s3.CompleteMultipartUploadOutput, error)
36	AbortMultipartUpload(context.Context, *s3.AbortMultipartUploadInput, ...func(*s3.Options)) (*s3.AbortMultipartUploadOutput, error)
37}
38