keel/net/http/cookie/timeprovider.go
Kevin Franklin Kim 1e7dc782c6 feat: add keeltime
2022-01-03 13:20:06 +01:00

39 lines
705 B
Go

package cookie
import (
"time"
keeltime "github.com/foomo/keel/time"
)
type TimeProvider func() time.Time
type (
TimeProviderOptions struct {
Offset time.Duration
}
TimeProviderOption func(options *TimeProviderOptions)
)
func GetDefaultTimeProviderOptions() TimeProviderOptions {
return TimeProviderOptions{}
}
func TimeProviderWithOffset(v time.Duration) TimeProviderOption {
return func(o *TimeProviderOptions) {
o.Offset = v
}
}
func NewTimeProvider(opts ...TimeProviderOption) TimeProvider {
options := GetDefaultTimeProviderOptions()
for _, opt := range opts {
if opt != nil {
opt(&options)
}
}
return func() time.Time {
return keeltime.Now().Add(options.Offset)
}
}