start nats migration

This commit is contained in:
2021-11-11 05:56:07 -03:00
parent c80d8b1095
commit 5b590ab31b
5 changed files with 119 additions and 11 deletions
+50
View File
@@ -1,10 +1,15 @@
package api
import (
"encoding/json"
"errors"
"github.com/nats-io/nats.go"
"go.digitalcircle.com.br/open/httpcli"
"go.digitalcircle.com.br/open/replaycli-go/ipcmux"
"go.digitalcircle.com.br/open/replaycli-go/util"
"log"
"os"
"time"
)
type ApiCli struct {
@@ -30,3 +35,48 @@ func NewApiIPCCli() *ApiCli {
ret.cli.AddHeader("X-API-KEY", apikey)
return ret
}
var nc *nats.Conn
func Call(s string, in interface{}, out interface{}) error {
if nc == nil {
var err error
apikey = os.Getenv("REPLAY_APIKEY")
if apikey == "" {
log.Printf("Connecting to NATS Server w/o TK.")
nc, err = nats.Connect(nats.DefaultURL)
} else {
log.Printf("Connecting to NATS Server w TK: " + apikey)
nc, err = nats.Connect(nats.DefaultURL, nats.Token(apikey))
}
if err != nil {
return err
}
}
bs, err := json.Marshal(in)
if err != nil {
return err
}
msg, err := nc.Request(s, bs, time.Minute)
if err != nil {
return err
}
err = json.Unmarshal(msg.Data, out)
if err != nil {
out = bs
return err
}
errstr := msg.Header.Get("ERR")
if errstr != "" {
return errors.New(errstr)
}
return nil
}
func Close() error {
return nc.Drain()
}
+2 -1
View File
@@ -174,7 +174,8 @@ type Cli struct {
func (c *Cli) OCR(opts *Opts) (*Alto, error) {
res := &Alto{}
err := c.HttpCli().JsonPost("/ipc/ocr/", opts, res)
//err := c.HttpCli().JsonPost("/ipc/ocr/", opts, res)
err := api.Call("ocr.ocr", opts, &res)
return res, err
}
+6 -4
View File
@@ -16,12 +16,14 @@ type Cli struct {
func (c *Cli) ClipRead() (string, error) {
ret := ""
err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/clip/read"), &ret)
err := api.Call("wingui.clip.read", nil, &ret)
//err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/clip/read"), &ret)
return ret, err
}
func (c *Cli) ClipWrite(site string) error {
err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/clip/write?str=%s", site), nil)
func (c *Cli) ClipWrite(in string) error {
var out interface{}
err := api.Call("wingui.clip.read", in, &out)
//err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/clip/write?str=%s", site), nil)
return err
}