4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								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 | ||||
| ) | ||||
|  | ||||
|   | ||||
							
								
								
									
										21
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								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= | ||||
|   | ||||
							
								
								
									
										48
									
								
								http.go
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								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 { | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user