|
|
@ -107,7 +107,7 @@ func NewMinio(cache cache.MinioCache, config *config.GlobalConfig) (s3.Interface
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
|
|
defer cancel()
|
|
|
|
defer cancel()
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, config); err != nil {
|
|
|
|
fmt.Println("init minio error:", err)
|
|
|
|
fmt.Println("init minio error:", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return m, nil
|
|
|
|
return m, nil
|
|
|
@ -127,7 +127,7 @@ type Minio struct {
|
|
|
|
config *config.GlobalConfig
|
|
|
|
config *config.GlobalConfig
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) initMinio(ctx context.Context) error {
|
|
|
|
func (m *Minio) initMinio(ctx context.Context, config *config.GlobalConfig) error {
|
|
|
|
if m.init {
|
|
|
|
if m.init {
|
|
|
|
return nil
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -136,7 +136,7 @@ func (m *Minio) initMinio(ctx context.Context) error {
|
|
|
|
if m.init {
|
|
|
|
if m.init {
|
|
|
|
return nil
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
conf := m.config.Object.Minio
|
|
|
|
conf := config.Object.Minio
|
|
|
|
exists, err := m.core.Client.BucketExists(ctx, conf.Bucket)
|
|
|
|
exists, err := m.core.Client.BucketExists(ctx, conf.Bucket)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return fmt.Errorf("check bucket exists error: %w", err)
|
|
|
|
return fmt.Errorf("check bucket exists error: %w", err)
|
|
|
@ -199,7 +199,7 @@ func (m *Minio) PartLimit() *s3.PartLimit {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) InitiateMultipartUpload(ctx context.Context, name string) (*s3.InitiateMultipartUploadResult, error) {
|
|
|
|
func (m *Minio) InitiateMultipartUpload(ctx context.Context, name string) (*s3.InitiateMultipartUploadResult, error) {
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, m.config); err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uploadID, err := m.core.NewMultipartUpload(ctx, m.bucket, name, minio.PutObjectOptions{})
|
|
|
|
uploadID, err := m.core.NewMultipartUpload(ctx, m.bucket, name, minio.PutObjectOptions{})
|
|
|
@ -214,7 +214,7 @@ func (m *Minio) InitiateMultipartUpload(ctx context.Context, name string) (*s3.I
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) CompleteMultipartUpload(ctx context.Context, uploadID string, name string, parts []s3.Part) (*s3.CompleteMultipartUploadResult, error) {
|
|
|
|
func (m *Minio) CompleteMultipartUpload(ctx context.Context, uploadID string, name string, parts []s3.Part) (*s3.CompleteMultipartUploadResult, error) {
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, m.config); err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
minioParts := make([]minio.CompletePart, len(parts))
|
|
|
|
minioParts := make([]minio.CompletePart, len(parts))
|
|
|
@ -255,7 +255,7 @@ func (m *Minio) PartSize(ctx context.Context, size int64) (int64, error) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) AuthSign(ctx context.Context, uploadID string, name string, expire time.Duration, partNumbers []int) (*s3.AuthSignResult, error) {
|
|
|
|
func (m *Minio) AuthSign(ctx context.Context, uploadID string, name string, expire time.Duration, partNumbers []int) (*s3.AuthSignResult, error) {
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, m.config); err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
creds, err := m.opts.Creds.Get()
|
|
|
|
creds, err := m.opts.Creds.Get()
|
|
|
@ -288,7 +288,7 @@ func (m *Minio) AuthSign(ctx context.Context, uploadID string, name string, expi
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) PresignedPutObject(ctx context.Context, name string, expire time.Duration) (string, error) {
|
|
|
|
func (m *Minio) PresignedPutObject(ctx context.Context, name string, expire time.Duration) (string, error) {
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, m.config); err != nil {
|
|
|
|
return "", err
|
|
|
|
return "", err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rawURL, err := m.sign.PresignedPutObject(ctx, m.bucket, name, expire)
|
|
|
|
rawURL, err := m.sign.PresignedPutObject(ctx, m.bucket, name, expire)
|
|
|
@ -302,14 +302,14 @@ func (m *Minio) PresignedPutObject(ctx context.Context, name string, expire time
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) DeleteObject(ctx context.Context, name string) error {
|
|
|
|
func (m *Minio) DeleteObject(ctx context.Context, name string) error {
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, m.config); err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return m.core.Client.RemoveObject(ctx, m.bucket, name, minio.RemoveObjectOptions{})
|
|
|
|
return m.core.Client.RemoveObject(ctx, m.bucket, name, minio.RemoveObjectOptions{})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) StatObject(ctx context.Context, name string) (*s3.ObjectInfo, error) {
|
|
|
|
func (m *Minio) StatObject(ctx context.Context, name string) (*s3.ObjectInfo, error) {
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, m.config); err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
info, err := m.core.Client.StatObject(ctx, m.bucket, name, minio.StatObjectOptions{})
|
|
|
|
info, err := m.core.Client.StatObject(ctx, m.bucket, name, minio.StatObjectOptions{})
|
|
|
@ -325,7 +325,7 @@ func (m *Minio) StatObject(ctx context.Context, name string) (*s3.ObjectInfo, er
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) CopyObject(ctx context.Context, src string, dst string) (*s3.CopyObjectInfo, error) {
|
|
|
|
func (m *Minio) CopyObject(ctx context.Context, src string, dst string) (*s3.CopyObjectInfo, error) {
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, m.config); err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
result, err := m.core.Client.CopyObject(ctx, minio.CopyDestOptions{
|
|
|
|
result, err := m.core.Client.CopyObject(ctx, minio.CopyDestOptions{
|
|
|
@ -359,14 +359,14 @@ func (m *Minio) IsNotFound(err error) bool {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) AbortMultipartUpload(ctx context.Context, uploadID string, name string) error {
|
|
|
|
func (m *Minio) AbortMultipartUpload(ctx context.Context, uploadID string, name string) error {
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, m.config); err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return m.core.AbortMultipartUpload(ctx, m.bucket, name, uploadID)
|
|
|
|
return m.core.AbortMultipartUpload(ctx, m.bucket, name, uploadID)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) ListUploadedParts(ctx context.Context, uploadID string, name string, partNumberMarker int, maxParts int) (*s3.ListUploadedPartsResult, error) {
|
|
|
|
func (m *Minio) ListUploadedParts(ctx context.Context, uploadID string, name string, partNumberMarker int, maxParts int) (*s3.ListUploadedPartsResult, error) {
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, m.config); err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
result, err := m.core.ListObjectParts(ctx, m.bucket, name, uploadID, partNumberMarker, maxParts)
|
|
|
|
result, err := m.core.ListObjectParts(ctx, m.bucket, name, uploadID, partNumberMarker, maxParts)
|
|
|
@ -416,7 +416,7 @@ func (m *Minio) PresignedGetObject(ctx context.Context, name string, expire time
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) AccessURL(ctx context.Context, name string, expire time.Duration, opt *s3.AccessURLOption) (string, error) {
|
|
|
|
func (m *Minio) AccessURL(ctx context.Context, name string, expire time.Duration, opt *s3.AccessURLOption) (string, error) {
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, m.config); err != nil {
|
|
|
|
return "", err
|
|
|
|
return "", err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
reqParams := make(url.Values)
|
|
|
|
reqParams := make(url.Values)
|
|
|
@ -447,7 +447,7 @@ func (m *Minio) getObjectData(ctx context.Context, name string, limit int64) ([]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Minio) FormData(ctx context.Context, name string, size int64, contentType string, duration time.Duration) (*s3.FormData, error) {
|
|
|
|
func (m *Minio) FormData(ctx context.Context, name string, size int64, contentType string, duration time.Duration) (*s3.FormData, error) {
|
|
|
|
if err := m.initMinio(ctx); err != nil {
|
|
|
|
if err := m.initMinio(ctx, m.config); err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
policy := minio.NewPostPolicy()
|
|
|
|
policy := minio.NewPostPolicy()
|
|
|
|