Fix handler visibility
This commit is contained in:
parent
0c5f1081ab
commit
9dbfbee993
14
router.go
14
router.go
@ -16,6 +16,20 @@ type Handler interface {
|
|||||||
Serve(params []string)
|
Serve(params []string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SimpleHandler implements the Handler interface
|
||||||
|
type SimpleHandler struct {
|
||||||
|
fn func(params []string)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *SimpleHandler) Serve(params []string) {
|
||||||
|
h.fn(params)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewHandler creates a Handler from a function
|
||||||
|
func NewHandler(fn func(params []string)) Handler {
|
||||||
|
return &SimpleHandler{fn: fn}
|
||||||
|
}
|
||||||
|
|
||||||
// Middleware wraps a handler with additional functionality.
|
// Middleware wraps a handler with additional functionality.
|
||||||
type Middleware func(Handler) Handler
|
type Middleware func(Handler) Handler
|
||||||
|
|
||||||
|
@ -8,20 +8,6 @@ import (
|
|||||||
assert "git.sharkk.net/Go/Assert"
|
assert "git.sharkk.net/Go/Assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
// simpleHandler implements the Handler interface
|
|
||||||
type simpleHandler struct {
|
|
||||||
fn func(params []string)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *simpleHandler) Serve(params []string) {
|
|
||||||
h.fn(params)
|
|
||||||
}
|
|
||||||
|
|
||||||
// newHandler creates a simple Handler from a function
|
|
||||||
func newHandler(fn func(params []string)) Handler {
|
|
||||||
return &simpleHandler{fn: fn}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRootPath(t *testing.T) {
|
func TestRootPath(t *testing.T) {
|
||||||
r := New()
|
r := New()
|
||||||
r.Get("/", func(w Res, r Req, params []string) {
|
r.Get("/", func(w Res, r Req, params []string) {
|
||||||
@ -196,7 +182,7 @@ func TestMiddleware(t *testing.T) {
|
|||||||
executed := false
|
executed := false
|
||||||
|
|
||||||
r.Use(func(next Handler) Handler {
|
r.Use(func(next Handler) Handler {
|
||||||
return newHandler(func(params []string) {
|
return NewHandler(func(params []string) {
|
||||||
executed = true
|
executed = true
|
||||||
next.Serve(params)
|
next.Serve(params)
|
||||||
})
|
})
|
||||||
@ -217,7 +203,7 @@ func TestMiddleware(t *testing.T) {
|
|||||||
order := []int{}
|
order := []int{}
|
||||||
|
|
||||||
r.Use(func(next Handler) Handler {
|
r.Use(func(next Handler) Handler {
|
||||||
return newHandler(func(params []string) {
|
return NewHandler(func(params []string) {
|
||||||
order = append(order, 1)
|
order = append(order, 1)
|
||||||
next.Serve(params)
|
next.Serve(params)
|
||||||
order = append(order, 4)
|
order = append(order, 4)
|
||||||
@ -225,7 +211,7 @@ func TestMiddleware(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
r.Use(func(next Handler) Handler {
|
r.Use(func(next Handler) Handler {
|
||||||
return newHandler(func(params []string) {
|
return NewHandler(func(params []string) {
|
||||||
order = append(order, 2)
|
order = append(order, 2)
|
||||||
next.Serve(params)
|
next.Serve(params)
|
||||||
order = append(order, 3)
|
order = append(order, 3)
|
||||||
@ -255,7 +241,7 @@ func TestMiddleware(t *testing.T) {
|
|||||||
executed := false
|
executed := false
|
||||||
|
|
||||||
middleware := func(next Handler) Handler {
|
middleware := func(next Handler) Handler {
|
||||||
return newHandler(func(params []string) {
|
return NewHandler(func(params []string) {
|
||||||
executed = true
|
executed = true
|
||||||
next.Serve(params)
|
next.Serve(params)
|
||||||
})
|
})
|
||||||
@ -304,7 +290,7 @@ func TestGroup(t *testing.T) {
|
|||||||
// Create group with middleware
|
// Create group with middleware
|
||||||
api := r.Group("/api")
|
api := r.Group("/api")
|
||||||
api.Use(func(next Handler) Handler {
|
api.Use(func(next Handler) Handler {
|
||||||
return newHandler(func(params []string) {
|
return NewHandler(func(params []string) {
|
||||||
executed = true
|
executed = true
|
||||||
next.Serve(params)
|
next.Serve(params)
|
||||||
})
|
})
|
||||||
@ -325,7 +311,7 @@ func TestGroup(t *testing.T) {
|
|||||||
// Create group with middleware
|
// Create group with middleware
|
||||||
api := r.Group("/api")
|
api := r.Group("/api")
|
||||||
api.Use(func(next Handler) Handler {
|
api.Use(func(next Handler) Handler {
|
||||||
return newHandler(func(params []string) {
|
return NewHandler(func(params []string) {
|
||||||
order = append(order, 1)
|
order = append(order, 1)
|
||||||
next.Serve(params)
|
next.Serve(params)
|
||||||
})
|
})
|
||||||
@ -334,7 +320,7 @@ func TestGroup(t *testing.T) {
|
|||||||
// Create nested group with additional middleware
|
// Create nested group with additional middleware
|
||||||
v1 := api.Group("/v1")
|
v1 := api.Group("/v1")
|
||||||
v1.Use(func(next Handler) Handler {
|
v1.Use(func(next Handler) Handler {
|
||||||
return newHandler(func(params []string) {
|
return NewHandler(func(params []string) {
|
||||||
order = append(order, 2)
|
order = append(order, 2)
|
||||||
next.Serve(params)
|
next.Serve(params)
|
||||||
})
|
})
|
||||||
@ -362,7 +348,7 @@ func TestGroup(t *testing.T) {
|
|||||||
// Create group with middleware
|
// Create group with middleware
|
||||||
api := r.Group("/api")
|
api := r.Group("/api")
|
||||||
api.Use(func(next Handler) Handler {
|
api.Use(func(next Handler) Handler {
|
||||||
return newHandler(func(params []string) {
|
return NewHandler(func(params []string) {
|
||||||
order = append(order, 1)
|
order = append(order, 1)
|
||||||
next.Serve(params)
|
next.Serve(params)
|
||||||
})
|
})
|
||||||
@ -370,7 +356,7 @@ func TestGroup(t *testing.T) {
|
|||||||
|
|
||||||
// Add route with specific middleware
|
// Add route with specific middleware
|
||||||
api.WithMiddleware(func(next Handler) Handler {
|
api.WithMiddleware(func(next Handler) Handler {
|
||||||
return newHandler(func(params []string) {
|
return NewHandler(func(params []string) {
|
||||||
order = append(order, 2)
|
order = append(order, 2)
|
||||||
next.Serve(params)
|
next.Serve(params)
|
||||||
})
|
})
|
||||||
@ -479,7 +465,7 @@ func BenchmarkWildcardLookup(b *testing.B) {
|
|||||||
|
|
||||||
func BenchmarkMiddleware(b *testing.B) {
|
func BenchmarkMiddleware(b *testing.B) {
|
||||||
passthrough := func(next Handler) Handler {
|
passthrough := func(next Handler) Handler {
|
||||||
return newHandler(func(params []string) {
|
return NewHandler(func(params []string) {
|
||||||
next.Serve(params)
|
next.Serve(params)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -509,7 +495,7 @@ func BenchmarkMiddleware(b *testing.B) {
|
|||||||
|
|
||||||
b.Run("five_middleware", func(b *testing.B) {
|
b.Run("five_middleware", func(b *testing.B) {
|
||||||
r := New()
|
r := New()
|
||||||
for i := 0; i < 5; i++ {
|
for range 5 {
|
||||||
r.Use(passthrough)
|
r.Use(passthrough)
|
||||||
}
|
}
|
||||||
r.Get("/test", func(w Res, r Req, params []string) {})
|
r.Get("/test", func(w Res, r Req, params []string) {})
|
||||||
@ -551,7 +537,7 @@ func BenchmarkGroups(b *testing.B) {
|
|||||||
r := New()
|
r := New()
|
||||||
api := r.Group("/api")
|
api := r.Group("/api")
|
||||||
api.Use(func(next Handler) Handler {
|
api.Use(func(next Handler) Handler {
|
||||||
return newHandler(func(params []string) {
|
return NewHandler(func(params []string) {
|
||||||
next.Serve(params)
|
next.Serve(params)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user