diff --git a/go.mod b/go.mod index ee8f674..a948ff4 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,4 @@ module github.com/unistack-org/micro-client-http/v3 go 1.16 -require github.com/unistack-org/micro/v3 v3.2.26 +require github.com/unistack-org/micro/v3 v3.3.0 diff --git a/go.sum b/go.sum index fde38aa..c06229d 100644 --- a/go.sum +++ b/go.sum @@ -5,7 +5,8 @@ github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/silas/dag v0.0.0-20210121180416-41cf55125c34/go.mod h1:7RTUFBdIRC9nZ7/3RyRNH1bdqIShrDejd1YbLwgPS+I= -github.com/unistack-org/micro/v3 v3.2.26/go.mod h1:iJwCWq2PECMxigfqe6TPC5GLWvj6P94Kk+PTVZGL3w8= +github.com/unistack-org/micro/v3 v3.3.0 h1:pEj/8QVFzMlNMEL//q/Te8qgG+XI6LTYIQrb6hMymgk= +github.com/unistack-org/micro/v3 v3.3.0/go.mod h1:iJwCWq2PECMxigfqe6TPC5GLWvj6P94Kk+PTVZGL3w8= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/http.go b/http.go index d5c5f50..1190dcc 100644 --- a/http.go +++ b/http.go @@ -34,6 +34,7 @@ type httpClient struct { opts client.Options dialer *net.Dialer httpcli *http.Client + init bool } func newRequest(addr string, req client.Request, ct string, cf codec.Codec, msg interface{}, opts client.CallOptions) (*http.Request, error) { @@ -217,9 +218,32 @@ func (h *httpClient) newCodec(ct string) (codec.Codec, error) { } func (h *httpClient) Init(opts ...client.Option) error { + if len(opts) == 0 && h.init { + return nil + } for _, o := range opts { o(&h.opts) } + + if err := h.opts.Broker.Init(); err != nil { + return err + } + if err := h.opts.Tracer.Init(); err != nil { + return err + } + if err := h.opts.Router.Init(); err != nil { + return err + } + if err := h.opts.Logger.Init(); err != nil { + return err + } + if err := h.opts.Meter.Init(); err != nil { + return err + } + if err := h.opts.Transport.Init(); err != nil { + return err + } + return nil }