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) } }