cml04-falcon-system/internal/publisher/publisher.go
2024-10-02 13:40:27 +02:00

38 lines
761 B
Go

package publisher
import (
"bytes"
"context"
"encoding/json"
cml04eventer "git.espin.casa/albert/cml04-eventer"
"github.com/nats-io/nats.go"
)
type Publisher interface {
NewBarcode(ctx context.Context, barcode string) error
}
type publisher struct {
nc *nats.Conn
}
func (e *publisher) NewBarcode(ctx context.Context, barcode string) error {
// create event message
evt := cml04eventer.NewEvent("falcon-handset", "barcode.new", nil, []byte(barcode))
// create buffer message data
buf := bytes.Buffer{}
// encode message
if err := json.NewEncoder(&buf).Encode(evt); err != nil {
return err
}
// publish event message
return e.nc.Publish("barcode.new", buf.Bytes())
}
func New(nc *nats.Conn) Publisher {
return &publisher{
nc: nc,
}
}