c43322ecc0
- HTTPMiddlewareChain: compone N middlewares preservando el orden (el primero es el mas externo) - HTTPCORSMiddleware: genera Middleware con headers CORS configurables, maneja OPTIONS preflight con 204 Ambas son puras (sin I/O) y testeadas con httptest. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
18 lines
570 B
Go
18 lines
570 B
Go
package infra
|
|
|
|
import "net/http"
|
|
|
|
// HTTPMiddlewareChain compone N middlewares en uno solo aplicandolos de izquierda a derecha.
|
|
// El primer middleware de la lista es el mas externo (se ejecuta primero).
|
|
// Si no se pasan middlewares retorna un Middleware que no modifica el handler.
|
|
func HTTPMiddlewareChain(middlewares ...Middleware) Middleware {
|
|
return func(final http.Handler) http.Handler {
|
|
// Aplicar en orden inverso para que el primero quede mas externo
|
|
h := final
|
|
for i := len(middlewares) - 1; i >= 0; i-- {
|
|
h = middlewares[i](h)
|
|
}
|
|
return h
|
|
}
|
|
}
|