package remotefetcher import ( "net/http" "strings" "github.com/aws/aws-sdk-go-v2/service/s3" ) // Option is a function that configures a fetcher. type FetcherOption func(*FetcherConfig) // FetcherConfig holds the configuration for a fetcher. type FetcherConfig struct { S3Client *s3.Client HTTPClient *http.Client FileType string IgnoreFileNotFound bool } // WithS3Client sets the S3 client for the fetcher. func WithS3Client(client *s3.Client) FetcherOption { return func(cfg *FetcherConfig) { cfg.S3Client = client } } // WithHTTPClient sets the HTTP client for the fetcher. func WithHTTPClient(client *http.Client) FetcherOption { return func(cfg *FetcherConfig) { cfg.HTTPClient = client } } func IgnoreFileNotFound() FetcherOption { return func(cfg *FetcherConfig) { cfg.IgnoreFileNotFound = true } } // WithFileType ensures the default FileType will be yaml func WithFileType(fileType string) FetcherOption { return func(cfg *FetcherConfig) { cfg.FileType = fileType if strings.TrimSpace(fileType) == "" { cfg.FileType = "yaml" } } }