mirror of
https://github.com/foomo/keel.git
synced 2025-10-16 12:35:34 +00:00
39 lines
705 B
Go
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)
|
|
}
|
|
}
|