heruvym/dal/minio/minio.go

95 lines
2.1 KiB
Go
Raw Normal View History

2021-09-05 15:24:13 +00:00
package minio
import (
"context"
"fmt"
2022-12-13 10:07:15 +00:00
"io"
2021-09-05 15:24:13 +00:00
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"github.com/themakers/hlog"
)
type BlobStore struct {
2022-12-13 10:07:15 +00:00
log hlog.Logger
2021-09-05 15:24:13 +00:00
store *minio.Client
}
2022-02-27 15:27:44 +00:00
const bucket = "pair"
2021-09-05 15:24:13 +00:00
func New(ctx context.Context, logger hlog.Logger,
endpoint, keyID, accessKey, token string,
useSSL bool) (*BlobStore, error) {
conn, err := minio.New(endpoint,
&minio.Options{
2022-12-13 10:07:15 +00:00
Creds: credentials.NewStaticV4(keyID, accessKey, token),
2021-09-05 15:24:13 +00:00
Secure: useSSL,
},
)
if err != nil {
return nil, err
}
bucketExists, err := conn.BucketExists(ctx, bucket)
if err != nil {
return nil, err
}
if !bucketExists {
if err := conn.MakeBucket(ctx, bucket, minio.MakeBucketOptions{}); err != nil {
return nil, err
}
}
return &BlobStore{
2022-12-13 10:07:15 +00:00
log: logger.Module("minio"),
2021-09-05 15:24:13 +00:00
store: conn,
}, nil
}
func (bs *BlobStore) PutFile(
ctx context.Context,
filename string,
reader io.Reader,
size int64) error {
2022-12-13 10:07:15 +00:00
info, err := bs.store.PutObject(ctx, bucket, filename, reader, size, minio.PutObjectOptions{
2021-09-05 15:24:13 +00:00
//UserMetadata: nil,
//UserTags: nil,
//Progress: nil,
//ContentType: "",
//ContentEncoding: "",
//ContentDisposition: "",
//ContentLanguage: "",
//CacheControl: "",
//Mode: "",
//RetainUntilDate: time.Time{},
//ServerSideEncryption: nil,
//NumThreads: 0,
//StorageClass: "",
//WebsiteRedirectLocation: "",
//PartSize: 0,
//LegalHold: "",
//SendContentMd5: false,
//DisableMultipart: false,
//Internal: minio.AdvancedPutOptions{},
})
if err != nil {
return err
}
fmt.Println(info)
return nil
}
func (bs *BlobStore) DeleteFile(ctx context.Context, id string) error {
if err := bs.store.RemoveObject(ctx, bucket, id, minio.RemoveObjectOptions{
//GovernanceBypass: false,
//VersionID: "",
//Internal: AdvancedRemoveOptions
}); err != nil {
return err
}
return nil
2022-12-13 10:07:15 +00:00
}