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