1
0
mirror of https://github.com/kataras/iris.git synced 2025-12-17 18:07:01 +00:00

new app.MiddlewareExists method

This commit is contained in:
Gerasimos (Makis) Maropoulos
2024-01-21 17:16:59 +02:00
parent 4eb7705fae
commit 66e3c26efe
8 changed files with 125 additions and 17 deletions

View File

@@ -38,6 +38,7 @@ var (
"iris.logger",
"iris.rate",
"iris.methodoverride",
"iris.errors.recover",
}
)
@@ -111,20 +112,6 @@ type Handler = func(*Context)
// See `Handler` for more.
type Handlers = []Handler
// CopyHandlers returns a copy of "handlers" Handlers slice.
func CopyHandlers(handlers []Handler) Handlers {
handlersCp := make([]Handler, 0, len(handlers))
for _, handler := range handlers {
if handler == nil {
continue
}
handlersCp = append(handlersCp, handler)
}
return handlersCp
}
func valueOf(v interface{}) reflect.Value {
if val, ok := v.(reflect.Value); ok {
return val
@@ -378,3 +365,50 @@ reg:
return h1
}
// CopyHandlers returns a copy of "handlers" Handlers slice.
func CopyHandlers(handlers Handlers) Handlers {
handlersCp := make(Handlers, 0, len(handlers))
for _, handler := range handlers {
if handler == nil {
continue
}
handlersCp = append(handlersCp, handler)
}
return handlersCp
}
// HandlerExists reports whether a handler exists in the "handlers" slice.
func HandlerExists(handlers Handlers, handlerNameOrFunc any) bool {
if handlerNameOrFunc == nil {
return false
}
var matchHandler func(any) bool
switch v := handlerNameOrFunc.(type) {
case string:
matchHandler = func(handler any) bool {
return HandlerName(handler) == v
}
case Handler:
handlerName := HandlerName(v)
matchHandler = func(handler any) bool {
return HandlerName(handler) == handlerName
}
default:
matchHandler = func(handler any) bool {
return reflect.TypeOf(handler) == reflect.TypeOf(v)
}
}
for _, handler := range handlers {
if matchHandler(handler) {
return true
}
}
return false
}