80 lines
1.6 KiB
Go
80 lines
1.6 KiB
Go
package minio
|
|
|
|
import (
|
|
"errors"
|
|
|
|
a "github.com/karincake/apem"
|
|
lo "github.com/karincake/apem/loggero"
|
|
"github.com/minio/minio-go/v7"
|
|
"github.com/minio/minio-go/v7/pkg/credentials"
|
|
)
|
|
|
|
var O MinioCfg = MinioCfg{}
|
|
var I *minio.Client
|
|
|
|
type MinioCfg struct {
|
|
Endpoint string
|
|
Region string
|
|
AccessKey string `yaml:"accessKey"`
|
|
SecretKey string `yaml:"secretKey"`
|
|
UseSsl bool `yaml:"useSsl"`
|
|
BucketName []string `yaml:"bucketName"`
|
|
}
|
|
|
|
type ResponsePostPolicy struct {
|
|
Url string `json:"url"`
|
|
FormData map[string]string `json:"form-data"`
|
|
}
|
|
|
|
func (c MinioCfg) GetRegion() string {
|
|
return c.Region
|
|
}
|
|
|
|
func (c MinioCfg) GetEndpoint() string {
|
|
return c.Endpoint
|
|
}
|
|
|
|
func (c MinioCfg) GetUseSsl() bool {
|
|
return c.UseSsl
|
|
}
|
|
|
|
func (c MinioCfg) GetBucketName() []string {
|
|
return c.BucketName
|
|
}
|
|
|
|
// connect db
|
|
func Connect() {
|
|
a.ParseSingleCfg(&O)
|
|
NewClient(&O)
|
|
if I == nil {
|
|
panic("minio client is nil")
|
|
}
|
|
lo.I.Println("Instantiation for object storage service using Minio, status: DONE!!")
|
|
}
|
|
|
|
func NewClient(cfg *MinioCfg) error {
|
|
// Initialize minio client object.
|
|
endpoint := cfg.Endpoint
|
|
if endpoint == "" {
|
|
return errors.New("config minio endpoint empty")
|
|
}
|
|
accessKey := cfg.AccessKey
|
|
if accessKey == "" {
|
|
return errors.New("config minio access key empty")
|
|
}
|
|
secretKey := cfg.SecretKey
|
|
if secretKey == "" {
|
|
return errors.New("config minio secret key empty")
|
|
}
|
|
useSSL := cfg.UseSsl
|
|
minioClient, err := minio.New(endpoint, &minio.Options{
|
|
Creds: credentials.NewStaticV4(accessKey, secretKey, ""),
|
|
Secure: useSSL,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
I = minioClient
|
|
return nil
|
|
}
|