|
|
@@ -33,27 +33,28 @@ type ClientBusHttp struct {
|
|
|
// NewClientBusHttp - -возвращает новый клиент HTTP-шины.
|
|
|
func NewClientBusHttp(owner *d0.LOwner, urlRemote *d0.LTxt) bus_spec.IBusClient {
|
|
|
param := &log_buf.LogBufParam{
|
|
|
+ Owner_:owner,
|
|
|
IsTerm_: d0.MutSafeBool(owner, true),
|
|
|
- Prefix_: d0.LetTxt("ClientBusHttp"),
|
|
|
+ Prefix_: d0.LetTxt(owner, "ClientBusHttp"),
|
|
|
}
|
|
|
log := d1.NewLogBuf(param)
|
|
|
log.Debug("NewClientBusHttp()")
|
|
|
d0.If(urlRemote == nil).Hassert("NewClientBusHttp(): urlRemote is empty", []any{})
|
|
|
kCtx := d2.GetKernCtx()
|
|
|
- resLocal := d0.MutSafeTxtFromEnv(
|
|
|
- d0.LetTxt("LOCAL_HTTP_URL"))
|
|
|
+ resLocal := d0.MutSafeTxtFromEnv(owner, d0.LetTxt(owner, "LOCAL_HTTP_URL"))
|
|
|
resLocal.Hassert("NewClientBusHttp(): in get env LOCAL_HTTP_URL)")
|
|
|
urlLocal := resLocal.Ok()
|
|
|
txtUrl := urlLocal.TrimSuffix("/")
|
|
|
kBusHttp := kbus_http.GetKernelBusHttp()
|
|
|
+ urlRemoteMut:=d0.MutTxt(owner,urlRemote.Get())
|
|
|
sf := &ClientBusHttp{
|
|
|
owner: owner,
|
|
|
lCtx: d1.NewLocalCtx(owner, kCtx.SelfCtx()),
|
|
|
log: log,
|
|
|
bus: kBusHttp,
|
|
|
isWork: d0.MutSafeBool(owner, true),
|
|
|
- urlRemote: d0.LetTxt(urlRemote.TrimSuffix("/")),
|
|
|
- urlLocal: d0.LetTxt(txtUrl),
|
|
|
+ urlRemote: d0.LetTxt(owner, urlRemoteMut.TrimSuffix("/")),
|
|
|
+ urlLocal: d0.LetTxt(owner, txtUrl),
|
|
|
}
|
|
|
return sf
|
|
|
}
|
|
|
@@ -65,7 +66,7 @@ func (sf *ClientBusHttp) Unsubscribe(handler bus_spec.IBusHandlerSubscribe) {
|
|
|
|
|
|
req := &dot.UnsubReq{
|
|
|
HandlerName_: handler.Name().Get(),
|
|
|
- Uuid_: d0.LetTxt(_uuid.String()),
|
|
|
+ Uuid_: d0.LetTxt(sf.owner, _uuid.String()),
|
|
|
}
|
|
|
req.SelfCheck()
|
|
|
binReq, err := json.MarshalIndent(req, "", " ")
|
|
|
@@ -84,16 +85,16 @@ func (sf *ClientBusHttp) Unsubscribe(handler bus_spec.IBusHandlerSubscribe) {
|
|
|
resp := &dot.UnsubResp{}
|
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
|
if err != nil {
|
|
|
- err := d0.LetErr("Unsubscribe(): in unmarshal response, err=\n\t%v", err)
|
|
|
+ err := d0.LetErr(sf.owner, "Unsubscribe(): in unmarshal response, err=\n\t%v", err)
|
|
|
sf.log.Err(err)
|
|
|
return
|
|
|
}
|
|
|
if resp.Status_.Get() != "ok" {
|
|
|
- err := d0.LetErr("Unsubscribe(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
+ err := d0.LetErr(sf.owner, "Unsubscribe(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
sf.log.Err(err)
|
|
|
}
|
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
|
- err := d0.LetErr("Unsubscribe(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
+ err := d0.LetErr(sf.owner, "Unsubscribe(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
sf.log.Err(err)
|
|
|
}
|
|
|
}
|
|
|
@@ -106,13 +107,13 @@ func (sf *ClientBusHttp) Subscribe(handler bus_spec.IBusHandlerSubscribe) *d0.Re
|
|
|
[]any{err})
|
|
|
req := &dot.SubscribeReq{
|
|
|
Topic_: handler.Topic().Get(),
|
|
|
- Uuid_: d0.LetTxt(_uuid.String()),
|
|
|
- WebHook_: d0.LetTxt("%v%v", sf.urlLocal.String()+"/bus/pub"), // Веб-хук всегда на своей стороне
|
|
|
+ Uuid_: d0.LetTxt(sf.owner, _uuid.String()),
|
|
|
+ WebHook_: d0.LetTxt(sf.owner, "%v%v", sf.urlLocal.String()+"/bus/pub"), // Веб-хук всегда на своей стороне
|
|
|
}
|
|
|
req.SelfCheck()
|
|
|
binReq, _ := json.MarshalIndent(req, "", " ")
|
|
|
body := strings.NewReader(string(binReq))
|
|
|
- endPoint := d0.LetTxt("%v%v", sf.urlLocal.String()+"/bus/sub")
|
|
|
+ endPoint := d0.LetTxt(sf.owner, "%v%v", sf.urlLocal.String()+"/bus/sub")
|
|
|
hReq, err := http.NewRequest(http.MethodPost, endPoint.String(), body)
|
|
|
d0.If(err != nil).
|
|
|
Hassert("ClientBusHttp.Subscribe(): in new request, err=\n\t%v",
|
|
|
@@ -120,21 +121,21 @@ func (sf *ClientBusHttp) Subscribe(handler bus_spec.IBusHandlerSubscribe) *d0.Re
|
|
|
|
|
|
resBody := sf.makePost(hReq)
|
|
|
if resBody.IsErr() {
|
|
|
- err := d0.LetErr("ClientBusHttp.Subscribe(): in make POST-request, err=\n\t%w", err)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.Subscribe(): in make POST-request, err=\n\t%w", err)
|
|
|
return d0.ResErr[d0.Bool](err)
|
|
|
}
|
|
|
resp := &dot.SubscribeResp{}
|
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
|
if err != nil {
|
|
|
- err := d0.LetErr("ClientBusHttp.Subscribe(): in unmarshal response, err=\n\t%v", err)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.Subscribe(): in unmarshal response, err=\n\t%v", err)
|
|
|
return d0.ResErr[d0.Bool](err)
|
|
|
}
|
|
|
if resp.Status_.Get() != "ok" {
|
|
|
- err := d0.LetErr("ClientBusHttp.Subscribe(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.Subscribe(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
return d0.ResErr[d0.Bool](err)
|
|
|
}
|
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
|
- err := d0.LetErr("ClientBusHttp.Subscribe(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.Subscribe(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
return d0.ResErr[d0.Bool](err)
|
|
|
}
|
|
|
res := sf.bus.Subscribe(handler)
|
|
|
@@ -149,13 +150,13 @@ func (sf *ClientBusHttp) SendRequest(topic *topic.LTopic, binReq []byte) *d0.Res
|
|
|
err)
|
|
|
req := &dot.ServeReq{
|
|
|
Topic_: topic.Get(),
|
|
|
- Uuid_: d0.LetTxt(_uuid.String()),
|
|
|
+ Uuid_: d0.LetTxt(sf.owner, _uuid.String()),
|
|
|
BinReq_: binReq,
|
|
|
}
|
|
|
req.SelfCheck()
|
|
|
_binReq, _ := json.MarshalIndent(req, "", " ")
|
|
|
body := strings.NewReader(string(_binReq))
|
|
|
- endPont := d0.LetTxt("%v%v", sf.urlRemote.String(), "/bus/request")
|
|
|
+ endPont := d0.LetTxt(sf.owner, "%v%v", sf.urlRemote.String(), "/bus/request")
|
|
|
hReq, err := http.NewRequest(http.MethodPost, endPont.String(), body)
|
|
|
d0.If(err != nil).
|
|
|
Hassert("ClientBusHttp.SendRequest(): in new request, err=\n\t%v",
|
|
|
@@ -163,21 +164,21 @@ func (sf *ClientBusHttp) SendRequest(topic *topic.LTopic, binReq []byte) *d0.Res
|
|
|
|
|
|
resBody := sf.makePost(hReq)
|
|
|
if resBody.IsErr() {
|
|
|
- err := d0.LetErr("ClientBusHttp.SendRequest(): in make request, err=\n\t%w", err)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.SendRequest(): in make request, err=\n\t%w", err)
|
|
|
return d0.WrapErr(resBody, err)
|
|
|
}
|
|
|
resp := &dot.ServeResp{}
|
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
|
if err != nil {
|
|
|
- err := d0.LetErr("ClientBusHttp.SendRequest(): in unmarshal response, err=\n\t%v", err)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.SendRequest(): in unmarshal response, err=\n\t%v", err)
|
|
|
return d0.ResErr[[]byte](err)
|
|
|
}
|
|
|
if resp.Status_.Get() != "ok" {
|
|
|
- err := d0.LetErr("ClientBusHttp.SendRequest(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.SendRequest(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
return d0.ResErr[[]byte](err)
|
|
|
}
|
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
|
- err := d0.LetErr("ClientBusHttp.SendRequest(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.SendRequest(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
return d0.ResErr[[]byte](err)
|
|
|
}
|
|
|
return d0.ResOk(resp.BinResp_)
|
|
|
@@ -186,12 +187,12 @@ func (sf *ClientBusHttp) SendRequest(topic *topic.LTopic, binReq []byte) *d0.Res
|
|
|
// RegisterServe -- регистрирует в локальной шине обработчик.
|
|
|
func (sf *ClientBusHttp) RegisterServe(handler bus_spec.IBusHandlerServe) *d0.Result[d0.Bool] {
|
|
|
if handler == nil {
|
|
|
- err := d0.LetErr("ClientBusHttp.RegisterServe(): handler==nil")
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.RegisterServe(): handler==nil")
|
|
|
return d0.ResErr[d0.Bool](err)
|
|
|
}
|
|
|
res := sf.bus.RegisterServe(handler)
|
|
|
if res.IsErr() {
|
|
|
- err := d0.LetErr("ClientBusHttp.RegisterServe(): in register serve to bus, err=\n\t%v", res.Err())
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.RegisterServe(): in register serve to bus, err=\n\t%v", res.Err())
|
|
|
return d0.ResErr[d0.Bool](err)
|
|
|
}
|
|
|
return d0.ResOk(d0.Bool(true))
|
|
|
@@ -205,33 +206,33 @@ func (sf *ClientBusHttp) Publish(topic *topic.LTopic, binMsg []byte) *d0.Result[
|
|
|
err)
|
|
|
req := &dot.PublishReq{
|
|
|
Topic_: topic.Get(),
|
|
|
- Uuid_: d0.LetTxt(_uuid.String()),
|
|
|
+ Uuid_: d0.LetTxt(sf.owner, _uuid.String()),
|
|
|
BinMsg_: binMsg,
|
|
|
}
|
|
|
req.SelfCheck()
|
|
|
binReq, _ := json.MarshalIndent(req, "", " ")
|
|
|
body := strings.NewReader(string(binReq))
|
|
|
- endPoint := d0.LetTxt("%v%v", sf.urlRemote.Get(), "/bus/pub")
|
|
|
+ endPoint := d0.LetTxt(sf.owner, "%v%v", sf.urlRemote.Get(), "/bus/pub")
|
|
|
hReq, err := http.NewRequest(http.MethodPost, endPoint.String(), body)
|
|
|
d0.If(err != nil).Hassert("ClientBusHttp.Publish(): in new request, err=\n\t%v")
|
|
|
|
|
|
resBody := sf.makePost(hReq)
|
|
|
if resBody.IsErr() {
|
|
|
- err := d0.LetErr("ClientBusHttp.Publish(): in make request, err=\n\t%w", err)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.Publish(): in make request, err=\n\t%w", err)
|
|
|
return d0.ResErr[d0.Bool](err)
|
|
|
}
|
|
|
resp := &dot.PublishResp{}
|
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
|
if err != nil {
|
|
|
- err := d0.LetErr("ClientBusHttp.Publish(): in unmarshal response, err=\n\t%v", err)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.Publish(): in unmarshal response, err=\n\t%v", err)
|
|
|
return d0.ResErr[d0.Bool](err)
|
|
|
}
|
|
|
if resp.Status_.Get() != "ok" {
|
|
|
- err := d0.LetErr("ClientBusHttp.Publish(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.Publish(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
return d0.ResErr[d0.Bool](err)
|
|
|
}
|
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
|
- err := d0.LetErr("ClientBusHttp.Publish(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.Publish(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
return d0.ResErr[d0.Bool](err)
|
|
|
}
|
|
|
return d0.ResOk(d0.Bool(true))
|
|
|
@@ -242,21 +243,21 @@ func (sf *ClientBusHttp) makePost(hReq *http.Request) *d0.Result[[]byte] {
|
|
|
hReq.Header.Add("Content-Type", "application/json")
|
|
|
_resp, err := http.DefaultClient.Do(hReq)
|
|
|
if err != nil {
|
|
|
- err := d0.LetErr("ClientBusHttp.makePost(): after request, err=\n\t%w", err)
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.makePost(): after request, err=\n\t%w", err)
|
|
|
return d0.ResErr[[]byte](err)
|
|
|
}
|
|
|
defer func() {
|
|
|
_ = _resp.Body.Close()
|
|
|
}()
|
|
|
if _resp.StatusCode != http.StatusOK {
|
|
|
- err := d0.LetErr("ClientBusHttp.makePost(): url=%q, status=%q",
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.makePost(): url=%q, status=%q",
|
|
|
hReq.URL, _resp.Status)
|
|
|
return d0.ResErr[[]byte](err)
|
|
|
}
|
|
|
|
|
|
binBody, err := io.ReadAll(_resp.Body)
|
|
|
if err != nil {
|
|
|
- err := d0.LetErr("ClientBusHttp.makePost(): after read body, err=\n\t%v",
|
|
|
+ err := d0.LetErr(sf.owner, "ClientBusHttp.makePost(): after read body, err=\n\t%v",
|
|
|
err)
|
|
|
return d0.ResErr[[]byte](err)
|
|
|
}
|