From 2edba5d03f11267f70d33b9a981e549a118b55d2 Mon Sep 17 00:00:00 2001 From: Shane C Date: Fri, 22 Nov 2024 13:31:14 -0500 Subject: [PATCH] add option to use an existing s3 client. --- storage.go | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/storage.go b/storage.go index d1c5357..547a5dc 100644 --- a/storage.go +++ b/storage.go @@ -42,6 +42,9 @@ type Config struct { S3AccessKey string S3BucketName string + + // Override default s3 client. + MinioClient *minio.Client } // New creates a new storage interface @@ -54,26 +57,29 @@ func New(config Config) (*Storage, error) { switch config.Type { case "minio", "s3": - s3Client, err := minio.New(config.S3Endpoint, &minio.Options{ - Creds: credentials.NewStaticV4(config.S3AccessID, config.S3AccessKey, ""), - Secure: config.S3Secure, - }) - if err != nil { - return nil, err + if config.MinioClient != nil { + newStorage.s3Client = config.MinioClient + } else { + s3Client, err := minio.New(config.S3Endpoint, &minio.Options{ + Creds: credentials.NewStaticV4(config.S3AccessID, config.S3AccessKey, ""), + Secure: config.S3Secure, + }) + if err != nil { + return nil, err + } + newStorage.s3Client = s3Client } - bucketExists, err := s3Client.BucketExists(newStorage.ctx, config.S3BucketName) + bucketExists, err := newStorage.s3Client.BucketExists(newStorage.ctx, config.S3BucketName) if err != nil { return nil, err } if !bucketExists { - if err := s3Client.MakeBucket(newStorage.ctx, config.S3BucketName, minio.MakeBucketOptions{}); err != nil { + if err := newStorage.s3Client.MakeBucket(newStorage.ctx, config.S3BucketName, minio.MakeBucketOptions{}); err != nil { return nil, err } } - - newStorage.s3Client = s3Client case "local": if statInfo, err := os.Stat(config.Path); err != nil && errors.Is(err, fs.ErrNotExist) { if err := os.MkdirAll(config.Path, 0740); err != nil {