mirror of
https://github.com/go-micro/go-micro.git
synced 2024-12-12 08:23:58 +02:00
71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
package etcd
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"go-micro.dev/v4/config/source"
|
|
)
|
|
|
|
type addressKey struct{}
|
|
type prefixKey struct{}
|
|
type stripPrefixKey struct{}
|
|
type authKey struct{}
|
|
type dialTimeoutKey struct{}
|
|
|
|
type authCreds struct {
|
|
Username string
|
|
Password string
|
|
}
|
|
|
|
// WithAddress sets the etcd address
|
|
func WithAddress(a ...string) source.Option {
|
|
return func(o *source.Options) {
|
|
if o.Context == nil {
|
|
o.Context = context.Background()
|
|
}
|
|
o.Context = context.WithValue(o.Context, addressKey{}, a)
|
|
}
|
|
}
|
|
|
|
// WithPrefix sets the key prefix to use
|
|
func WithPrefix(p string) source.Option {
|
|
return func(o *source.Options) {
|
|
if o.Context == nil {
|
|
o.Context = context.Background()
|
|
}
|
|
o.Context = context.WithValue(o.Context, prefixKey{}, p)
|
|
}
|
|
}
|
|
|
|
// StripPrefix indicates whether to remove the prefix from config entries, or leave it in place.
|
|
func StripPrefix(strip bool) source.Option {
|
|
return func(o *source.Options) {
|
|
if o.Context == nil {
|
|
o.Context = context.Background()
|
|
}
|
|
|
|
o.Context = context.WithValue(o.Context, stripPrefixKey{}, strip)
|
|
}
|
|
}
|
|
|
|
// Auth allows you to specify username/password
|
|
func Auth(username, password string) source.Option {
|
|
return func(o *source.Options) {
|
|
if o.Context == nil {
|
|
o.Context = context.Background()
|
|
}
|
|
o.Context = context.WithValue(o.Context, authKey{}, &authCreds{Username: username, Password: password})
|
|
}
|
|
}
|
|
|
|
// WithDialTimeout set the time out for dialing to etcd
|
|
func WithDialTimeout(timeout time.Duration) source.Option {
|
|
return func(o *source.Options) {
|
|
if o.Context == nil {
|
|
o.Context = context.Background()
|
|
}
|
|
o.Context = context.WithValue(o.Context, dialTimeoutKey{}, timeout)
|
|
}
|
|
}
|