Fix handler visibility

This commit is contained in:
Sky Johnson 2025-04-26 16:56:05 -05:00
parent 0c5f1081ab
commit 9dbfbee993
2 changed files with 26 additions and 26 deletions

View File

@ -16,6 +16,20 @@ type Handler interface {
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.
type Middleware func(Handler) Handler

View File

@ -8,20 +8,6 @@ import (
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) {
r := New()
r.Get("/", func(w Res, r Req, params []string) {
@ -196,7 +182,7 @@ func TestMiddleware(t *testing.T) {
executed := false
r.Use(func(next Handler) Handler {
return newHandler(func(params []string) {
return NewHandler(func(params []string) {
executed = true
next.Serve(params)
})
@ -217,7 +203,7 @@ func TestMiddleware(t *testing.T) {
order := []int{}
r.Use(func(next Handler) Handler {
return newHandler(func(params []string) {
return NewHandler(func(params []string) {
order = append(order, 1)
next.Serve(params)
order = append(order, 4)
@ -225,7 +211,7 @@ func TestMiddleware(t *testing.T) {
})
r.Use(func(next Handler) Handler {
return newHandler(func(params []string) {
return NewHandler(func(params []string) {
order = append(order, 2)
next.Serve(params)
order = append(order, 3)
@ -255,7 +241,7 @@ func TestMiddleware(t *testing.T) {
executed := false
middleware := func(next Handler) Handler {
return newHandler(func(params []string) {
return NewHandler(func(params []string) {
executed = true
next.Serve(params)
})
@ -304,7 +290,7 @@ func TestGroup(t *testing.T) {
// Create group with middleware
api := r.Group("/api")
api.Use(func(next Handler) Handler {
return newHandler(func(params []string) {
return NewHandler(func(params []string) {
executed = true
next.Serve(params)
})
@ -325,7 +311,7 @@ func TestGroup(t *testing.T) {
// Create group with middleware
api := r.Group("/api")
api.Use(func(next Handler) Handler {
return newHandler(func(params []string) {
return NewHandler(func(params []string) {
order = append(order, 1)
next.Serve(params)
})
@ -334,7 +320,7 @@ func TestGroup(t *testing.T) {
// Create nested group with additional middleware
v1 := api.Group("/v1")
v1.Use(func(next Handler) Handler {
return newHandler(func(params []string) {
return NewHandler(func(params []string) {
order = append(order, 2)
next.Serve(params)
})
@ -362,7 +348,7 @@ func TestGroup(t *testing.T) {
// Create group with middleware
api := r.Group("/api")
api.Use(func(next Handler) Handler {
return newHandler(func(params []string) {
return NewHandler(func(params []string) {
order = append(order, 1)
next.Serve(params)
})
@ -370,7 +356,7 @@ func TestGroup(t *testing.T) {
// Add route with specific middleware
api.WithMiddleware(func(next Handler) Handler {
return newHandler(func(params []string) {
return NewHandler(func(params []string) {
order = append(order, 2)
next.Serve(params)
})
@ -479,7 +465,7 @@ func BenchmarkWildcardLookup(b *testing.B) {
func BenchmarkMiddleware(b *testing.B) {
passthrough := func(next Handler) Handler {
return newHandler(func(params []string) {
return NewHandler(func(params []string) {
next.Serve(params)
})
}
@ -509,7 +495,7 @@ func BenchmarkMiddleware(b *testing.B) {
b.Run("five_middleware", func(b *testing.B) {
r := New()
for i := 0; i < 5; i++ {
for range 5 {
r.Use(passthrough)
}
r.Get("/test", func(w Res, r Req, params []string) {})
@ -551,7 +537,7 @@ func BenchmarkGroups(b *testing.B) {
r := New()
api := r.Group("/api")
api.Use(func(next Handler) Handler {
return newHandler(func(params []string) {
return NewHandler(func(params []string) {
next.Serve(params)
})
})