Use functional options to configure KinesisClient (#46)

This commit is contained in:
Tim Bart 2018-04-27 22:12:11 -07:00 committed by Harlow Ward
parent 64cdf69249
commit 4bdbbefa34

View file

@ -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