mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-02 11:56:02 +02:00
48 lines
862 B
Go
48 lines
862 B
Go
package redis
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"time"
|
|
)
|
|
|
|
const defaultTTL = time.Second * 30
|
|
|
|
type config struct {
|
|
tls *tls.Config
|
|
ttl time.Duration
|
|
getNow func() time.Time
|
|
}
|
|
|
|
// An Option modifies the config..
|
|
type Option func(*config)
|
|
|
|
// WithGetNow sets the time.Now function in the config.
|
|
func WithGetNow(getNow func() time.Time) Option {
|
|
return func(cfg *config) {
|
|
cfg.getNow = getNow
|
|
}
|
|
}
|
|
|
|
// WithTLSConfig sets the tls.Config in the config.
|
|
func WithTLSConfig(tlsConfig *tls.Config) Option {
|
|
return func(cfg *config) {
|
|
cfg.tls = tlsConfig
|
|
}
|
|
}
|
|
|
|
// WithTTL sets the ttl in the config.
|
|
func WithTTL(ttl time.Duration) Option {
|
|
return func(cfg *config) {
|
|
cfg.ttl = ttl
|
|
}
|
|
}
|
|
|
|
func getConfig(options ...Option) *config {
|
|
cfg := new(config)
|
|
WithGetNow(time.Now)(cfg)
|
|
WithTTL(defaultTTL)(cfg)
|
|
for _, o := range options {
|
|
o(cfg)
|
|
}
|
|
return cfg
|
|
}
|