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 }) }