From e93c6dc1de83f35cdd7ce8c4947b3a96a64d3fcc Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Wed, 24 Mar 2021 15:22:20 +0300 Subject: [PATCH] cleanup Signed-off-by: Vasiliy Tolstov --- go.mod | 4 ++-- go.sum | 21 ++------------------- http.go | 48 ++++++++++++++++++++++++++++++++++++++++-------- options.go | 3 +++ 4 files changed, 47 insertions(+), 29 deletions(-) diff --git a/go.mod b/go.mod index 6d1e4de..55bc55f 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,9 @@ module github.com/unistack-org/micro-server-http/v3 -go 1.13 +go 1.16 require ( - github.com/unistack-org/micro/v3 v3.2.26 + github.com/unistack-org/micro/v3 v3.3.0 golang.org/x/net v0.0.0-20210323141857-08027d57d8cf ) diff --git a/go.sum b/go.sum index 2500a16..49fc654 100644 --- a/go.sum +++ b/go.sum @@ -2,29 +2,12 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/ef-ds/deque v1.0.4/go.mod h1:gXDnTC3yqvBcHbq2lcExjtAcVrOnJCbMcZXmuj8Z4tg= github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= 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.15 h1:9Wg6FAFVPUijAm5ZFF+y4oYEd8zd/Pp48QwmMrSs074= -github.com/unistack-org/micro/v3 v3.2.15/go.mod h1:y+fV+BPNK2IqGoLquRU396jTYifG0HCw3zxFfI4E0dc= -github.com/unistack-org/micro/v3 v3.2.16/go.mod h1:y+fV+BPNK2IqGoLquRU396jTYifG0HCw3zxFfI4E0dc= -github.com/unistack-org/micro/v3 v3.2.17/go.mod h1:y+fV+BPNK2IqGoLquRU396jTYifG0HCw3zxFfI4E0dc= -github.com/unistack-org/micro/v3 v3.2.18 h1:+EnZ6xJJzHINQr7c8nkwygkfy+qLssiKd1hktgEzHL4= -github.com/unistack-org/micro/v3 v3.2.18/go.mod h1:y+fV+BPNK2IqGoLquRU396jTYifG0HCw3zxFfI4E0dc= -github.com/unistack-org/micro/v3 v3.2.20/go.mod h1:y+fV+BPNK2IqGoLquRU396jTYifG0HCw3zxFfI4E0dc= -github.com/unistack-org/micro/v3 v3.2.22 h1:AXyLtRpfcPGczhaA1f9KR0ctK+1Zpqvb+rBJrZtp3Oo= -github.com/unistack-org/micro/v3 v3.2.22/go.mod h1:oI8H/uGq1h4i5cvUycEoFKJQC7G8yChZQNIDNWGSLRU= -github.com/unistack-org/micro/v3 v3.2.23/go.mod h1:iJwCWq2PECMxigfqe6TPC5GLWvj6P94Kk+PTVZGL3w8= -github.com/unistack-org/micro/v3 v3.2.24 h1:3sQ72wy8Vap9KDD7bdLOn+dhlPT0iXSJRXhs2qHoKxA= -github.com/unistack-org/micro/v3 v3.2.24/go.mod h1:iJwCWq2PECMxigfqe6TPC5GLWvj6P94Kk+PTVZGL3w8= -github.com/unistack-org/micro/v3 v3.2.26 h1:tWCDuLRb1GDjY2nxbah0jm6n+sBiPxlgcRFXX7n73Q0= -github.com/unistack-org/micro/v3 v3.2.26/go.mod h1:iJwCWq2PECMxigfqe6TPC5GLWvj6P94Kk+PTVZGL3w8= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210315170653-34ac3e1c2000/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4 h1:b0LrWgu8+q7z4J+0Y3Umo5q1dL7NXBkKBWkaVkAq17E= +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/net v0.0.0-20210323141857-08027d57d8cf h1:sewfyKLWuY3ko6EI4hbFziQ8bHkfammpzCDfLT92I1c= golang.org/x/net v0.0.0-20210323141857-08027d57d8cf/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= diff --git a/http.go b/http.go index 254776b..62afb84 100644 --- a/http.go +++ b/http.go @@ -32,8 +32,8 @@ type httpServer struct { // used for first registration registered bool // register service instance - rsvc *register.Service - + rsvc *register.Service + init bool errorHandler func(context.Context, server.Handler, http.ResponseWriter, *http.Request, error, int) } @@ -52,29 +52,61 @@ func (h *httpServer) Options() server.Options { } func (h *httpServer) Init(opts ...server.Option) error { + if len(opts) == 0 && h.init { + return nil + } + h.Lock() for _, o := range opts { o(&h.opts) } - h.errorHandler = DefaultErrorHandler if fn, ok := h.opts.Context.Value(errorHandlerKey{}).(func(ctx context.Context, s server.Handler, w http.ResponseWriter, r *http.Request, err error, status int)); ok && fn != nil { h.errorHandler = fn } - - h.handlers = make(map[string]server.Handler) + if h.errorHandler == nil { + h.errorHandler = DefaultErrorHandler + } + if h.handlers == nil { + h.handlers = make(map[string]server.Handler) + } h.Unlock() + + if err := h.opts.Register.Init(); err != nil { + return err + } + if err := h.opts.Broker.Init(); err != nil { + return err + } + if err := h.opts.Tracer.Init(); err != nil { + return err + } + if err := h.opts.Auth.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 + } + + h.init = true + return nil } func (h *httpServer) Handle(handler server.Handler) error { h.Lock() if hdlr, ok := handler.(*httpHandler); ok { - if h.handlers == nil { - h.handlers = make(map[string]server.Handler) - } if _, ok := hdlr.hd.(http.Handler); ok { h.hd = handler } else { + if h.handlers == nil { + h.handlers = make(map[string]server.Handler) + } h.handlers[handler.Name()] = handler } } else { diff --git a/options.go b/options.go index 778db51..a8e24af 100644 --- a/options.go +++ b/options.go @@ -64,3 +64,6 @@ type errorHandlerKey struct{} func ErrorHandler(fn func(ctx context.Context, s server.Handler, w http.ResponseWriter, r *http.Request, err error, status int)) server.Option { return server.SetOption(errorHandlerKey{}, fn) } + +// type pathHandlerKey struct{} +// PathHandler specifies http handler for path