filegate/files/minio.go

52 lines
1.3 KiB
Go

package files
import (
"context"
"fmt"
"log"
"strconv"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"github.com/spf13/viper"
)
var MinioClient *minio.Client
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"))
minioClient, err := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKeyID, accessKeySecret, ""),
Secure: useSSL,
})
if err != nil {
log.Fatalf("Could not connect to Minio storage: %v", err)
}
MinioClient = minioClient
}
func MinioSetup() {
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)
}
}