filegate/files/minio.go

52 lines
1.3 KiB
Go
Raw Normal View History

2023-08-20 12:46:33 +00:00
package files
import (
"context"
"fmt"
"log"
"strconv"
2023-08-20 12:46:33 +00:00
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"github.com/spf13/viper"
2023-08-20 12:46:33 +00:00
)
var MinioClient *minio.Client
2023-08-20 12:46:33 +00:00
func MinioConnect() {
endpoint := fmt.Sprintf("%s:%d", viper.GetString("minio.hostname"), viper.GetInt("minio.port"))
log.Printf("Minio Endpoint: %s", endpoint)
accessKeyID := viper.GetString("minio.accessKeyID")
accessKeySecret := viper.GetString("minio.accessKeySecret")
useSSL, err := strconv.ParseBool(viper.GetString("minio.sslmode"))
2023-08-20 12:46:33 +00:00
minioClient, err := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKeyID, accessKeySecret, ""),
Secure: useSSL,
2023-08-20 12:46:33 +00:00
})
if err != nil {
log.Fatalf("Could not connect to Minio storage: %v", err)
}
MinioClient = minioClient
2023-08-20 12:46:33 +00:00
}
func MinioSetup() {
2023-08-20 12:46:33 +00:00
ctx := context.Background()
client := MinioClient
bucketName := viper.GetString("minio.bucket")
err := client.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{Region: ""})
if err != nil {
// Check to see if we already own this bucket (which happens if you run this twice)
exists, errBucketExists := client.BucketExists(ctx, bucketName)
if errBucketExists == nil && exists {
log.Printf("We already own %s\n", bucketName)
} else {
log.Fatalln(err)
}
} else {
log.Printf("Successfully created %s\n", bucketName)
}
2023-08-20 12:46:33 +00:00
}