43 lines
904 B
Go
43 lines
904 B
Go
package svc
|
|
|
|
import (
|
|
"context"
|
|
"juwan-backend/app/objectstory/rpc/internal/config"
|
|
|
|
"github.com/aws/aws-sdk-go-v2/aws"
|
|
awsConfig "github.com/aws/aws-sdk-go-v2/config"
|
|
"github.com/aws/aws-sdk-go-v2/credentials"
|
|
"github.com/aws/aws-sdk-go-v2/service/s3"
|
|
)
|
|
|
|
type ObjectStorageSvc struct {
|
|
c config.S3ObjectConf
|
|
}
|
|
|
|
func NewObjectStorage(c config.S3ObjectConf) *ObjectStorageSvc {
|
|
return &ObjectStorageSvc{
|
|
c: c,
|
|
}
|
|
}
|
|
|
|
func (s *ObjectStorageSvc) MustNews3Client(ctx context.Context) *s3.Client {
|
|
awsCfg, err := awsConfig.LoadDefaultConfig(ctx,
|
|
awsConfig.WithRegion(s.c.Region),
|
|
awsConfig.WithCredentialsProvider(
|
|
credentials.NewStaticCredentialsProvider(
|
|
s.c.AccessKey,
|
|
s.c.SecretKey,
|
|
"",
|
|
),
|
|
),
|
|
)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return s3.NewFromConfig(awsCfg, func(o *s3.Options) {
|
|
o.BaseEndpoint = aws.String(s.c.Endpoint)
|
|
o.UsePathStyle = s.c.UsePathStyle
|
|
})
|
|
}
|