package proxy import ( "time" "forge.cadoles.com/cadoles/bouncer/internal/config" "forge.cadoles.com/cadoles/bouncer/internal/proxy/director" ) type Option struct { ServerConfig config.ProxyServerConfig RedisConfig config.RedisConfig DirectorLayers []director.Layer DirectorCacheTTL time.Duration } type OptionFunc func(*Option) func defaultOption() *Option { return &Option{ ServerConfig: config.NewDefaultProxyServerConfig(), RedisConfig: config.NewDefaultRedisConfig(), DirectorLayers: make([]director.Layer, 0), DirectorCacheTTL: 30 * time.Second, } } func WithServerConfig(conf config.ProxyServerConfig) OptionFunc { return func(opt *Option) { opt.ServerConfig = conf } } func WithRedisConfig(conf config.RedisConfig) OptionFunc { return func(opt *Option) { opt.RedisConfig = conf } } func WithDirectorLayers(layers ...director.Layer) OptionFunc { return func(opt *Option) { opt.DirectorLayers = layers } } func WithDirectorCacheTTL(ttl time.Duration) OptionFunc { return func(opt *Option) { opt.DirectorCacheTTL = ttl } }