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 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 New(nc *nats.Conn) Publisher { return &publisher{ nc: nc, } }