Files
bifrost/transports/bifrost-http/lib/middleware.go
Beyhan Oğur 880f412e2c first commit
2026-04-26 21:52:23 +03:00

24 lines
822 B
Go

package lib
import (
"github.com/maximhq/bifrost/core/schemas"
"github.com/valyala/fasthttp"
)
// ChainMiddlewares chains multiple middlewares together
// Middlewares are applied in order: the first middleware wraps the second, etc.
// This allows earlier middlewares to short-circuit by not calling next(ctx)
func ChainMiddlewares(handler fasthttp.RequestHandler, middlewares ...schemas.BifrostHTTPMiddleware) fasthttp.RequestHandler {
// If no middlewares, return the original handler
if len(middlewares) == 0 {
return handler
}
// Build the chain from right to left (last middleware wraps the handler)
// This ensures execution order is left to right (first middleware executes first)
chained := handler
for i := len(middlewares) - 1; i >= 0; i-- {
chained = middlewares[i](chained)
}
return chained
}