Files
distributor/internal/adapters/s3/options.go

43 lines
940 B
Go

package s3
import (
"fmt"
"strings"
"gitea.maximumdirect.net/eric/distributor/internal/storage"
)
const BackendName = "s3"
const DefaultRegion = "us-east-1"
type Options struct {
Endpoint string
Bucket string
Prefix string
Region string
ForcePathStyle bool
AccessKeyID string
SecretAccessKey string
}
func (o Options) normalized() (Options, error) {
if o.Endpoint == "" {
return Options{}, fmt.Errorf("endpoint is required")
}
if o.Bucket == "" {
return Options{}, fmt.Errorf("bucket is required")
}
if o.Region == "" {
o.Region = DefaultRegion
}
o.Prefix = strings.Trim(o.Prefix, "/")
if err := storage.ValidatePrefix(o.Prefix); err != nil {
return Options{}, fmt.Errorf("prefix: %w", err)
}
if (o.AccessKeyID == "") != (o.SecretAccessKey == "") {
return Options{}, fmt.Errorf("access key id and secret access key must be configured together")
}
return o, nil
}