Use functional options to configure KinesisClient (#46)
This commit is contained in:
parent
64cdf69249
commit
4bdbbefa34
1 changed files with 22 additions and 3 deletions
25
client.go
25
client.go
|
|
@ -9,10 +9,29 @@ import (
|
||||||
"github.com/aws/aws-sdk-go/service/kinesis"
|
"github.com/aws/aws-sdk-go/service/kinesis"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// ClientOption is used to override defaults when creating a KinesisClient
|
||||||
|
type ClientOption func(*KinesisClient)
|
||||||
|
|
||||||
|
// WithKinesis overrides the default Kinesis client
|
||||||
|
func WithKinesis(svc *kinesis.Kinesis) ClientOption {
|
||||||
|
return func(kc *KinesisClient) {
|
||||||
|
kc.svc = svc
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// NewKinesisClient returns client to interface with Kinesis stream
|
// NewKinesisClient returns client to interface with Kinesis stream
|
||||||
func NewKinesisClient() *KinesisClient {
|
func NewKinesisClient(opts ...ClientOption) *KinesisClient {
|
||||||
svc := kinesis.New(session.New(aws.NewConfig()))
|
kc := &KinesisClient{}
|
||||||
return &KinesisClient{svc}
|
|
||||||
|
for _, opt := range opts {
|
||||||
|
opt(kc)
|
||||||
|
}
|
||||||
|
|
||||||
|
if kc.svc == nil {
|
||||||
|
kc.svc = kinesis.New(session.New(aws.NewConfig()))
|
||||||
|
}
|
||||||
|
|
||||||
|
return kc
|
||||||
}
|
}
|
||||||
|
|
||||||
// KinesisClient acts as wrapper around Kinesis client
|
// KinesisClient acts as wrapper around Kinesis client
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue