start nats migration
This commit is contained in:
+50
@@ -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
@@ -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
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user