Merge ae04cc6576d8a33d3a6d0bba2a21818ef9040af2 into f416d1e594a027063e73f66ac873a82113036fd8

This commit is contained in:
MiloudB 2025-11-30 19:15:55 +00:00 committed by GitHub
commit 91c712e4a9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 34 additions and 0 deletions

16
gin.go
View File

@ -322,6 +322,22 @@ func (engine *Engine) SetFuncMap(funcMap template.FuncMap) {
engine.FuncMap = funcMap
}
// GetHandlerPath takes a name of a handler and returns a slice of matched paths associated with that handler.
func (engine *Engine) GetHandlerPath(handlerName string) []string {
handlers := engine.Routes()
var paths []string
for _, f := range handlers {
handler := strings.Split(f.Handler, ".")
if handler[len(handler)-1] == handlerName {
paths = append(paths, f.Path)
}
}
return paths
}
// NoRoute adds handlers for NoRoute. It returns a 404 code by default.
func (engine *Engine) NoRoute(handlers ...HandlerFunc) {
engine.noRoute = handlers

View File

@ -897,6 +897,24 @@ func TestPrepareTrustedCIRDsWith(t *testing.T) {
}
}
func TestGetHandlerPath(t *testing.T) {
r := New()
r.GET("/foo", handlerTest1)
r.POST("/bar", handlerTest2)
v := r.Group("/users")
{
v.GET("/:id1", handlerTest1)
v.POST("/:id2", handlerTest2)
}
p1 := r.GetHandlerPath("handlerTest1")
assert.Equal(t, p1, []string{"/foo", "/users/:id1"})
p2 := r.GetHandlerPath("handlerTest2")
assert.Equal(t, p2, []string{"/bar", "/users/:id2"})
}
func parseCIDR(cidr string) *net.IPNet {
_, parsedCIDR, err := net.ParseCIDR(cidr)
if err != nil {