@@ -27,17 +27,14 @@ import (
2727const defaultHttpScheme = "http"
2828
2929type (
30- // MiddlewareFunc defines the function signature for middleware.
31- MiddlewareFunc func (next http.HandlerFunc ) http.HandlerFunc
32-
3330 // Server is a gateway server.
3431 Server struct {
3532 * rest.Server
3633 upstreams []Upstream
3734 conns []zrpc.Client
3835 processHeader func (http.Header ) []string
39- middlewares []MiddlewareFunc
4036 dialer func (conf zrpc.RpcClientConf ) zrpc.Client
37+ middlewares []rest.Middleware
4138 }
4239
4340 // Option defines the method to customize Server.
@@ -107,6 +104,13 @@ func (s *Server) build() error {
107104 })
108105}
109106
107+ func (s * Server ) buildChainHandler (handler http.HandlerFunc ) http.HandlerFunc {
108+ for i := len (s .middlewares ) - 1 ; i >= 0 ; i -- {
109+ handler = s.middlewares [i ](handler )
110+ }
111+ return handler
112+ }
113+
110114func (s * Server ) buildGrpcHandler (source grpcurl.DescriptorSource , resolver jsonpb.AnyResolver ,
111115 cli zrpc.Client , rpcPath string ) func (http.ResponseWriter , * http.Request ) {
112116 handler := func (w http.ResponseWriter , r * http.Request ) {
@@ -273,19 +277,12 @@ func WithHeaderProcessor(processHeader func(http.Header) []string) func(*Server)
273277
274278// WithMiddleware adds one or more middleware functions to process HTTP requests.
275279// Multiple middlewares will be executed in the order they were passed (like an onion model).
276- func WithMiddleware (middlewares ... MiddlewareFunc ) func (* Server ) {
280+ func WithMiddleware (middlewares ... rest. Middleware ) func (* Server ) {
277281 return func (s * Server ) {
278282 s .middlewares = append (s .middlewares , middlewares ... )
279283 }
280284}
281285
282- func (s * Server ) buildChainHandler (handler http.HandlerFunc ) http.HandlerFunc {
283- for i := len (s .middlewares ) - 1 ; i >= 0 ; i -- {
284- handler = s.middlewares [i ](handler )
285- }
286- return handler
287- }
288-
289286func buildRequestWithNewTarget (r * http.Request , target * HttpClientConf ) (* http.Request , error ) {
290287 u := * r .URL
291288 u .Host = target .Target
0 commit comments