72 lines
1.8 KiB
Go
72 lines
1.8 KiB
Go
package publisher
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"encoding/json"
|
|
|
|
cml04eventer "git.espin.casa/albert/cml04-eventer"
|
|
"git.espin.casa/albert/cml04-falcon-system/internal/types"
|
|
"github.com/nats-io/nats.go"
|
|
)
|
|
|
|
type Publisher interface {
|
|
NewBarcode(ctx context.Context, barcode string) error
|
|
NewBundle(ctx context.Context, bundle *types.BundleData) error
|
|
ComfirmedBundle(ctx context.Context, barcode string) error
|
|
}
|
|
|
|
type publisher struct {
|
|
nc *nats.Conn
|
|
}
|
|
|
|
func (e *publisher) ComfirmedBundle(ctx context.Context, barcode string) error {
|
|
// create event message
|
|
evt := cml04eventer.NewEvent("falcon-handset", "bundle.confirmed", 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("bundle.confirmed", buf.Bytes())
|
|
}
|
|
|
|
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 (e *publisher) NewBundle(ctx context.Context, bundle *types.BundleData) error {
|
|
// marshal bundle data
|
|
data, err := json.Marshal(bundle)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
// create event message
|
|
evt := cml04eventer.NewEvent("falcon-handset", "bundle.new", nil, data)
|
|
// 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("bundle.new", buf.Bytes())
|
|
}
|
|
|
|
func New(nc *nats.Conn) Publisher {
|
|
return &publisher{
|
|
nc: nc,
|
|
}
|
|
}
|