heruvym/dal/minio/minio.go

101 lines
2.3 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"
2024-02-22 13:34:33 +00:00
"net/http"
2022-12-13 10:07:15 +00:00
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
}
2024-05-28 13:18:19 +00:00
const (
bucket = "3c580be9-cf31f296-d055-49cf-b39e-30c7959dc17b"
folder = "angelsight"
)
2021-09-05 15:24:13 +00:00
func New(ctx context.Context, logger hlog.Logger,
endpoint, keyID, accessKey, token, region string,
2021-09-05 15:24:13 +00:00
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),
Secure: false,
2021-09-05 15:24:13 +00:00
},
)
if err != nil {
return nil, err
}
2024-02-21 14:42:23 +00:00
fmt.Println("monio", keyID, accessKey, token, region)
2021-09-05 15:24:13 +00:00
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 {
2024-05-28 13:18:19 +00:00
info, err := bs.store.PutObject(ctx, bucket, folder+"/"+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 {
2024-02-22 13:34:33 +00:00
fmt.Println(err)
2021-09-05 15:24:13 +00:00
return err
}
2024-02-21 14:42:23 +00:00
fmt.Println("info", info)
2021-09-05 15:24:13 +00:00
return nil
}
func (bs *BlobStore) DeleteFile(ctx context.Context, id string) error {
2024-05-28 13:18:19 +00:00
if err := bs.store.RemoveObject(ctx, bucket, folder+"/"+id, minio.RemoveObjectOptions{
2021-09-05 15:24:13 +00:00
//GovernanceBypass: false,
//VersionID: "",
//Internal: AdvancedRemoveOptions
}); err != nil {
return err
}
return nil
2022-12-13 10:07:15 +00:00
}
2024-02-22 13:34:33 +00:00
func (bs *BlobStore) FileExists(ctx context.Context, filename string) (bool, error) {
2024-05-28 13:18:19 +00:00
_, err := bs.store.StatObject(ctx, bucket, folder+"/"+filename, minio.StatObjectOptions{})
2024-02-22 13:34:33 +00:00
if err != nil {
if minio.ToErrorResponse(err).StatusCode == http.StatusNotFound {
return false, nil
}
return false, err
}
return true, nil
}