v3 #197
@@ -559,6 +559,7 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
	if r.Body != nil {
 | 
						if r.Body != nil {
 | 
				
			||||||
		var buf []byte
 | 
							var buf []byte
 | 
				
			||||||
		buf, err = io.ReadAll(r.Body)
 | 
							buf, err = io.ReadAll(r.Body)
 | 
				
			||||||
 | 
							r.Body.Close()
 | 
				
			||||||
		if err != nil && err != io.EOF {
 | 
							if err != nil && err != io.EOF {
 | 
				
			||||||
			h.errorHandler(ctx, handler, w, r, err, http.StatusInternalServerError)
 | 
								h.errorHandler(ctx, handler, w, r, err, http.StatusInternalServerError)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										41
									
								
								util_test.go
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								util_test.go
									
									
									
									
									
								
							@@ -3,6 +3,9 @@ package http
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"go.unistack.org/micro/v3/options"
 | 
				
			||||||
 | 
						"go.unistack.org/micro/v3/server"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
@@ -54,3 +57,41 @@ func TestFillrequest(t *testing.T) {
 | 
				
			|||||||
		t.Fatalf("FillRequest error: %#+v", req)
 | 
							t.Fatalf("FillRequest error: %#+v", req)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func Test_Hook(t *testing.T) {
 | 
				
			||||||
 | 
						opts := server.Options{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var fn server.HandlerFunc = func(fctx context.Context, req server.Request, rsp interface{}) (err error) {
 | 
				
			||||||
 | 
							fmt.Println("1")
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var fn2 server.HandlerWrapper = func(server.HandlerFunc) server.HandlerFunc {
 | 
				
			||||||
 | 
							return func(ctx context.Context, req server.Request, rsp interface{}) error {
 | 
				
			||||||
 | 
								fmt.Println("2")
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var fn3 server.HandlerWrapper = func(server.HandlerFunc) server.HandlerFunc {
 | 
				
			||||||
 | 
							return func(ctx context.Context, req server.Request, rsp interface{}) error {
 | 
				
			||||||
 | 
								fmt.Println("3")
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var fn4 server.HandlerWrapper = func(server.HandlerFunc) server.HandlerFunc {
 | 
				
			||||||
 | 
							return func(ctx context.Context, req server.Request, rsp interface{}) error {
 | 
				
			||||||
 | 
								fmt.Println("4")
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						opts.Hooks = append(opts.Hooks, fn2, fn3, fn4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						opts.Hooks.EachNext(func(hook options.Hook) {
 | 
				
			||||||
 | 
							if h, ok := hook.(server.HandlerWrapper); ok {
 | 
				
			||||||
 | 
								fn = h(fn)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fn(nil, nil, nil)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user