Skip to content

Commit 582b47f

Browse files
committed
Add a client
1 parent 6e8a457 commit 582b47f

File tree

4 files changed

+287
-55
lines changed

4 files changed

+287
-55
lines changed

client/client.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package client
2+
3+
import (
4+
"context"
5+
"github.com/go-playground/validator/v10"
6+
"github.com/tidepool-org/go-common/events"
7+
)
8+
9+
const Topic = "emails"
10+
11+
type Client interface {
12+
Send(ctx context.Context, email events.SendEmailTemplateEvent) error
13+
}
14+
15+
type client struct {
16+
producer *events.KafkaCloudEventsProducer
17+
validate *validator.Validate
18+
}
19+
20+
var _ Client = &client{}
21+
22+
func NewClient(config *events.CloudEventsConfig) (Client, error) {
23+
producer, err := events.NewKafkaCloudEventsProducer(config)
24+
if err != nil {
25+
return nil, err
26+
}
27+
28+
return &client{
29+
producer: producer,
30+
validate : validator.New(),
31+
}, nil
32+
}
33+
34+
func (c *client) Send(ctx context.Context, email events.SendEmailTemplateEvent) error {
35+
if err := c.validate.Var(email.Recipient, "email"); err != nil {
36+
return err
37+
}
38+
if err := c.validate.Var(email.Template, "required,min=1"); err != nil {
39+
return err
40+
}
41+
return c.producer.Send(ctx, email)
42+
}

client/go.mod

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module github.com/tidepool-org/mailer/client
2+
3+
go 1.16
4+
5+
require (
6+
github.com/go-playground/validator/v10 v10.9.0
7+
github.com/tidepool-org/go-common v0.8.3-0.20210910112449-5937a193bc79
8+
go.uber.org/zap v1.16.0 // indirect
9+
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11 // indirect
10+
)

0 commit comments

Comments
 (0)